diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 4c2a488e6e1..e2c0b4f91e2 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -27,3 +27,4 @@
/src/botservice/ @swagatmishra2007
/src/storage-preview/ @williexu
+
diff --git a/scripts/ci/test_static.sh b/scripts/ci/test_static.sh
index 528544e6221..4f463fff6d6 100755
--- a/scripts/ci/test_static.sh
+++ b/scripts/ci/test_static.sh
@@ -9,12 +9,12 @@ PYLINT_EXCLUDES=$(echo "$AZURE_SDK_AUTOGEN_FILES" | sed -e s=\./src/=src/=g -e '
# Run pylint/flake8 on extensions
echo "Running pylint on extensions..."
-pylint ./src/rdbms/azext_rdbms/ --ignore=$PYLINT_EXCLUDES --ignore-patterns=test_* --rcfile=./pylintrc -j $proc_number
+pylint ./src/rdbms/azext_rdbms/ --ignore=$PYLINT_EXCLUDES,vendored_sdks --ignore-patterns=test_* --rcfile=./pylintrc -j $proc_number
echo "Pylint OK."
echo "Running flake8 on extensions..."
-flake8 --statistics --exclude=$FLAKE8_EXCLUDES --append-config=./.flake8 ./src/*/azext_*/
+flake8 --statistics --exclude=$FLAKE8_EXCLUDES,vendored_sdks --append-config=./.flake8 ./src/*/azext_*/
echo "Flake8 OK."
# Run pylint/flake8 on CI files
@@ -23,4 +23,4 @@ flake8 --append-config=./.flake8 ./scripts/ci/*.py
# Other static checks
python ./scripts/ci/verify_codeowners.py
-python ./scripts/ci/verify_license.py
+python ./scripts/ci/verify_license.py 'src/storage-preview/azext_storage_preview/vendored_sdks'
diff --git a/scripts/ci/verify_license.py b/scripts/ci/verify_license.py
index aa5f47b5c0d..65bbab7b130 100644
--- a/scripts/ci/verify_license.py
+++ b/scripts/ci/verify_license.py
@@ -7,6 +7,7 @@
import os
import sys
+import argparse
from util import get_repo_root
@@ -31,12 +32,14 @@
"""
-def main():
- env_path = os.path.join(REPO_ROOT, 'env')
+def main(args):
+ excluded_paths = args.excluded_paths
+ excluded_paths.append('env')
+ excluded_paths = tuple([os.path.join(REPO_ROOT, relative_path) for relative_path in excluded_paths])
files_without_header = []
for current_dir, _, files in os.walk(get_repo_root()):
- if current_dir.startswith(env_path):
+ if current_dir.startswith(excluded_paths):
continue
file_itr = (os.path.join(current_dir, p) for p in files if p.endswith('.py'))
for python_file in file_itr:
@@ -52,4 +55,6 @@ def main():
if __name__ == '__main__':
- main()
+ parser = argparse.ArgumentParser()
+ parser.add_argument('excluded_paths', nargs='*')
+ main(parser.parse_args())
diff --git a/src/index.json b/src/index.json
index a5dd3e86bd8..b4c788d6f06 100644
--- a/src/index.json
+++ b/src/index.json
@@ -824,6 +824,53 @@
"version": "0.0.1"
}
}
+ ],
+ "storage-preview": [
+ {
+ "filename": "storage_preview-0.1.0-py2.py3-none-any.whl",
+ "sha256Digest": "36768962d09c65b9668581f5bc01f1ad252acf832f22afdb04ed00c3333379cc",
+ "downloadUrl": "https://azurecliprod.blob.core.windows.net/cli-extensions/storage_preview-0.1.0-py2.py3-none-any.whl",
+ "metadata": {
+ "azext.isPreview": true,
+ "azext.minCliCoreVersion": "2.0.32.dev0",
+ "classifiers": [
+ "Development Status :: 4 - Beta",
+ "Intended Audience :: Developers",
+ "Intended Audience :: System Administrators",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 2",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: 3.6",
+ "License :: OSI Approved :: MIT License"
+ ],
+ "extensions": {
+ "python.details": {
+ "contacts": [
+ {
+ "email": "azpycli@microsoft.com",
+ "name": "Microsoft Corporation",
+ "role": "author"
+ }
+ ],
+ "document_names": {
+ "description": "DESCRIPTION.rst"
+ },
+ "project_urls": {
+ "Home": "https://github.com/Azure/azure-cli-extensions"
+ }
+ }
+ },
+ "generator": "bdist_wheel (0.29.0)",
+ "license": "MIT",
+ "metadata_version": "2.0",
+ "name": "storage-preview",
+ "summary": "Provides a preview for upcoming storage features.",
+ "version": "0.1.0"
+ }
+ }
]
}
}
\ No newline at end of file
diff --git a/src/storage-preview/azext_storage_preview/__init__.py b/src/storage-preview/azext_storage_preview/__init__.py
index 910777766b8..7ae28d3456b 100644
--- a/src/storage-preview/azext_storage_preview/__init__.py
+++ b/src/storage-preview/azext_storage_preview/__init__.py
@@ -4,19 +4,22 @@
# --------------------------------------------------------------------------------------------
from azure.cli.core import AzCommandsLoader
-from azure.cli.core.profiles import ResourceType
+from azure.cli.core.profiles import ResourceType, register_resource_type
from azure.cli.core.commands import AzCommandGroup, AzArgumentContext
import azext_storage_preview._help # pylint: disable=unused-import
+from .profiles import CUSTOM_DATA_STORAGE
class StorageCommandsLoader(AzCommandsLoader):
def __init__(self, cli_ctx=None):
from azure.cli.core.commands import CliCommandType
+ register_resource_type('latest', CUSTOM_DATA_STORAGE, '2017-11-09')
storage_custom = CliCommandType(operations_tmpl='azext_storage_preview.custom#{}')
+
super(StorageCommandsLoader, self).__init__(cli_ctx=cli_ctx,
- resource_type=ResourceType.DATA_STORAGE,
+ resource_type=CUSTOM_DATA_STORAGE,
custom_command_type=storage_custom,
command_group_cls=StorageCommandGroup,
argument_context_cls=StorageArgumentContext)
@@ -127,7 +130,7 @@ def register_common_storage_account_options(self):
class StorageCommandGroup(AzCommandGroup):
- def storage_command(self, name, method_name=None, command_type=None, **kwargs):
+ def storage_command(self, name, method_name=None, command_type=None, oauth=False, **kwargs):
""" Registers an Azure CLI Storage Data Plane command. These commands always include the four parameters which
can be used to obtain a storage client: account-name, account-key, connection-string, and sas-token. """
if command_type:
@@ -135,22 +138,58 @@ def storage_command(self, name, method_name=None, command_type=None, **kwargs):
else:
command_name = self.command(name, method_name, **kwargs)
self._register_data_plane_account_arguments(command_name)
+ if oauth:
+ self._register_data_plane_oauth_arguments(command_name)
+
+ def storage_command_oauth(self, *args, **kwargs):
+ _merge_new_exception_handler(kwargs, self.get_handler_suppress_403())
+ self.storage_command(*args, oauth=True, **kwargs)
- def storage_custom_command(self, name, method_name, **kwargs):
+ def storage_custom_command(self, name, method_name, oauth=False, **kwargs):
command_name = self.custom_command(name, method_name, **kwargs)
self._register_data_plane_account_arguments(command_name)
+ if oauth:
+ self._register_data_plane_oauth_arguments(command_name)
- def get_handler_suppress_404(self):
+ def storage_custom_command_oauth(self, *args, **kwargs):
+ _merge_new_exception_handler(kwargs, self.get_handler_suppress_403())
+ self.storage_custom_command(*args, oauth=True, **kwargs)
- # pylint: disable=inconsistent-return-statements
+ def get_handler_suppress_404(self):
def handler(ex):
from azure.cli.core.profiles import get_sdk
t_error = get_sdk(self.command_loader.cli_ctx,
- ResourceType.DATA_STORAGE,
+ CUSTOM_DATA_STORAGE,
'common._error#AzureMissingResourceHttpError')
if isinstance(ex, t_error):
- return None
+ return
+ raise ex
+
+ return handler
+
+ def get_handler_suppress_403(self):
+ def handler(ex):
+ from azure.cli.core.profiles import get_sdk
+ from knack.log import get_logger
+
+ logger = get_logger(__name__)
+ t_error = get_sdk(self.command_loader.cli_ctx,
+ CUSTOM_DATA_STORAGE,
+ 'common._error#AzureHttpError')
+ if isinstance(ex, t_error) and ex.status_code == 403:
+ message = """
+You do not have the required permissions needed to perform this operation.
+Depending on your operation, you may need to be assigned one of the following roles:
+ "Storage Blob Data Contributor (Preview)"
+ "Storage Blob Data Reader (Preview)"
+ "Storage Queue Data Contributor (Preview)"
+ "Storage Queue Data Reader (Preview)"
+
+If you want to use the old authentication method and allow querying for the right account key, please use the "--auth-mode" parameter and "key" value.
+ """
+ logger.error(message)
+ return
raise ex
return handler
@@ -183,5 +222,30 @@ def _register_data_plane_account_arguments(self, command_name):
help='A Shared Access Signature (SAS). Must be used in conjunction with storage account '
'name. Environment variable: AZURE_STORAGE_SAS_TOKEN')
+ def _register_data_plane_oauth_arguments(self, command_name):
+ from azure.cli.core.commands.parameters import get_enum_type
+
+ # workaround to allow use of AzArgumentContext.extra()
+ self.command_loader.command_name = command_name
+ with self.command_loader.argument_context(command_name) as c:
+ c.extra('auth_mode', arg_type=get_enum_type(['login', 'key']),
+ help='The mode in which to run the command. "login" mode will directly use your login credentials '
+ 'for the authentication. The legacy "key" mode will attempt to query for '
+ 'an account key if no authentication parameters for the account are provided. '
+ 'Environment variable: AZURE_STORAGE_AUTH_MODE')
+
+
+def _merge_new_exception_handler(kwargs, handler):
+ if kwargs.get('exception_handler'):
+ def new_handler(ex):
+ first = kwargs['exception_handler']
+ try:
+ first(ex)
+ except Exception as raised_ex: # pylint: disable=broad-except
+ handler(raised_ex)
+ kwargs['exception_handler'] = new_handler
+ else:
+ kwargs['exception_handler'] = handler
+
COMMAND_LOADER_CLS = StorageCommandsLoader
diff --git a/src/storage-preview/azext_storage_preview/_client_factory.py b/src/storage-preview/azext_storage_preview/_client_factory.py
index 87a4f1f274a..849babefca2 100644
--- a/src/storage-preview/azext_storage_preview/_client_factory.py
+++ b/src/storage-preview/azext_storage_preview/_client_factory.py
@@ -3,10 +3,13 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
-from azure.cli.core.commands.client_factory import get_mgmt_service_client, get_data_service_client
+from azure.cli.core.commands.client_factory import get_mgmt_service_client, _get_add_headers_callback
from azure.cli.core.profiles import ResourceType, get_sdk
+from knack.util import CLIError
+from knack.log import get_logger
from .sdkutil import get_table_data_type
+from .profiles import CUSTOM_DATA_STORAGE
NO_CREDENTIALS_ERROR_MESSAGE = """
No credentials specified to access storage service. Please provide any of the following:
@@ -18,26 +21,56 @@
option or AZURE_STORAGE_ACCOUNT environment variable)
"""
+logger = get_logger(__name__)
+
+
+# edited from azure.cli.core.commands.client_factory
+def get_data_service_client(cli_ctx, service_type, account_name, account_key, connection_string=None,
+ sas_token=None, socket_timeout=None, token_credential=None, endpoint_suffix=None):
+ logger.debug('Getting data service client service_type=%s', service_type.__name__)
+ try:
+ client_kwargs = {'account_name': account_name,
+ 'account_key': account_key,
+ 'connection_string': connection_string,
+ 'sas_token': sas_token}
+ if socket_timeout:
+ client_kwargs['socket_timeout'] = socket_timeout
+ if token_credential:
+ client_kwargs['token_credential'] = token_credential
+ if endpoint_suffix:
+ client_kwargs['endpoint_suffix'] = endpoint_suffix
+ client = service_type(**client_kwargs)
+ except ValueError as exc:
+ _ERROR_STORAGE_MISSING_INFO = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE,
+ 'common._error#_ERROR_STORAGE_MISSING_INFO')
+ if _ERROR_STORAGE_MISSING_INFO in str(exc):
+ raise ValueError(exc)
+ else:
+ raise CLIError('Unable to obtain data client. Check your connection parameters.')
+ # TODO: enable Fiddler
+ client.request_callback = _get_add_headers_callback(cli_ctx)
+ return client
+
def get_storage_data_service_client(cli_ctx, service, name=None, key=None, connection_string=None, sas_token=None,
- socket_timeout=None):
+ socket_timeout=None, token_credential=None):
return get_data_service_client(cli_ctx, service, name, key, connection_string, sas_token,
socket_timeout=socket_timeout,
+ token_credential=token_credential,
endpoint_suffix=cli_ctx.cloud.suffixes.storage_endpoint)
def generic_data_service_factory(cli_ctx, service, name=None, key=None, connection_string=None, sas_token=None,
- socket_timeout=None):
+ socket_timeout=None, token_credential=None):
try:
return get_storage_data_service_client(cli_ctx, service, name, key, connection_string, sas_token,
- socket_timeout)
+ socket_timeout, token_credential)
except ValueError as val_exception:
- _ERROR_STORAGE_MISSING_INFO = get_sdk(cli_ctx, ResourceType.DATA_STORAGE,
+ _ERROR_STORAGE_MISSING_INFO = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE,
'common._error#_ERROR_STORAGE_MISSING_INFO')
message = str(val_exception)
if message == _ERROR_STORAGE_MISSING_INFO:
message = NO_CREDENTIALS_ERROR_MESSAGE
- from knack.util import CLIError
raise CLIError(message)
@@ -46,7 +79,7 @@ def storage_client_factory(cli_ctx, **_):
def file_data_service_factory(cli_ctx, kwargs):
- t_file_svc = get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'file#FileService')
+ t_file_svc = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'file#FileService')
return generic_data_service_factory(cli_ctx, t_file_svc, kwargs.pop('account_name', None),
kwargs.pop('account_key', None),
connection_string=kwargs.pop('connection_string', None),
@@ -54,7 +87,7 @@ def file_data_service_factory(cli_ctx, kwargs):
def page_blob_service_factory(cli_ctx, kwargs):
- t_page_blob_service = get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'blob.pageblobservice#PageBlobService')
+ t_page_blob_service = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'blob.pageblobservice#PageBlobService')
return generic_data_service_factory(cli_ctx, t_page_blob_service, kwargs.pop('account_name', None),
kwargs.pop('account_key', None),
connection_string=kwargs.pop('connection_string', None),
@@ -70,7 +103,8 @@ def blob_data_service_factory(cli_ctx, kwargs):
kwargs.pop('account_key', None),
connection_string=kwargs.pop('connection_string', None),
sas_token=kwargs.pop('sas_token', None),
- socket_timeout=kwargs.pop('socket_timeout', None))
+ socket_timeout=kwargs.pop('socket_timeout', None),
+ token_credential=kwargs.pop('token_credential', None))
def table_data_service_factory(cli_ctx, kwargs):
@@ -83,17 +117,18 @@ def table_data_service_factory(cli_ctx, kwargs):
def queue_data_service_factory(cli_ctx, kwargs):
- t_queue_service = get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'queue#QueueService')
+ t_queue_service = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'queue#QueueService')
return generic_data_service_factory(
cli_ctx, t_queue_service,
kwargs.pop('account_name', None),
kwargs.pop('account_key', None),
connection_string=kwargs.pop('connection_string', None),
- sas_token=kwargs.pop('sas_token', None))
+ sas_token=kwargs.pop('sas_token', None),
+ token_credential=kwargs.pop('token_credential', None))
def cloud_storage_account_service_factory(cli_ctx, kwargs):
- t_cloud_storage_account = get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'common#CloudStorageAccount')
+ t_cloud_storage_account = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'common#CloudStorageAccount')
account_name = kwargs.pop('account_name', None)
account_key = kwargs.pop('account_key', None)
sas_token = kwargs.pop('sas_token', None)
@@ -105,7 +140,7 @@ def multi_service_properties_factory(cli_ctx, kwargs):
"""Create multiple data services properties instance based on the services option"""
from .services_wrapper import ServiceProperties
- t_base_blob_service, t_file_service, t_queue_service, = get_sdk(cli_ctx, ResourceType.DATA_STORAGE,
+ t_base_blob_service, t_file_service, t_queue_service, = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE,
'blob.baseblobservice#BaseBlobService',
'file#FileService', 'queue#QueueService')
diff --git a/src/storage-preview/azext_storage_preview/_format.py b/src/storage-preview/azext_storage_preview/_format.py
index 0a4cd8f40a9..908bb395e65 100644
--- a/src/storage-preview/azext_storage_preview/_format.py
+++ b/src/storage-preview/azext_storage_preview/_format.py
@@ -3,7 +3,8 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
-from azure.cli.core.profiles import get_sdk, ResourceType
+from azure.cli.core.profiles import get_sdk
+from .profiles import CUSTOM_DATA_STORAGE
def build_table_output(result, projection):
@@ -134,7 +135,7 @@ def transform_file_directory_result(cli_ctx):
list.
"""
def transformer(result):
- t_file, t_dir = get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'File', 'Directory', mod='file.models')
+ t_file, t_dir = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'File', 'Directory', mod='file.models')
return_list = []
for each in result:
if isinstance(each, t_file):
diff --git a/src/storage-preview/azext_storage_preview/_validators.py b/src/storage-preview/azext_storage_preview/_validators.py
index 650e8e050df..5fd4dd94ea3 100644
--- a/src/storage-preview/azext_storage_preview/_validators.py
+++ b/src/storage-preview/azext_storage_preview/_validators.py
@@ -4,7 +4,6 @@
# --------------------------------------------------------------------------------------------
# pylint: disable=protected-access
-
from azure.cli.core.commands.client_factory import get_mgmt_service_client
from azure.cli.core.commands.validators import validate_key_value_pairs
from azure.cli.core.profiles import ResourceType, get_sdk
@@ -13,6 +12,7 @@
from .util import glob_files_locally, guess_content_type
from .sdkutil import get_table_data_type
from .url_quote_util import encode_for_url
+from .oauth_token_util import TokenUpdater
storage_account_key_options = {'primary': 'key1', 'secondary': 'key2'}
@@ -43,6 +43,21 @@ def _query_account_key(cli_ctx, account_name):
raise ValueError("Storage account '{}' not found.".format(account_name))
+def _create_token_credential(cli_ctx):
+ from knack.cli import EVENT_CLI_POST_EXECUTE
+ from .profiles import CUSTOM_DATA_STORAGE
+
+ TokenCredential = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'common#TokenCredential')
+
+ token_credential = TokenCredential(None)
+ updater = TokenUpdater(token_credential, cli_ctx)
+
+ def _cancel_timer_event_handler(_, **__):
+ updater.cancel()
+ cli_ctx.register_event(EVENT_CLI_POST_EXECUTE, _cancel_timer_event_handler)
+ return token_credential
+
+
# region PARAMETER VALIDATORS
def validate_table_payload_format(cmd, namespace):
@@ -69,6 +84,27 @@ def validate_client_parameters(cmd, namespace):
def get_config_value(section, key, default):
return cmd.cli_ctx.config.get(section, key, default)
+ if hasattr(n, 'auth_mode'):
+ auth_mode = n.auth_mode or get_config_value('storage', 'auth_mode', None)
+ del n.auth_mode
+ if not n.account_name:
+ n.account_name = get_config_value('storage', 'account', None)
+ if auth_mode == 'login':
+ n.token_credential = _create_token_credential(cmd.cli_ctx)
+
+ # give warning if there are account key args being ignored
+ account_key_args = [n.account_key and "--account-key", n.sas_token and "--sas-token",
+ n.connection_string and "--connection-string"]
+ account_key_args = [arg for arg in account_key_args if arg]
+
+ if account_key_args:
+ from knack.log import get_logger
+
+ logger = get_logger(__name__)
+ logger.warning('In "login" auth mode, the following arguments are ignored: %s',
+ ' ,'.join(account_key_args))
+ return
+
if not n.connection_string:
n.connection_string = get_config_value('storage', 'connection_string', None)
diff --git a/src/storage-preview/azext_storage_preview/azext_metadata.json b/src/storage-preview/azext_storage_preview/azext_metadata.json
index 391858872b6..3a32f9f753f 100644
--- a/src/storage-preview/azext_storage_preview/azext_metadata.json
+++ b/src/storage-preview/azext_storage_preview/azext_metadata.json
@@ -1,4 +1,4 @@
{
- "azext.minCliCoreVersion": "2.0.32",
+ "azext.minCliCoreVersion": "2.0.32.dev0",
"azext.isPreview": true
}
\ No newline at end of file
diff --git a/src/storage-preview/azext_storage_preview/commands.py b/src/storage-preview/azext_storage_preview/commands.py
index 49442aba2e4..9dc997bd307 100644
--- a/src/storage-preview/azext_storage_preview/commands.py
+++ b/src/storage-preview/azext_storage_preview/commands.py
@@ -11,6 +11,7 @@
cloud_storage_account_service_factory,
multi_service_properties_factory)
from .sdkutil import cosmosdb_table_exists
+from .profiles import CUSTOM_DATA_STORAGE
def load_command_table(self, _): # pylint: disable=too-many-locals, too-many-statements
@@ -29,7 +30,7 @@ def load_command_table(self, _): # pylint: disable=too-many-locals, too-many-st
client_factory=cloud_storage_account_service_factory
)
- def get_custom_sdk(custom_module, client_factory, resource_type=ResourceType.DATA_STORAGE):
+ def get_custom_sdk(custom_module, client_factory, resource_type=CUSTOM_DATA_STORAGE):
"""Returns a CliCommandType instance with specified operation template based on the given custom module name.
This is useful when the command is not defined in the default 'custom' module but instead in a module under
'operations' package."""
@@ -78,12 +79,12 @@ def get_custom_sdk(custom_module, client_factory, resource_type=ResourceType.DAT
block_blob_sdk = CliCommandType(
operations_tmpl='azure.multiapi.storage.blob.blockblobservice#BlockBlobService.{}',
client_factory=blob_data_service_factory,
- resource_type=ResourceType.DATA_STORAGE)
+ resource_type=CUSTOM_DATA_STORAGE)
base_blob_sdk = CliCommandType(
operations_tmpl='azure.multiapi.storage.blob.baseblobservice#BaseBlobService.{}',
client_factory=blob_data_service_factory,
- resource_type=ResourceType.DATA_STORAGE)
+ resource_type=CUSTOM_DATA_STORAGE)
with self.command_group('storage blob', command_type=block_blob_sdk,
custom_command_type=get_custom_sdk('blob', blob_data_service_factory)) as g:
@@ -91,65 +92,66 @@ def get_custom_sdk(custom_module, client_factory, resource_type=ResourceType.DAT
from ._transformers import (transform_storage_list_output, transform_url,
create_boolean_result_output_transformer)
- g.storage_command('list', 'list_blobs', transform=transform_storage_list_output,
- table_transformer=transform_blob_output)
- g.storage_command('download', 'get_blob_to_path')
- g.storage_command('generate-sas', 'generate_blob_shared_access_signature')
- g.storage_command('url', 'make_blob_url', transform=transform_url)
- g.storage_command('snapshot', 'snapshot_blob')
- g.storage_command('show', 'get_blob_properties', table_transformer=transform_blob_output,
- exception_handler=g.get_handler_suppress_404())
- g.storage_command('update', 'set_blob_properties')
- g.storage_command('exists', 'exists', transform=create_boolean_result_output_transformer('exists'))
- g.storage_command('delete', 'delete_blob', transform=create_boolean_result_output_transformer('deleted'),
- table_transformer=transform_boolean_for_table)
- g.storage_command('undelete', 'undelete_blob', transform=create_boolean_result_output_transformer('undeleted'),
- table_transformer=transform_boolean_for_table, min_api='2017-07-29')
-
- g.storage_custom_command('set-tier', 'set_blob_tier')
- g.storage_custom_command('upload', 'upload_blob',
- doc_string_source='blob#BlockBlobService.create_blob_from_path')
- g.storage_custom_command('upload-batch', 'storage_blob_upload_batch')
- g.storage_custom_command('download-batch', 'storage_blob_download_batch')
- g.storage_custom_command('delete-batch', 'storage_blob_delete_batch')
-
- g.storage_command('metadata show', 'get_blob_metadata', exception_handler=g.get_handler_suppress_404())
- g.storage_command('metadata update', 'set_blob_metadata')
-
- g.storage_command('lease acquire', 'acquire_blob_lease')
- g.storage_command('lease renew', 'renew_blob_lease')
- g.storage_command('lease release', 'release_blob_lease')
- g.storage_command('lease change', 'change_blob_lease')
- g.storage_command('lease break', 'break_blob_lease')
-
- g.storage_command('copy start', 'copy_blob')
- g.storage_command('copy cancel', 'abort_copy_blob')
- g.storage_custom_command('copy start-batch', 'storage_blob_copy_batch')
+ g.storage_command_oauth('list', 'list_blobs', transform=transform_storage_list_output,
+ table_transformer=transform_blob_output)
+ g.storage_command_oauth('download', 'get_blob_to_path')
+ g.storage_command_oauth('generate-sas', 'generate_blob_shared_access_signature')
+ g.storage_command_oauth('url', 'make_blob_url', transform=transform_url)
+ g.storage_command_oauth('snapshot', 'snapshot_blob')
+ g.storage_command_oauth('show', 'get_blob_properties', table_transformer=transform_blob_output,
+ exception_handler=g.get_handler_suppress_404())
+ g.storage_command_oauth('update', 'set_blob_properties')
+ g.storage_command_oauth('exists', 'exists', transform=create_boolean_result_output_transformer('exists'))
+ g.storage_command_oauth('delete', 'delete_blob', transform=create_boolean_result_output_transformer('deleted'),
+ table_transformer=transform_boolean_for_table)
+ g.storage_command_oauth('undelete', 'undelete_blob',
+ transform=create_boolean_result_output_transformer('undeleted'),
+ table_transformer=transform_boolean_for_table, min_api='2017-07-29')
+
+ g.storage_custom_command_oauth('set-tier', 'set_blob_tier')
+ g.storage_custom_command_oauth('upload', 'upload_blob',
+ doc_string_source='blob#BlockBlobService.create_blob_from_path')
+ g.storage_custom_command_oauth('upload-batch', 'storage_blob_upload_batch')
+ g.storage_custom_command_oauth('download-batch', 'storage_blob_download_batch')
+ g.storage_custom_command_oauth('delete-batch', 'storage_blob_delete_batch')
+
+ g.storage_command_oauth('metadata show', 'get_blob_metadata', exception_handler=g.get_handler_suppress_404())
+ g.storage_command_oauth('metadata update', 'set_blob_metadata')
+
+ g.storage_command_oauth('lease acquire', 'acquire_blob_lease')
+ g.storage_command_oauth('lease renew', 'renew_blob_lease')
+ g.storage_command_oauth('lease release', 'release_blob_lease')
+ g.storage_command_oauth('lease change', 'change_blob_lease')
+ g.storage_command_oauth('lease break', 'break_blob_lease')
+
+ g.storage_command_oauth('copy start', 'copy_blob')
+ g.storage_command_oauth('copy cancel', 'abort_copy_blob')
+ g.storage_custom_command_oauth('copy start-batch', 'storage_blob_copy_batch')
with self.command_group('storage blob incremental-copy',
operations_tmpl='azure.multiapi.storage.blob.pageblobservice#PageBlobService.{}',
client_factory=page_blob_service_factory,
- resource_type=ResourceType.DATA_STORAGE,
+ resource_type=CUSTOM_DATA_STORAGE,
min_api='2016-05-31') as g:
- g.storage_command('start', 'incremental_copy_blob')
+ g.storage_command_oauth('start', 'incremental_copy_blob')
with self.command_group('storage blob incremental-copy',
operations_tmpl='azure.multiapi.storage.blob.blockblobservice#BlockBlobService.{}',
client_factory=page_blob_service_factory,
- resource_type=ResourceType.DATA_STORAGE,
+ resource_type=CUSTOM_DATA_STORAGE,
min_api='2016-05-31') as g:
- g.storage_command('cancel', 'abort_copy_blob')
+ g.storage_command_oauth('cancel', 'abort_copy_blob')
with self.command_group('storage blob service-properties delete-policy', command_type=base_blob_sdk,
min_api='2017-07-29',
custom_command_type=get_custom_sdk('blob', blob_data_service_factory)) as g:
- g.storage_command('show', 'get_blob_service_properties',
- transform=lambda x: getattr(x, 'delete_retention_policy', x),
- exception_handler=g.get_handler_suppress_404())
- g.storage_custom_command('update', 'set_delete_policy')
+ g.storage_command_oauth('show', 'get_blob_service_properties',
+ transform=lambda x: getattr(x, 'delete_retention_policy', x),
+ exception_handler=g.get_handler_suppress_404())
+ g.storage_custom_command_oauth('update', 'set_delete_policy')
with self.command_group('storage blob service-properties', command_type=base_blob_sdk) as g:
- g.storage_command('show', 'get_blob_service_properties', exception_handler=g.get_handler_suppress_404())
+ g.storage_command_oauth('show', 'get_blob_service_properties', exception_handler=g.get_handler_suppress_404())
with self.command_group('storage container', command_type=block_blob_sdk,
custom_command_type=get_custom_sdk('acl', blob_data_service_factory)) as g:
@@ -157,38 +159,41 @@ def get_custom_sdk(custom_module, client_factory, resource_type=ResourceType.DAT
transform_acl_list_output)
from ._format import (transform_container_list, transform_boolean_for_table, transform_container_show)
- g.storage_command('list', 'list_containers', transform=transform_storage_list_output,
- table_transformer=transform_container_list)
- g.storage_command('delete', 'delete_container', transform=create_boolean_result_output_transformer('deleted'),
- table_transformer=transform_boolean_for_table)
- g.storage_command('show', 'get_container_properties', table_transformer=transform_container_show,
- exception_handler=g.get_handler_suppress_404())
- g.storage_command('create', 'create_container', transform=create_boolean_result_output_transformer('created'),
- table_transformer=transform_boolean_for_table)
- g.storage_command('generate-sas', 'generate_container_shared_access_signature')
- g.storage_command('exists', 'exists', transform=create_boolean_result_output_transformer('exists'),
- table_transformer=transform_boolean_for_table)
- g.storage_command('set-permission', 'set_container_acl')
- g.storage_command('show-permission', 'get_container_acl', transform=transform_container_permission_output)
- g.storage_command('metadata update', 'set_container_metadata')
- g.storage_command('metadata show', 'get_container_metadata', exception_handler=g.get_handler_suppress_404())
-
- g.storage_command('lease acquire', 'acquire_container_lease')
- g.storage_command('lease renew', 'renew_container_lease')
- g.storage_command('lease release', 'release_container_lease')
- g.storage_command('lease change', 'change_container_lease')
- g.storage_command('lease break', 'break_container_lease')
-
- g.storage_custom_command('policy create', 'create_acl_policy')
- g.storage_custom_command('policy delete', 'delete_acl_policy')
- g.storage_custom_command('policy update', 'set_acl_policy', min_api='2017-04-17')
- g.storage_custom_command('policy show', 'get_acl_policy', exception_handler=g.get_handler_suppress_404())
- g.storage_custom_command('policy list', 'list_acl_policies', table_transformer=transform_acl_list_output)
+ g.storage_command_oauth('list', 'list_containers', transform=transform_storage_list_output,
+ table_transformer=transform_container_list)
+ g.storage_command_oauth('delete', 'delete_container',
+ transform=create_boolean_result_output_transformer('deleted'),
+ table_transformer=transform_boolean_for_table)
+ g.storage_command_oauth('show', 'get_container_properties', table_transformer=transform_container_show,
+ exception_handler=g.get_handler_suppress_404())
+ g.storage_command_oauth('create', 'create_container',
+ transform=create_boolean_result_output_transformer('created'),
+ table_transformer=transform_boolean_for_table)
+ g.storage_command_oauth('generate-sas', 'generate_container_shared_access_signature')
+ g.storage_command_oauth('exists', 'exists', transform=create_boolean_result_output_transformer('exists'),
+ table_transformer=transform_boolean_for_table)
+ g.storage_command_oauth('set-permission', 'set_container_acl')
+ g.storage_command_oauth('show-permission', 'get_container_acl', transform=transform_container_permission_output)
+ g.storage_command_oauth('metadata update', 'set_container_metadata')
+ g.storage_command_oauth('metadata show', 'get_container_metadata',
+ exception_handler=g.get_handler_suppress_404())
+
+ g.storage_command_oauth('lease acquire', 'acquire_container_lease')
+ g.storage_command_oauth('lease renew', 'renew_container_lease')
+ g.storage_command_oauth('lease release', 'release_container_lease')
+ g.storage_command_oauth('lease change', 'change_container_lease')
+ g.storage_command_oauth('lease break', 'break_container_lease')
+
+ g.storage_custom_command_oauth('policy create', 'create_acl_policy')
+ g.storage_custom_command_oauth('policy delete', 'delete_acl_policy')
+ g.storage_custom_command_oauth('policy update', 'set_acl_policy', min_api='2017-04-17')
+ g.storage_custom_command_oauth('policy show', 'get_acl_policy', exception_handler=g.get_handler_suppress_404())
+ g.storage_custom_command_oauth('policy list', 'list_acl_policies', table_transformer=transform_acl_list_output)
file_sdk = CliCommandType(
operations_tmpl='azure.multiapi.storage.file.fileservice#FileService.{}',
client_factory=file_data_service_factory,
- resource_type=ResourceType.DATA_STORAGE)
+ resource_type=CUSTOM_DATA_STORAGE)
with self.command_group('storage share', command_type=file_sdk,
custom_command_type=get_custom_sdk('acl', file_data_service_factory)) as g:
@@ -269,42 +274,43 @@ def get_custom_sdk(custom_module, client_factory, resource_type=ResourceType.DAT
queue_sdk = CliCommandType(operations_tmpl='azure.multiapi.storage.queue.queueservice#QueueService.{}',
client_factory=queue_data_service_factory,
- resource_type=ResourceType.DATA_STORAGE)
+ resource_type=CUSTOM_DATA_STORAGE)
with self.command_group('storage queue', queue_sdk,
custom_command_type=get_custom_sdk('acl', queue_data_service_factory)) as g:
from ._format import transform_boolean_for_table
from ._transformers import create_boolean_result_output_transformer
- g.storage_command('list', 'list_queues', transform=transform_storage_list_output)
- g.storage_command('create', 'create_queue', transform=create_boolean_result_output_transformer('created'),
- table_transformer=transform_boolean_for_table)
- g.storage_command('delete', 'delete_queue', transform=create_boolean_result_output_transformer('deleted'),
- table_transformer=transform_boolean_for_table)
- g.storage_command('generate-sas', 'generate_queue_shared_access_signature')
- g.storage_command('stats', 'get_queue_service_stats', min_api='2016-05-31')
- g.storage_command('exists', 'exists', transform=create_boolean_result_output_transformer('exists'))
+ g.storage_command_oauth('list', 'list_queues', transform=transform_storage_list_output)
+ g.storage_command_oauth('create', 'create_queue', transform=create_boolean_result_output_transformer('created'),
+ table_transformer=transform_boolean_for_table)
+ g.storage_command_oauth('delete', 'delete_queue', transform=create_boolean_result_output_transformer('deleted'),
+ table_transformer=transform_boolean_for_table)
+ g.storage_command_oauth('generate-sas', 'generate_queue_shared_access_signature')
+ g.storage_command_oauth('stats', 'get_queue_service_stats', min_api='2016-05-31')
+ g.storage_command_oauth('exists', 'exists', transform=create_boolean_result_output_transformer('exists'))
- g.storage_command('metadata show', 'get_queue_metadata', exception_handler=g.get_handler_suppress_404())
- g.storage_command('metadata update', 'set_queue_metadata')
+ g.storage_command_oauth('metadata show', 'get_queue_metadata', exception_handler=g.get_handler_suppress_404())
+ g.storage_command_oauth('metadata update', 'set_queue_metadata')
- g.storage_custom_command('policy create', 'create_acl_policy')
- g.storage_custom_command('policy delete', 'delete_acl_policy')
- g.storage_custom_command('policy show', 'get_acl_policy', exception_handler=g.get_handler_suppress_404())
- g.storage_custom_command('policy list', 'list_acl_policies', table_transformer=transform_acl_list_output)
- g.storage_custom_command('policy update', 'set_acl_policy')
+ g.storage_custom_command_oauth('policy create', 'create_acl_policy')
+ g.storage_custom_command_oauth('policy delete', 'delete_acl_policy')
+ g.storage_custom_command_oauth('policy show', 'get_acl_policy', exception_handler=g.get_handler_suppress_404())
+ g.storage_custom_command_oauth('policy list', 'list_acl_policies', table_transformer=transform_acl_list_output)
+ g.storage_custom_command_oauth('policy update', 'set_acl_policy')
with self.command_group('storage message', queue_sdk) as g:
from ._transformers import create_boolean_result_output_transformer
from ._format import transform_message_show
- g.storage_command('put', 'put_message')
- g.storage_command('get', 'get_messages', table_transformer=transform_message_show)
- g.storage_command('peek', 'peek_messages', table_transformer=transform_message_show)
- g.storage_command('delete', 'delete_message', transform=create_boolean_result_output_transformer('deleted'),
- table_transformer=transform_boolean_for_table)
- g.storage_command('clear', 'clear_messages')
- g.storage_command('update', 'update_message')
+ g.storage_command_oauth('put', 'put_message')
+ g.storage_command_oauth('get', 'get_messages', table_transformer=transform_message_show)
+ g.storage_command_oauth('peek', 'peek_messages', table_transformer=transform_message_show)
+ g.storage_command_oauth('delete', 'delete_message',
+ transform=create_boolean_result_output_transformer('deleted'),
+ table_transformer=transform_boolean_for_table)
+ g.storage_command_oauth('clear', 'clear_messages')
+ g.storage_command_oauth('update', 'update_message')
if cosmosdb_table_exists(self.cli_ctx):
table_sdk = CliCommandType(operations_tmpl='azure.multiapi.cosmosdb.table.tableservice#TableService.{}',
diff --git a/src/storage-preview/azext_storage_preview/oauth_token_util.py b/src/storage-preview/azext_storage_preview/oauth_token_util.py
new file mode 100644
index 00000000000..043678a85d9
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/oauth_token_util.py
@@ -0,0 +1,44 @@
+# --------------------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# --------------------------------------------------------------------------------------------
+
+import threading
+
+
+class TokenUpdater:
+ """
+ This class updates a given token_credential periodically using the provided callback function.
+ It shows one way of making sure the credential does not become expired.
+ """
+ def __init__(self, token_credential, cli_ctx):
+ self.token_credential = token_credential
+ self.cli_ctx = cli_ctx
+
+ # the timer needs to be protected, as later on it is possible that one thread is setting a new timer and
+ # another thread is trying to cancel the timer
+ self.lock = threading.Lock()
+ self.timer_callback()
+
+ def timer_callback(self):
+ # call the get a new token and set a timer
+ from azure.cli.core._profile import Profile
+ from datetime import datetime
+ # should give back token that is valid for at least 5 mins
+ token = Profile(cli_ctx=self.cli_ctx).get_raw_token(resource="https://storage.azure.com")[0][2]
+ self.token_credential.update_token(token['accessToken'])
+ seconds_left = (datetime.strptime(token['expiresOn'], "%Y-%m-%d %H:%M:%S.%f") - datetime.now()).seconds
+ if seconds_left < 240:
+ # acquired token expires in less than 4 mins
+ raise Exception("Acquired a token expiring in less than 4 minutes")
+
+ with self.lock:
+ self.timer = threading.Timer(seconds_left - 240, self.timer_callback)
+ self.timer.daemon = True
+ self.timer.start()
+
+ def cancel(self):
+ # the timer needs to be canceled once the command has finished executing
+ # if not the timer will keep going
+ with self.lock:
+ self.timer.cancel()
diff --git a/src/storage-preview/azext_storage_preview/profiles.py b/src/storage-preview/azext_storage_preview/profiles.py
new file mode 100644
index 00000000000..05cdc4c3244
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/profiles.py
@@ -0,0 +1,9 @@
+# --------------------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# --------------------------------------------------------------------------------------------
+
+from azure.cli.core.profiles import CustomResourceType
+
+
+CUSTOM_DATA_STORAGE = CustomResourceType('azext_storage_preview.vendored_sdks.azure_storage', None)
diff --git a/src/storage-preview/azext_storage_preview/sdkutil.py b/src/storage-preview/azext_storage_preview/sdkutil.py
index 32db691a955..d52c4886666 100644
--- a/src/storage-preview/azext_storage_preview/sdkutil.py
+++ b/src/storage-preview/azext_storage_preview/sdkutil.py
@@ -7,6 +7,7 @@
from azure.cli.core.profiles import get_sdk, supported_api_version, ResourceType
from azure.cli.core.profiles._shared import APIVersionException
+from .profiles import CUSTOM_DATA_STORAGE
def cosmosdb_table_exists(cli_ctx):
@@ -20,14 +21,14 @@ def get_table_data_type(cli_ctx, module_name, *type_names):
if cosmosdb_table_exists(cli_ctx):
return get_sdk(cli_ctx, ResourceType.DATA_COSMOS_TABLE, *type_names, mod=module_name)
- return get_sdk(cli_ctx, ResourceType.DATA_STORAGE, *type_names, mod=module_name)
+ return get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, *type_names, mod=module_name)
def get_blob_service_by_type(cli_ctx, blob_type):
type_to_service = {
- 'block': lambda ctx: get_sdk(ctx, ResourceType.DATA_STORAGE, 'BlockBlobService', mod='blob'),
- 'page': lambda ctx: get_sdk(ctx, ResourceType.DATA_STORAGE, 'PageBlobService', mod='blob'),
- 'append': lambda ctx: get_sdk(ctx, ResourceType.DATA_STORAGE, 'AppendBlobService', mod='blob')
+ 'block': lambda ctx: get_sdk(ctx, CUSTOM_DATA_STORAGE, 'BlockBlobService', mod='blob'),
+ 'page': lambda ctx: get_sdk(ctx, CUSTOM_DATA_STORAGE, 'PageBlobService', mod='blob'),
+ 'append': lambda ctx: get_sdk(ctx, CUSTOM_DATA_STORAGE, 'AppendBlobService', mod='blob')
}
try:
@@ -41,7 +42,7 @@ def get_blob_types():
def get_blob_tier_names(cli_ctx, model):
- t_blob_tier_model = get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'blob.models#' + model)
+ t_blob_tier_model = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'blob.models#' + model)
return [v for v in dir(t_blob_tier_model) if not v.startswith('_')]
@@ -50,7 +51,7 @@ def get_delete_blob_snapshot_type_names():
def get_delete_blob_snapshot_type(cli_ctx, name):
- t_delete_snapshot = get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'DeleteSnapshot', mod='blob')
+ t_delete_snapshot = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'DeleteSnapshot', mod='blob')
return {'include': t_delete_snapshot.Include, 'only': t_delete_snapshot.Only}[name]
@@ -59,7 +60,7 @@ def get_delete_file_snapshot_type_names():
def get_delete_file_snapshot_type(cli_ctx, name):
- t_delete_snapshot = get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'DeleteSnapshot', mod='file.models')
+ t_delete_snapshot = get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'DeleteSnapshot', mod='file.models')
return {'include': t_delete_snapshot.Include}[name]
@@ -71,8 +72,8 @@ def get_container_access_type(cli_ctx, name):
if name == 'off':
return None
elif name == 'blob':
- return get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'PublicAccess', mod='blob.models').Blob
+ return get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'PublicAccess', mod='blob.models').Blob
elif name == 'container':
- return get_sdk(cli_ctx, ResourceType.DATA_STORAGE, 'PublicAccess', mod='blob.models').Container
+ return get_sdk(cli_ctx, CUSTOM_DATA_STORAGE, 'PublicAccess', mod='blob.models').Container
else:
raise KeyError
diff --git a/src/storage-preview/azext_storage_preview/services_wrapper.py b/src/storage-preview/azext_storage_preview/services_wrapper.py
index dffd0d43ddc..ef9cde6dfa7 100644
--- a/src/storage-preview/azext_storage_preview/services_wrapper.py
+++ b/src/storage-preview/azext_storage_preview/services_wrapper.py
@@ -3,9 +3,10 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
-from azure.cli.core.profiles import get_sdk, ResourceType
+from azure.cli.core.profiles import get_sdk
from ._client_factory import generic_data_service_factory
+from .profiles import CUSTOM_DATA_STORAGE
class ServiceProperties(object):
@@ -29,7 +30,7 @@ def get_logging(self, timeout=None):
return self.get_service_properties()(timeout=timeout).__dict__['logging']
def set_logging(self, read, write, delete, retention, timeout=None):
- t_logging, t_retention_policy = get_sdk(self.cli_ctx, ResourceType.DATA_STORAGE, 'Logging', 'RetentionPolicy',
+ t_logging, t_retention_policy = get_sdk(self.cli_ctx, CUSTOM_DATA_STORAGE, 'Logging', 'RetentionPolicy',
mod='common.models')
retention_policy = t_retention_policy(enabled=retention != 0, days=retention)
@@ -42,7 +43,7 @@ def get_cors(self, timeout=None):
def add_cors(self, origins, methods, max_age, exposed_headers=None, allowed_headers=None, timeout=None):
from azure.common import AzureHttpError
- t_cors_rule = get_sdk(self.cli_ctx, ResourceType.DATA_STORAGE, 'CorsRule', mod='common.models')
+ t_cors_rule = get_sdk(self.cli_ctx, CUSTOM_DATA_STORAGE, 'CorsRule', mod='common.models')
cors = self.get_cors(timeout)
new_rule = t_cors_rule(origins, methods, max_age, exposed_headers, allowed_headers)
cors.append(new_rule)
@@ -71,7 +72,7 @@ def get_metrics(self, interval, timeout=None):
return metrics
def set_metrics(self, retention, hour, minute, api=None, timeout=None):
- t_metrics, t_retention_policy = get_sdk(self.cli_ctx, ResourceType.DATA_STORAGE, 'Metrics', 'RetentionPolicy',
+ t_metrics, t_retention_policy = get_sdk(self.cli_ctx, CUSTOM_DATA_STORAGE, 'Metrics', 'RetentionPolicy',
mod='common.models')
retention_policy = t_retention_policy(enabled=retention != 0, days=retention)
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_account_sas.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_account_sas.yaml
index 0d08da30c30..48ee9409608 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_account_sas.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_account_sas.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:22Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:22Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 21:34:20 GMT']
+ date: ['Tue, 01 May 2018 21:45:24 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,13 +49,14 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 21:34:22 GMT']
+ date: ['Tue, 01 May 2018 21:45:25 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/8a086227-3618-4a74-a755-38b3688eb994?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/24581443-fca0-428e-a1d4-90be654a41cc?monitor=true&api-version=2017-10-01']
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-content-type-options: [nosniff]
x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
- request:
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/8a086227-3618-4a74-a755-38b3688eb994?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/24581443-fca0-428e-a1d4-90be654a41cc?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:34:22.0842668Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:34:22.0842668Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:34:22.0374010Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:25.8713651Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:25.8713651Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:25.6526131Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 21:34:39 GMT']
+ date: ['Tue, 01 May 2018 21:45:43 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -94,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"J5jUEDgfRpsBRD+1YMqix8HkQTeQYw3cNMCovEFGuVu5wjlKg18YgmyE7tgz+6xWbi7CHfu8xeaukkBWNKLEDg==","permissions":"FULL"},{"keyName":"key2","value":"KmnoycxJZ2GyAcmyDuqCtNX4L6fvt/ZibesD3WBz+rOmAXkPJ4HqQJ+d8K485TFTHSKCoJ/vAWRO3xJTzcuoFQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"94uEIpJdQoFGvUpLq172W0WoJBW3KeymBQWjNIBcr123RxLVfRRVSCUUonj7bzAKTUI/gxPz4pB63bh6nuFp2w==","permissions":"FULL"},{"keyName":"key2","value":"K2uoQjVDL7nTil9ce1C8lxWta/FPE/5gqD/CL40AkFzidAFKmgam6IwToKaMYrXfEVywTfRKAwUflstPQEjwyQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 21:34:41 GMT']
+ date: ['Tue, 01 May 2018 21:45:44 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -112,6 +116,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
@@ -123,24 +128,26 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/storageAccounts?api-version=2017-10-01
response:
- body: {string: '{"value":[{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest6075/providers/Microsoft.Storage/storageAccounts/stgbnc8939","name":"stgbnc8939","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:07:05.6471355Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:07:05.6471355Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:07:05.6158803Z","primaryEndpoints":{"blob":"https://stgbnc8939.blob.core.windows.net/","queue":"https://stgbnc8939.queue.core.windows.net/","table":"https://stgbnc8939.table.core.windows.net/","file":"https://stgbnc8939.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest1501/providers/Microsoft.Storage/storageAccounts/stgjavavme823820652e","name":"stgjavavme823820652e","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:41:10.5736026Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:41:10.5736026Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:41:10.5579773Z","primaryEndpoints":{"blob":"https://stgjavavme823820652e.blob.core.windows.net/","queue":"https://stgjavavme823820652e.queue.core.windows.net/","table":"https://stgjavavme823820652e.table.core.windows.net/","file":"https://stgjavavme823820652e.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest9977/providers/Microsoft.Storage/storageAccounts/stgjavavm333507506ea","name":"stgjavavm333507506ea","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:32:47.9591527Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:32:47.9591527Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:32:47.8341521Z","primaryEndpoints":{"blob":"https://stgjavavm333507506ea.blob.core.windows.net/","queue":"https://stgjavavm333507506ea.queue.core.windows.net/","table":"https://stgjavavm333507506ea.table.core.windows.net/","file":"https://stgjavavm333507506ea.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3602/providers/Microsoft.Storage/storageAccounts/stg8927","name":"stg8927","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:37:55.0112849Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:37:55.0112849Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:37:54.9800708Z","primaryEndpoints":{"blob":"https://stg8927.blob.core.windows.net/","queue":"https://stg8927.queue.core.windows.net/","table":"https://stg8927.table.core.windows.net/","file":"https://stg8927.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest6075/providers/Microsoft.Storage/storageAccounts/stgjavavm52d424261a2","name":"stgjavavm52d424261a2","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:07:42.0875788Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:07:42.0875788Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:07:42.0563640Z","primaryEndpoints":{"blob":"https://stgjavavm52d424261a2.blob.core.windows.net/","queue":"https://stgjavavm52d424261a2.queue.core.windows.net/","table":"https://stgjavavm52d424261a2.table.core.windows.net/","file":"https://stgjavavm52d424261a2.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilx-group/providers/Microsoft.Storage/storageAccounts/awilxdevlab9274","name":"awilxdevlab9274","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{"hidden-DevTestLabs-LabUId":"3f487f2b-f13a-422f-a05c-761b17b0200d"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9463952Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9463952Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-07T22:43:14.9920432Z","primaryEndpoints":{"blob":"https://awilxdevlab9274.blob.core.windows.net/","queue":"https://awilxdevlab9274.queue.core.windows.net/","table":"https://awilxdevlab9274.table.core.windows.net/","file":"https://awilxdevlab9274.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest2038/providers/Microsoft.Storage/storageAccounts/stgjavavmac8610156cf","name":"stgjavavmac8610156cf","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:00:07.6351597Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:00:07.6351597Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:00:07.6039345Z","primaryEndpoints":{"blob":"https://stgjavavmac8610156cf.blob.core.windows.net/","queue":"https://stgjavavmac8610156cf.queue.core.windows.net/","table":"https://stgjavavmac8610156cf.table.core.windows.net/","file":"https://stgjavavmac8610156cf.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest5772/providers/Microsoft.Storage/storageAccounts/stgjavavm42113837dbb","name":"stgjavavm42113837dbb","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T12:48:36.1026547Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T12:48:36.1026547Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T12:48:36.0714523Z","primaryEndpoints":{"blob":"https://stgjavavm42113837dbb.blob.core.windows.net/","queue":"https://stgjavavm42113837dbb.queue.core.windows.net/","table":"https://stgjavavm42113837dbb.table.core.windows.net/","file":"https://stgjavavm42113837dbb.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg8678/providers/Microsoft.Storage/storageAccounts/stg7343","name":"stg7343","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.0401485Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.0401485Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-10-22T20:47:23.8366703Z","primaryEndpoints":{"blob":"https://stg7343.blob.core.windows.net/","queue":"https://stg7343.queue.core.windows.net/","table":"https://stg7343.table.core.windows.net/","file":"https://stg7343.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg7434/providers/Microsoft.Storage/storageAccounts/stg8548","name":"stg8548","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:39:56.6875433Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:39:56.6875433Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:39:56.6562752Z","primaryEndpoints":{"blob":"https://stg8548.blob.core.windows.net/","queue":"https://stg8548.queue.core.windows.net/","table":"https://stg8548.table.core.windows.net/","file":"https://stg8548.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest7312/providers/Microsoft.Storage/storageAccounts/stgjavavm43d95373650","name":"stgjavavm43d95373650","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:26:15.2306952Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:26:15.2306952Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:26:15.2150846Z","primaryEndpoints":{"blob":"https://stgjavavm43d95373650.blob.core.windows.net/","queue":"https://stgjavavm43d95373650.queue.core.windows.net/","table":"https://stgjavavm43d95373650.table.core.windows.net/","file":"https://stgjavavm43d95373650.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3093/providers/Microsoft.Storage/storageAccounts/stg4985","name":"stg4985","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:28:11.7207048Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:28:11.7207048Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:28:11.6894612Z","primaryEndpoints":{"blob":"https://stg4985.blob.core.windows.net/","queue":"https://stg4985.queue.core.windows.net/","table":"https://stg4985.table.core.windows.net/","file":"https://stg4985.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest9977/providers/Microsoft.Storage/storageAccounts/stgbnc9165","name":"stgbnc9165","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:31:59.0738016Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:31:59.0738016Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:31:59.0581787Z","primaryEndpoints":{"blob":"https://stgbnc9165.blob.core.windows.net/","queue":"https://stgbnc9165.queue.core.windows.net/","table":"https://stgbnc9165.table.core.windows.net/","file":"https://stgbnc9165.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest5772/providers/Microsoft.Storage/storageAccounts/stgjavavmcb00830196f","name":"stgjavavmcb00830196f","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T12:54:38.4891429Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T12:54:38.4891429Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T12:54:38.4422705Z","primaryEndpoints":{"blob":"https://stgjavavmcb00830196f.blob.core.windows.net/","queue":"https://stgjavavmcb00830196f.queue.core.windows.net/","table":"https://stgjavavmcb00830196f.table.core.windows.net/","file":"https://stgjavavmcb00830196f.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg1377/providers/Microsoft.Storage/storageAccounts/stg35556","name":"stg35556","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:29:10.3577399Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:29:10.3577399Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:29:10.3421120Z","primaryEndpoints":{"blob":"https://stg35556.blob.core.windows.net/","queue":"https://stg35556.queue.core.windows.net/","table":"https://stg35556.table.core.windows.net/","file":"https://stg35556.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg9de67119f7/providers/Microsoft.Storage/storageAccounts/st3ea29977a4","name":"st3ea29977a4","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9620243Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9620243Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-01T04:00:22.2331421Z","primaryEndpoints":{"blob":"https://st3ea29977a4.blob.core.windows.net/","queue":"https://st3ea29977a4.queue.core.windows.net/","table":"https://st3ea29977a4.table.core.windows.net/","file":"https://st3ea29977a4.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg8678/providers/Microsoft.Storage/storageAccounts/stg24699","name":"stg24699","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9932855Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9932855Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-10-22T20:47:23.3426259Z","primaryEndpoints":{"blob":"https://stg24699.blob.core.windows.net/","queue":"https://stg24699.queue.core.windows.net/","table":"https://stg24699.table.core.windows.net/","file":"https://stg24699.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3819/providers/Microsoft.Storage/storageAccounts/stg2666","name":"stg2666","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T23:15:53.4245534Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T23:15:53.4245534Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T23:15:53.3932595Z","primaryEndpoints":{"blob":"https://stg2666.blob.core.windows.net/","queue":"https://stg2666.queue.core.windows.net/","table":"https://stg2666.table.core.windows.net/","file":"https://stg2666.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest2038/providers/Microsoft.Storage/storageAccounts/stgbnc6669","name":"stgbnc6669","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T12:59:33.1175728Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T12:59:33.1175728Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T12:59:33.0863032Z","primaryEndpoints":{"blob":"https://stgbnc6669.blob.core.windows.net/","queue":"https://stgbnc6669.queue.core.windows.net/","table":"https://stgbnc6669.table.core.windows.net/","file":"https://stgbnc6669.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg1377/providers/Microsoft.Storage/storageAccounts/stg1798","name":"stg1798","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:29:09.9827302Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:29:09.9827302Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:29:09.9671375Z","primaryEndpoints":{"blob":"https://stg1798.blob.core.windows.net/","queue":"https://stg1798.queue.core.windows.net/","table":"https://stg1798.table.core.windows.net/","file":"https://stg1798.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgacs012581245/providers/Microsoft.Storage/storageAccounts/006lrpasdhh5mvyswarm1","name":"006lrpasdhh5mvyswarm1","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.0940448Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.0940448Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:26:50.0472235Z","primaryEndpoints":{"blob":"https://006lrpasdhh5mvyswarm1.blob.core.windows.net/","queue":"https://006lrpasdhh5mvyswarm1.queue.core.windows.net/","table":"https://006lrpasdhh5mvyswarm1.table.core.windows.net/","file":"https://006lrpasdhh5mvyswarm1.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest1501/providers/Microsoft.Storage/storageAccounts/stgbnc4090","name":"stgbnc4090","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:40:34.7555760Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:40:34.7555760Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:40:34.7086970Z","primaryEndpoints":{"blob":"https://stgbnc4090.blob.core.windows.net/","queue":"https://stgbnc4090.queue.core.windows.net/","table":"https://stgbnc4090.table.core.windows.net/","file":"https://stgbnc4090.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest7312/providers/Microsoft.Storage/storageAccounts/stgjavavm57b02213d98","name":"stgjavavm57b02213d98","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:18:03.2964360Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:18:03.2964360Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:18:03.1714019Z","primaryEndpoints":{"blob":"https://stgjavavm57b02213d98.blob.core.windows.net/","queue":"https://stgjavavm57b02213d98.queue.core.windows.net/","table":"https://stgjavavm57b02213d98.table.core.windows.net/","file":"https://stgjavavm57b02213d98.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgacs012581245/providers/Microsoft.Storage/storageAccounts/6lrpasdhh5mvyswarm0","name":"6lrpasdhh5mvyswarm0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.3284452Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.3284452Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:26:50.3127881Z","primaryEndpoints":{"blob":"https://6lrpasdhh5mvyswarm0.blob.core.windows.net/","queue":"https://6lrpasdhh5mvyswarm0.queue.core.windows.net/","table":"https://6lrpasdhh5mvyswarm0.table.core.windows.net/","file":"https://6lrpasdhh5mvyswarm0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg9511/providers/Microsoft.Storage/storageAccounts/stg4096","name":"stg4096","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:51:31.4329960Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:51:31.4329960Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:51:31.4174074Z","primaryEndpoints":{"blob":"https://stg4096.blob.core.windows.net/","queue":"https://stg4096.queue.core.windows.net/","table":"https://stg4096.table.core.windows.net/","file":"https://stg4096.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3602/providers/Microsoft.Storage/storageAccounts/stg4719","name":"stg4719","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:38:44.2043180Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:38:44.2043180Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:38:44.1730915Z","primaryEndpoints":{"blob":"https://stg4719.blob.core.windows.net/","queue":"https://stg4719.queue.core.windows.net/","table":"https://stg4719.table.core.windows.net/","file":"https://stg4719.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg771/providers/Microsoft.Storage/storageAccounts/stg1266","name":"stg1266","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:51:55.4657267Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:51:55.4657267Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:51:55.4344476Z","primaryEndpoints":{"blob":"https://stg1266.blob.core.windows.net/","queue":"https://stg1266.queue.core.windows.net/","table":"https://stg1266.table.core.windows.net/","file":"https://stg1266.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgacs012581245/providers/Microsoft.Storage/storageAccounts/o06lrpasdhh5mvyswarm5","name":"o06lrpasdhh5mvyswarm5","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.1097186Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.1097186Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:26:50.0472235Z","primaryEndpoints":{"blob":"https://o06lrpasdhh5mvyswarm5.blob.core.windows.net/","queue":"https://o06lrpasdhh5mvyswarm5.queue.core.windows.net/","table":"https://o06lrpasdhh5mvyswarm5.table.core.windows.net/","file":"https://o06lrpasdhh5mvyswarm5.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/abc6562group/providers/Microsoft.Storage/storageAccounts/stgvm1096b7d777504ab","name":"stgvm1096b7d777504ab","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:59:46.9015035Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:59:46.9015035Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:59:46.8702570Z","primaryEndpoints":{"blob":"https://stgvm1096b7d777504ab.blob.core.windows.net/","queue":"https://stgvm1096b7d777504ab.queue.core.windows.net/","table":"https://stgvm1096b7d777504ab.table.core.windows.net/","file":"https://stgvm1096b7d777504ab.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest8491/providers/Microsoft.Storage/storageAccounts/stgjavavm0539488888b","name":"stgjavavm0539488888b","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:36:35.0405070Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:36:35.0405070Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:36:35.0092280Z","primaryEndpoints":{"blob":"https://stgjavavm0539488888b.blob.core.windows.net/","queue":"https://stgjavavm0539488888b.queue.core.windows.net/","table":"https://stgjavavm0539488888b.table.core.windows.net/","file":"https://stgjavavm0539488888b.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgacs012581245/providers/Microsoft.Storage/storageAccounts/c06lrpasdhh5mvyswarm3","name":"c06lrpasdhh5mvyswarm3","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.0472235Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.0472235Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:26:50.0159158Z","primaryEndpoints":{"blob":"https://c06lrpasdhh5mvyswarm3.blob.core.windows.net/","queue":"https://c06lrpasdhh5mvyswarm3.queue.core.windows.net/","table":"https://c06lrpasdhh5mvyswarm3.table.core.windows.net/","file":"https://c06lrpasdhh5mvyswarm3.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest6621/providers/Microsoft.Storage/storageAccounts/stgjavavmd2b85295b29","name":"stgjavavmd2b85295b29","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:44:27.7895164Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:44:27.7895164Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:44:27.7738787Z","primaryEndpoints":{"blob":"https://stgjavavmd2b85295b29.blob.core.windows.net/","queue":"https://stgjavavmd2b85295b29.queue.core.windows.net/","table":"https://stgjavavmd2b85295b29.table.core.windows.net/","file":"https://stgjavavmd2b85295b29.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3502/providers/Microsoft.Storage/storageAccounts/stg2889","name":"stg2889","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T08:17:44.3543509Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T08:17:44.3543509Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T08:17:44.3230988Z","primaryEndpoints":{"blob":"https://stg2889.blob.core.windows.net/","queue":"https://stg2889.queue.core.windows.net/","table":"https://stg2889.table.core.windows.net/","file":"https://stg2889.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgacs012581245/providers/Microsoft.Storage/storageAccounts/6lrpasdhh5mvyswarmdiag0","name":"6lrpasdhh5mvyswarmdiag0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.3127881Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.3127881Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:26:50.2971980Z","primaryEndpoints":{"blob":"https://6lrpasdhh5mvyswarmdiag0.blob.core.windows.net/","queue":"https://6lrpasdhh5mvyswarmdiag0.queue.core.windows.net/","table":"https://6lrpasdhh5mvyswarmdiag0.table.core.windows.net/","file":"https://6lrpasdhh5mvyswarmdiag0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest8711/providers/Microsoft.Storage/storageAccounts/stgbnc2032","name":"stgbnc2032","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:14:27.1828795Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:14:27.1828795Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:14:27.1672525Z","primaryEndpoints":{"blob":"https://stgbnc2032.blob.core.windows.net/","queue":"https://stgbnc2032.queue.core.windows.net/","table":"https://stgbnc2032.table.core.windows.net/","file":"https://stgbnc2032.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg9511/providers/Microsoft.Storage/storageAccounts/stg3196","name":"stg3196","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:52:22.3698825Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:52:22.3698825Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:52:22.3386431Z","primaryEndpoints":{"blob":"https://stg3196.blob.core.windows.net/","queue":"https://stg3196.queue.core.windows.net/","table":"https://stg3196.table.core.windows.net/","file":"https://stg3196.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest4180/providers/Microsoft.Storage/storageAccounts/stgbnc5175","name":"stgbnc5175","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:50:47.5307698Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:50:47.5307698Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:50:47.4995195Z","primaryEndpoints":{"blob":"https://stgbnc5175.blob.core.windows.net/","queue":"https://stgbnc5175.queue.core.windows.net/","table":"https://stgbnc5175.table.core.windows.net/","file":"https://stgbnc5175.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest2727/providers/Microsoft.Storage/storageAccounts/stgbnc5888","name":"stgbnc5888","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:47:26.5456311Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:47:26.5456311Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:47:26.5143633Z","primaryEndpoints":{"blob":"https://stgbnc5888.blob.core.windows.net/","queue":"https://stgbnc5888.queue.core.windows.net/","table":"https://stgbnc5888.table.core.windows.net/","file":"https://stgbnc5888.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest5560/providers/Microsoft.Storage/storageAccounts/stgjavavm3ce9008563d","name":"stgjavavm3ce9008563d","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:10:52.6901809Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:10:52.6901809Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:10:52.6745969Z","primaryEndpoints":{"blob":"https://stgjavavm3ce9008563d.blob.core.windows.net/","queue":"https://stgjavavm3ce9008563d.queue.core.windows.net/","table":"https://stgjavavm3ce9008563d.table.core.windows.net/","file":"https://stgjavavm3ce9008563d.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgcomvad814855116a9864/providers/Microsoft.Storage/storageAccounts/stgvm32735dbab87839ad","name":"stgvm32735dbab87839ad","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.2745251Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.2745251Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-05T02:16:45.9826459Z","primaryEndpoints":{"blob":"https://stgvm32735dbab87839ad.blob.core.windows.net/","queue":"https://stgvm32735dbab87839ad.queue.core.windows.net/","table":"https://stgvm32735dbab87839ad.table.core.windows.net/","file":"https://stgvm32735dbab87839ad.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgacs012581245/providers/Microsoft.Storage/storageAccounts/i06lrpasdhh5mvyswarm4","name":"i06lrpasdhh5mvyswarm4","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.0784417Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.0784417Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:26:50.0159158Z","primaryEndpoints":{"blob":"https://i06lrpasdhh5mvyswarm4.blob.core.windows.net/","queue":"https://i06lrpasdhh5mvyswarm4.queue.core.windows.net/","table":"https://i06lrpasdhh5mvyswarm4.table.core.windows.net/","file":"https://i06lrpasdhh5mvyswarm4.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest8132/providers/Microsoft.Storage/storageAccounts/stgbnc1363","name":"stgbnc1363","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:17:50.0973565Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:17:50.0973565Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:17:50.0660905Z","primaryEndpoints":{"blob":"https://stgbnc1363.blob.core.windows.net/","queue":"https://stgbnc1363.queue.core.windows.net/","table":"https://stgbnc1363.table.core.windows.net/","file":"https://stgbnc1363.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3502/providers/Microsoft.Storage/storageAccounts/stg1316","name":"stg1316","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T08:17:43.8700047Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T08:17:43.8700047Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T08:17:43.8387584Z","primaryEndpoints":{"blob":"https://stg1316.blob.core.windows.net/","queue":"https://stg1316.queue.core.windows.net/","table":"https://stg1316.table.core.windows.net/","file":"https://stg1316.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3819/providers/Microsoft.Storage/storageAccounts/stg6080","name":"stg6080","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T23:15:53.3307714Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T23:15:53.3307714Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T23:15:53.2995412Z","primaryEndpoints":{"blob":"https://stg6080.blob.core.windows.net/","queue":"https://stg6080.queue.core.windows.net/","table":"https://stg6080.table.core.windows.net/","file":"https://stg6080.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg7434/providers/Microsoft.Storage/storageAccounts/stg379","name":"stg379","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:40:27.5308774Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:40:27.5308774Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:40:27.4683812Z","primaryEndpoints":{"blob":"https://stg379.blob.core.windows.net/","queue":"https://stg379.queue.core.windows.net/","table":"https://stg379.table.core.windows.net/","file":"https://stg379.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest3168/providers/Microsoft.Storage/storageAccounts/stgjavavm3dd27109215","name":"stgjavavm3dd27109215","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:03:43.1243832Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:03:43.1243832Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:03:43.0775007Z","primaryEndpoints":{"blob":"https://stgjavavm3dd27109215.blob.core.windows.net/","queue":"https://stgjavavm3dd27109215.queue.core.windows.net/","table":"https://stgjavavm3dd27109215.table.core.windows.net/","file":"https://stgjavavm3dd27109215.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg771/providers/Microsoft.Storage/storageAccounts/stg8019","name":"stg8019","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:52:44.3417181Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:52:44.3417181Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:52:44.3260939Z","primaryEndpoints":{"blob":"https://stg8019.blob.core.windows.net/","queue":"https://stg8019.queue.core.windows.net/","table":"https://stg8019.table.core.windows.net/","file":"https://stg8019.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rged92722916/providers/Microsoft.Storage/storageAccounts/st39055055d8","name":"st39055055d8","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9620243Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9620243Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-14T08:29:14.1632499Z","primaryEndpoints":{"blob":"https://st39055055d8.blob.core.windows.net/","queue":"https://st39055055d8.queue.core.windows.net/","table":"https://st39055055d8.table.core.windows.net/","file":"https://st39055055d8.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3093/providers/Microsoft.Storage/storageAccounts/stg31634","name":"stg31634","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:28:13.1805425Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:28:13.1805425Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:28:13.1493074Z","primaryEndpoints":{"blob":"https://stg31634.blob.core.windows.net/","queue":"https://stg31634.queue.core.windows.net/","table":"https://stg31634.table.core.windows.net/","file":"https://stg31634.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest5960/providers/Microsoft.Storage/storageAccounts/stgjavavmbf44552277c","name":"stgjavavmbf44552277c","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T12:56:14.6365579Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T12:56:14.6365579Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T12:56:14.6053295Z","primaryEndpoints":{"blob":"https://stgjavavmbf44552277c.blob.core.windows.net/","queue":"https://stgjavavmbf44552277c.queue.core.windows.net/","table":"https://stgjavavmbf44552277c.table.core.windows.net/","file":"https://stgjavavmbf44552277c.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest6805/providers/Microsoft.Storage/storageAccounts/stgjavavm76e93900fb5","name":"stgjavavm76e93900fb5","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:28:13.0923956Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:28:13.0923956Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:28:13.0611455Z","primaryEndpoints":{"blob":"https://stgjavavm76e93900fb5.blob.core.windows.net/","queue":"https://stgjavavm76e93900fb5.queue.core.windows.net/","table":"https://stgjavavm76e93900fb5.table.core.windows.net/","file":"https://stgjavavm76e93900fb5.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgacs012581245/providers/Microsoft.Storage/storageAccounts/606lrpasdhh5mvyswarm2","name":"606lrpasdhh5mvyswarm2","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.0005917Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:26:50.0005917Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:26:49.9690407Z","primaryEndpoints":{"blob":"https://606lrpasdhh5mvyswarm2.blob.core.windows.net/","queue":"https://606lrpasdhh5mvyswarm2.queue.core.windows.net/","table":"https://606lrpasdhh5mvyswarm2.table.core.windows.net/","file":"https://606lrpasdhh5mvyswarm2.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg1819/providers/Microsoft.Storage/storageAccounts/stg6604","name":"stg6604","type":"Microsoft.Storage/storageAccounts","location":"eastus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T14:47:30.4664398Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T14:47:30.4664398Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T14:47:30.4195672Z","primaryEndpoints":{"blob":"https://stg6604.blob.core.windows.net/","queue":"https://stg6604.queue.core.windows.net/","table":"https://stg6604.table.core.windows.net/","file":"https://stg6604.file.core.windows.net/"},"primaryLocation":"eastus2","statusOfPrimary":"available","secondaryLocation":"centralus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg2755/providers/Microsoft.Storage/storageAccounts/stg4523","name":"stg4523","type":"Microsoft.Storage/storageAccounts","location":"eastus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T20:03:25.0602489Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T20:03:25.0602489Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T20:03:25.0133960Z","primaryEndpoints":{"blob":"https://stg4523.blob.core.windows.net/","queue":"https://stg4523.queue.core.windows.net/","table":"https://stg4523.table.core.windows.net/","file":"https://stg4523.file.core.windows.net/"},"primaryLocation":"eastus2","statusOfPrimary":"available","secondaryLocation":"centralus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationpyaffz2jgatrx3wmu5i3ms7e6vq6ffr6c7vpfafzb27ypbrksahwiedyawvx4g/providers/Microsoft.Storage/storageAccounts/acliautomationlab2482","name":"acliautomationlab2482","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"fad847a0-13b6-4061-9649-ad71226702f7"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-06T18:03:05.8117216Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-06T18:03:05.8117216Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-06T18:03:05.7648048Z","primaryEndpoints":{"blob":"https://acliautomationlab2482.blob.core.windows.net/","queue":"https://acliautomationlab2482.queue.core.windows.net/","table":"https://acliautomationlab2482.table.core.windows.net/","file":"https://acliautomationlab2482.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationtoxqsril3nh52zq7j2qv45ep7rtig4xnyg77hmcyl2uuausjromygxx7poq77x/providers/Microsoft.Storage/storageAccounts/acliautomationlab920","name":"acliautomationlab920","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"0958ba1e-279c-465c-a6a8-2b58d04b60b1"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-08T22:52:48.9788934Z","primaryEndpoints":{"blob":"https://acliautomationlab920.blob.core.windows.net/","queue":"https://acliautomationlab920.queue.core.windows.net/","table":"https://acliautomationlab920.table.core.windows.net/","file":"https://acliautomationlab920.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01/providers/Microsoft.Storage/storageAccounts/acliautomationlab2281","name":"acliautomationlab2281","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"72f1b266-2a21-4f0a-af01-934c93c72e6e"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-07T16:46:33.749166Z","primaryEndpoints":{"blob":"https://acliautomationlab2281.blob.core.windows.net/","queue":"https://acliautomationlab2281.queue.core.windows.net/","table":"https://acliautomationlab2281.table.core.windows.net/","file":"https://acliautomationlab2281.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01q2ksq7ibjhnl6y3qahzaq67qjcuv3p3xuhqhg6nufdyu6sttjlioho5vlbmp/providers/Microsoft.Storage/storageAccounts/acliautomationlab9808","name":"acliautomationlab9808","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"568e6db7-10b6-40e1-af55-4e5c0c9460b3"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-03T04:09:43.1153175Z","primaryEndpoints":{"blob":"https://acliautomationlab9808.blob.core.windows.net/","queue":"https://acliautomationlab9808.queue.core.windows.net/","table":"https://acliautomationlab9808.table.core.windows.net/","file":"https://acliautomationlab9808.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01p5mb65te4noiwqbh7ni3sggmdrhbawq2atk5mc6elgdat5qkg6fuguonzmvj/providers/Microsoft.Storage/storageAccounts/acliautomationlab9396","name":"acliautomationlab9396","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"ba56a262-8f28-4665-86d9-18a308784945"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-08T20:14:17.6792122Z","primaryEndpoints":{"blob":"https://acliautomationlab9396.blob.core.windows.net/","queue":"https://acliautomationlab9396.queue.core.windows.net/","table":"https://acliautomationlab9396.table.core.windows.net/","file":"https://acliautomationlab9396.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01ei2lu47wac7ixneeciagpf7ocqwvjvrq6rvkjl5hr2t3tyqkrzjdrsyd5lom/providers/Microsoft.Storage/storageAccounts/acliautomationlab4923","name":"acliautomationlab4923","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"db05f622-e24b-4bad-8265-0042a9feacff"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-26T20:28:36.5037123Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-26T20:28:36.5037123Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-26T20:28:36.3943699Z","primaryEndpoints":{"blob":"https://acliautomationlab4923.blob.core.windows.net/","queue":"https://acliautomationlab4923.queue.core.windows.net/","table":"https://acliautomationlab4923.table.core.windows.net/","file":"https://acliautomationlab4923.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation014o3znldng4uswc6mo6fhrx7gjnqitwa7b4ygnel5rhm624kjc53acrmyl3rk/providers/Microsoft.Storage/storageAccounts/acliautomationlab1633","name":"acliautomationlab1633","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"e33eb9e2-9aa6-4024-90b0-44509f6beded"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-06T18:03:01.1799270Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-06T18:03:01.1799270Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-06T18:03:01.1486631Z","primaryEndpoints":{"blob":"https://acliautomationlab1633.blob.core.windows.net/","queue":"https://acliautomationlab1633.queue.core.windows.net/","table":"https://acliautomationlab1633.table.core.windows.net/","file":"https://acliautomationlab1633.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T21:34:22.0842668Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T21:34:22.0842668Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T21:34:22.0374010Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationr7zmwrv545myosbhrhgmvyxvh473lloj24vcvwx5xuabi7hadxngt4sg7cbfxm/providers/Microsoft.Storage/storageAccounts/acliautomationlab4621","name":"acliautomationlab4621","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"3acb626c-e8a0-431d-bd15-47d2472c013f"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-07T18:36:05.7790991Z","primaryEndpoints":{"blob":"https://acliautomationlab4621.blob.core.windows.net/","queue":"https://acliautomationlab4621.queue.core.windows.net/","table":"https://acliautomationlab4621.table.core.windows.net/","file":"https://acliautomationlab4621.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation/providers/Microsoft.Storage/storageAccounts/acliautomationlab2987","name":"acliautomationlab2987","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"9f45d4bf-7e01-4684-9438-37c712728db1"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-07T16:48:01.7641299Z","primaryEndpoints":{"blob":"https://acliautomationlab2987.blob.core.windows.net/","queue":"https://acliautomationlab2987.queue.core.windows.net/","table":"https://acliautomationlab2987.table.core.windows.net/","file":"https://acliautomationlab2987.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01l6uben7lla33aijx72dhaf3wb7dlqb2u7ixr7vhmojrwbr6e5gv2rvdneg5r/providers/Microsoft.Storage/storageAccounts/acliautomationlab1471","name":"acliautomationlab1471","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"48fc5481-154a-40d8-a96c-90f85a3186b5"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-26T15:33:35.4529781Z","primaryEndpoints":{"blob":"https://acliautomationlab1471.blob.core.windows.net/","queue":"https://acliautomationlab1471.queue.core.windows.net/","table":"https://acliautomationlab1471.table.core.windows.net/","file":"https://acliautomationlab1471.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgcv22bl3p5jculym7mxzp4qrzni5wnq3cmtnvsu52yhtwvwicm3fe3k6m24yqdilgh/providers/Microsoft.Storage/storageAccounts/clireg23zq5h4f67b5091810","name":"clireg23zq5h4f67b5091810","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"containerregistry":"clireg23zq5h4f67b5wu"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T09:18:14.1652856Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T09:18:14.1652856Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T09:18:14.1184391Z","primaryEndpoints":{"blob":"https://clireg23zq5h4f67b5091810.blob.core.windows.net/","queue":"https://clireg23zq5h4f67b5091810.queue.core.windows.net/","table":"https://clireg23zq5h4f67b5091810.table.core.windows.net/","file":"https://clireg23zq5h4f67b5091810.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation014m5le4sxlxnlbtvhekxljqndmwiuvvczqg2qumloh3nw3a6dg6qfqz65dczz/providers/Microsoft.Storage/storageAccounts/acliautomationlab2832","name":"acliautomationlab2832","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"ec24f56f-0a82-42f5-ae26-f391815aaf39"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-02T07:38:16.9674949Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-02T07:38:16.9674949Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-02T07:38:16.9356739Z","primaryEndpoints":{"blob":"https://acliautomationlab2832.blob.core.windows.net/","queue":"https://acliautomationlab2832.queue.core.windows.net/","table":"https://acliautomationlab2832.table.core.windows.net/","file":"https://acliautomationlab2832.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationbvd5rqbmr4xfzxbbls4vvm4zl66fz5ykv73nqx3rtougzgxhksyjpn3l43txu3/providers/Microsoft.Storage/storageAccounts/acliautomationlab386","name":"acliautomationlab386","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"40c3e5e9-6d70-41a5-9ba0-dedd33f96963"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-02T07:38:24.9254634Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-02T07:38:24.9254634Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-02T07:38:24.9098324Z","primaryEndpoints":{"blob":"https://acliautomationlab386.blob.core.windows.net/","queue":"https://acliautomationlab386.queue.core.windows.net/","table":"https://acliautomationlab386.table.core.windows.net/","file":"https://acliautomationlab386.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgcv22bl3p5jculym7mxzp4qrzni5wnq3cmtnvsu52yhtwvwicm3fe3k6m24yqdilgh/providers/Microsoft.Storage/storageAccounts/clitestaycxoezila4zvz3oc","name":"clitestaycxoezila4zvz3oc","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T09:17:31.1771220Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T09:17:31.1771220Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T09:17:31.1146217Z","primaryEndpoints":{"blob":"https://clitestaycxoezila4zvz3oc.blob.core.windows.net/","queue":"https://clitestaycxoezila4zvz3oc.queue.core.windows.net/","table":"https://clitestaycxoezila4zvz3oc.table.core.windows.net/","file":"https://clitestaycxoezila4zvz3oc.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationzlgmnmobxi6bkdkatnybuntm5ic5csahw33ox6rmthro3hjfgfqujqkdlrxfje/providers/Microsoft.Storage/storageAccounts/acliautomationlab3782","name":"acliautomationlab3782","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"b9dc7e5c-5ff3-4687-bf01-83833a4ccd53"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-04T06:41:36.4612382Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-04T06:41:36.4612382Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-04T06:41:36.4143632Z","primaryEndpoints":{"blob":"https://acliautomationlab3782.blob.core.windows.net/","queue":"https://acliautomationlab3782.queue.core.windows.net/","table":"https://acliautomationlab3782.table.core.windows.net/","file":"https://acliautomationlab3782.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01bn7wa4ubnulp6m4khobeloz6mvbxxg6ygalgryhylt2zpjgqcumow6ih26ud/providers/Microsoft.Storage/storageAccounts/acliautomationlab8383","name":"acliautomationlab8383","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"417cc8eb-3e86-4a90-9ce0-e215c7a4b9be"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-31T19:38:42.9687239Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-31T19:38:42.9687239Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-31T19:38:42.9375080Z","primaryEndpoints":{"blob":"https://acliautomationlab8383.blob.core.windows.net/","queue":"https://acliautomationlab8383.queue.core.windows.net/","table":"https://acliautomationlab8383.table.core.windows.net/","file":"https://acliautomationlab8383.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgz7d3e2yb2inofrrnaj3lvvbvwqqigncdhefwljdibplopfilty5ix4dxhdnegz7s4/providers/Microsoft.Storage/storageAccounts/clitestobxdwzqyayj32oxzm","name":"clitestobxdwzqyayj32oxzm","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:31:04.8312684Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:31:04.8312684Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:31:04.7844176Z","primaryEndpoints":{"blob":"https://clitestobxdwzqyayj32oxzm.blob.core.windows.net/","queue":"https://clitestobxdwzqyayj32oxzm.queue.core.windows.net/","table":"https://clitestobxdwzqyayj32oxzm.table.core.windows.net/","file":"https://clitestobxdwzqyayj32oxzm.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg2claqiiin2xfwkiskmfrvz2arekdocwsl7ff63gkroosvxv2whwbgdanw4tgesatc/providers/Microsoft.Storage/storageAccounts/clitest6uk5hhihzzby4ytcq","name":"clitest6uk5hhihzzby4ytcq","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T08:12:51.8379955Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T08:12:51.8379955Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T08:12:51.7754853Z","primaryEndpoints":{"blob":"https://clitest6uk5hhihzzby4ytcq.blob.core.windows.net/","queue":"https://clitest6uk5hhihzzby4ytcq.queue.core.windows.net/","table":"https://clitest6uk5hhihzzby4ytcq.table.core.windows.net/","file":"https://clitest6uk5hhihzzby4ytcq.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01ldu2m7bvtvotoelxgw2icl5sivnvoixudxyql6l42hseiv5stbbuulg7g3h4/providers/Microsoft.Storage/storageAccounts/acliautomationlab9248","name":"acliautomationlab9248","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"3ff20302-c399-4d32-88ed-2c84952da1c3"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-04T00:40:16.2044479Z","primaryEndpoints":{"blob":"https://acliautomationlab9248.blob.core.windows.net/","queue":"https://acliautomationlab9248.queue.core.windows.net/","table":"https://acliautomationlab9248.table.core.windows.net/","file":"https://acliautomationlab9248.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation016zx7ulhvrc7ng6fcdst72y2t2fgbvbyueykqnw4d76aq4gyxd267voh5nixs/providers/Microsoft.Storage/storageAccounts/acliautomationlab8049","name":"acliautomationlab8049","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"909a5513-261d-4cd4-a8dd-19a18a866f77"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-08T02:56:53.0185142Z","primaryEndpoints":{"blob":"https://acliautomationlab8049.blob.core.windows.net/","queue":"https://acliautomationlab8049.queue.core.windows.net/","table":"https://acliautomationlab8049.table.core.windows.net/","file":"https://acliautomationlab8049.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation013mvyy356dnjmb5iwivgwu3gp2bgpjaik6sx3zxuqg36vhnchoc5vwvzzvxu4/providers/Microsoft.Storage/storageAccounts/acliautomationlab8828","name":"acliautomationlab8828","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"33f5487f-2303-4193-9ec1-9f4820d78d00"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-05T07:38:28.7575542Z","primaryEndpoints":{"blob":"https://acliautomationlab8828.blob.core.windows.net/","queue":"https://acliautomationlab8828.queue.core.windows.net/","table":"https://acliautomationlab8828.table.core.windows.net/","file":"https://acliautomationlab8828.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01iy5u4xyaed2wgxpr3oshkjvesx7eypiagoyydutuuwbrotz44zddkgr7qfay/providers/Microsoft.Storage/storageAccounts/acliautomationlab1940","name":"acliautomationlab1940","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"867204a5-7d7c-41c3-866f-845829532736"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-04T06:41:24.3204875Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-04T06:41:24.3204875Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-04T06:41:24.2579926Z","primaryEndpoints":{"blob":"https://acliautomationlab1940.blob.core.windows.net/","queue":"https://acliautomationlab1940.queue.core.windows.net/","table":"https://acliautomationlab1940.table.core.windows.net/","file":"https://acliautomationlab1940.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationrmo5dcfkn2tcdobw3qhwsafqbqgge3o7emagrlfoxgsioc2jr7e5cjztqewzla/providers/Microsoft.Storage/storageAccounts/acliautomationlab6710","name":"acliautomationlab6710","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"90a7effd-a5b2-48ce-ac70-88b48096881c"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-03T04:10:00.39885Z","primaryEndpoints":{"blob":"https://acliautomationlab6710.blob.core.windows.net/","queue":"https://acliautomationlab6710.queue.core.windows.net/","table":"https://acliautomationlab6710.table.core.windows.net/","file":"https://acliautomationlab6710.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationpytfzqow2fyxfbik7w4k34yguitwrmhunpwy4ozpgsy243novl4fjnlev2zfly/providers/Microsoft.Storage/storageAccounts/acliautomationlab1008","name":"acliautomationlab1008","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"7dfd84e6-8815-45cd-a927-4ea20034ff9e"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-31T19:38:56.9344030Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-31T19:38:56.9344030Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-31T19:38:56.8562798Z","primaryEndpoints":{"blob":"https://acliautomationlab1008.blob.core.windows.net/","queue":"https://acliautomationlab1008.queue.core.windows.net/","table":"https://acliautomationlab1008.table.core.windows.net/","file":"https://acliautomationlab1008.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationgbb6evd4zx72bc5wpfijxlcbpo5n24rkj2kg3y57jpl2mkxc6w5x5exnsantug/providers/Microsoft.Storage/storageAccounts/acliautomationlab5191","name":"acliautomationlab5191","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"bfb18d73-f216-4bdc-aba6-252bba91adb2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-26T20:28:36.4256121Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-26T20:28:36.4256121Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-26T20:28:36.3631077Z","primaryEndpoints":{"blob":"https://acliautomationlab5191.blob.core.windows.net/","queue":"https://acliautomationlab5191.queue.core.windows.net/","table":"https://acliautomationlab5191.table.core.windows.net/","file":"https://acliautomationlab5191.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationrcjorwrtg3oudx2a6akfwe5e6n7ocvpleklcwwqclzazlly76iaddtkjqtdwbe/providers/Microsoft.Storage/storageAccounts/acliautomationlab5146","name":"acliautomationlab5146","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"6734c4ab-6f8d-46e5-afec-0ed8275cccc7"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T16:45:00.1329602Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T16:45:00.1329602Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T16:45:00.0861198Z","primaryEndpoints":{"blob":"https://acliautomationlab5146.blob.core.windows.net/","queue":"https://acliautomationlab5146.queue.core.windows.net/","table":"https://acliautomationlab5146.table.core.windows.net/","file":"https://acliautomationlab5146.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01undmfcuvtas2vq76b7cdf2bcb522g55yjxgq26oqjumof4h3bkhfa5f5galo/providers/Microsoft.Storage/storageAccounts/acliautomationlab3187","name":"acliautomationlab3187","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"3cd350aa-2568-49ea-a4a2-41dd07e9e8ac"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-02T05:13:09.9630161Z","primaryEndpoints":{"blob":"https://acliautomationlab3187.blob.core.windows.net/","queue":"https://acliautomationlab3187.queue.core.windows.net/","table":"https://acliautomationlab3187.table.core.windows.net/","file":"https://acliautomationlab3187.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationsxtwbd7crie33fjnfjz2zp7ibcmfz4gyjh5mvqoqkz3y7txx7g34rl7mmoucew/providers/Microsoft.Storage/storageAccounts/acliautomationlab3276","name":"acliautomationlab3276","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"9f96ba9d-7858-43e0-a93a-9424a36a0975"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-05T07:38:39.4934331Z","primaryEndpoints":{"blob":"https://acliautomationlab3276.blob.core.windows.net/","queue":"https://acliautomationlab3276.queue.core.windows.net/","table":"https://acliautomationlab3276.table.core.windows.net/","file":"https://acliautomationlab3276.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Premium_LRS","tier":"Premium"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sdk-test/providers/Microsoft.Storage/storageAccounts/sdkteststor","name":"sdkteststor","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.8539723Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-05-21T04:29:51.1804697Z","primaryEndpoints":{"blob":"https://sdkteststor.blob.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationyl5duneg4gkn25csd2rd4lbm2yjjq5n33z24jxikgchafi3xnfgokwxtsor56r/providers/Microsoft.Storage/storageAccounts/acliautomationlab1231","name":"acliautomationlab1231","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"f500a48c-e003-403a-b50a-903a96f6d226"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7133409Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7133409Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-08T02:59:00.3810995Z","primaryEndpoints":{"blob":"https://acliautomationlab1231.blob.core.windows.net/","queue":"https://acliautomationlab1231.queue.core.windows.net/","table":"https://acliautomationlab1231.table.core.windows.net/","file":"https://acliautomationlab1231.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgh677nueggg6d7igrusbfk2xh6gja7um3ccgomqlsm3nxazm2ixsvo4uppithrwls5/providers/Microsoft.Storage/storageAccounts/clitestyfn6lmyp56kgtrigf","name":"clitestyfn6lmyp56kgtrigf","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:42:23.4666652Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:42:23.4666652Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:42:23.3885547Z","primaryEndpoints":{"blob":"https://clitestyfn6lmyp56kgtrigf.blob.core.windows.net/","queue":"https://clitestyfn6lmyp56kgtrigf.queue.core.windows.net/","table":"https://clitestyfn6lmyp56kgtrigf.table.core.windows.net/","file":"https://clitestyfn6lmyp56kgtrigf.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg6246/providers/Microsoft.Storage/storageAccounts/javawebapp735267887","name":"javawebapp735267887","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T12:44:08.0866484Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T12:44:08.0866484Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T12:44:08.0397682Z","primaryEndpoints":{"blob":"https://javawebapp735267887.blob.core.windows.net/","queue":"https://javawebapp735267887.queue.core.windows.net/","table":"https://javawebapp735267887.table.core.windows.net/","file":"https://javawebapp735267887.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01ptu376gffvlvblokeyvsvqoefixzvz2uosy7gvqozzktnhvpufmcc5ut4ytd/providers/Microsoft.Storage/storageAccounts/acliautomationlab2257","name":"acliautomationlab2257","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"e6cd699b-4ac2-4022-a435-960bc7d3ee9f"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-08T22:52:45.5675859Z","primaryEndpoints":{"blob":"https://acliautomationlab2257.blob.core.windows.net/","queue":"https://acliautomationlab2257.queue.core.windows.net/","table":"https://acliautomationlab2257.table.core.windows.net/","file":"https://acliautomationlab2257.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01kr3ll4q2x5vuwozn4xz6zoybb4odfjebsjtwcxrehup7jnzykb47tmcsohyz/providers/Microsoft.Storage/storageAccounts/acliautomationlab6989","name":"acliautomationlab6989","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"3e585a6c-7c78-494c-99f8-a56e8734fb6d"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T16:44:45.7241602Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T16:44:45.7241602Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T16:44:45.6772890Z","primaryEndpoints":{"blob":"https://acliautomationlab6989.blob.core.windows.net/","queue":"https://acliautomationlab6989.queue.core.windows.net/","table":"https://acliautomationlab6989.table.core.windows.net/","file":"https://acliautomationlab6989.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationt3zeu76ormrubewlqrnf4ykozdfs3pr2ahftj4d33tuybrpobavi5sbtcdcfc4/providers/Microsoft.Storage/storageAccounts/acliautomationlab9106","name":"acliautomationlab9106","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"498bf2d2-520c-42fd-b974-269015697a98"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-04T00:40:33.0829429Z","primaryEndpoints":{"blob":"https://acliautomationlab9106.blob.core.windows.net/","queue":"https://acliautomationlab9106.queue.core.windows.net/","table":"https://acliautomationlab9106.table.core.windows.net/","file":"https://acliautomationlab9106.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg9129/providers/Microsoft.Storage/storageAccounts/javawebapp575092367","name":"javawebapp575092367","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T02:46:42.1621654Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T02:46:42.1621654Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T02:46:42.1153349Z","primaryEndpoints":{"blob":"https://javawebapp575092367.blob.core.windows.net/","queue":"https://javawebapp575092367.queue.core.windows.net/","table":"https://javawebapp575092367.table.core.windows.net/","file":"https://javawebapp575092367.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation2nscoydrikfz67cluekp6xqv4zkltay5x7ubl3qh2yb73qfdjq3j24fzcrd766/providers/Microsoft.Storage/storageAccounts/acliautomationlab2578","name":"acliautomationlab2578","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"8cf9f8f3-ff0c-43a5-809d-b4be39f17fa8"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-02T05:13:20.2601933Z","primaryEndpoints":{"blob":"https://acliautomationlab2578.blob.core.windows.net/","queue":"https://acliautomationlab2578.queue.core.windows.net/","table":"https://acliautomationlab2578.table.core.windows.net/","file":"https://acliautomationlab2578.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxstorage","name":"wilxstorage","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-05T21:40:13.3804210Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-05T21:40:13.3804210Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-05T21:40:13.3335235Z","primaryEndpoints":{"blob":"https://wilxstorage.blob.core.windows.net/","queue":"https://wilxstorage.queue.core.windows.net/","table":"https://wilxstorage.table.core.windows.net/","file":"https://wilxstorage.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorage-secondary.blob.core.windows.net/","queue":"https://wilxstorage-secondary.queue.core.windows.net/","table":"https://wilxstorage-secondary.table.core.windows.net/"}}},{"sku":{"name":"Premium_LRS","tier":"Premium"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgfluentchash-2695/providers/Microsoft.Storage/storageAccounts/stg7841","name":"stg7841","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:42:38.5746805Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:42:38.5746805Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:42:38.5121931Z","primaryEndpoints":{"blob":"https://stg7841.blob.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgfluentchash-2695/providers/Microsoft.Storage/storageAccounts/stgchashvmb0493512bd3","name":"stgchashvmb0493512bd3","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:48:24.0431630Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:48:24.0431630Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:48:23.9806708Z","primaryEndpoints":{"blob":"https://stgchashvmb0493512bd3.blob.core.windows.net/","queue":"https://stgchashvmb0493512bd3.queue.core.windows.net/","table":"https://stgchashvmb0493512bd3.table.core.windows.net/","file":"https://stgchashvmb0493512bd3.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available","secondaryLocation":"northcentralus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgfluentchash-2695/providers/Microsoft.Storage/storageAccounts/stgchashvmf966267182c","name":"stgchashvmf966267182c","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:43:09.8431316Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:43:09.8431316Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:43:09.7962537Z","primaryEndpoints":{"blob":"https://stgchashvmf966267182c.blob.core.windows.net/","queue":"https://stgchashvmf966267182c.queue.core.windows.net/","table":"https://stgchashvmf966267182c.table.core.windows.net/","file":"https://stgchashvmf966267182c.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available","secondaryLocation":"northcentralus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/debekoe1test2/providers/Microsoft.Storage/storageAccounts/debekoe1test2","name":"debekoe1test2","type":"Microsoft.Storage/storageAccounts","location":"westus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:26:27.0937394Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:26:27.0937394Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:26:27.0624521Z","primaryEndpoints":{"blob":"https://debekoe1test2.blob.core.windows.net/","queue":"https://debekoe1test2.queue.core.windows.net/","table":"https://debekoe1test2.table.core.windows.net/","file":"https://debekoe1test2.file.core.windows.net/"},"primaryLocation":"westus2","statusOfPrimary":"available","secondaryLocation":"westcentralus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://debekoe1test2-secondary.blob.core.windows.net/","queue":"https://debekoe1test2-secondary.queue.core.windows.net/","table":"https://debekoe1test2-secondary.table.core.windows.net/"}}}]}'}
+ body: {string: '{"value":[{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/o0zeaawp7t7n4skagntpri4","name":"o0zeaawp7t7n4skagntpri4","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.2637195Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.2637195Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.2168154Z","primaryEndpoints":{"blob":"https://o0zeaawp7t7n4skagntpri4.blob.core.windows.net/","queue":"https://o0zeaawp7t7n4skagntpri4.queue.core.windows.net/","table":"https://o0zeaawp7t7n4skagntpri4.table.core.windows.net/","file":"https://o0zeaawp7t7n4skagntpri4.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/zeaawp7t7n4skagntpub","name":"zeaawp7t7n4skagntpub","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.5762847Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.5762847Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.5294154Z","primaryEndpoints":{"blob":"https://zeaawp7t7n4skagntpub.blob.core.windows.net/","queue":"https://zeaawp7t7n4skagntpub.queue.core.windows.net/","table":"https://zeaawp7t7n4skagntpub.table.core.windows.net/","file":"https://zeaawp7t7n4skagntpub.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/storGRP1/providers/Microsoft.Storage/storageAccounts/storacc2","name":"storacc2","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T18:24:41.3214880Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T18:24:41.3214880Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-09T18:24:41.2902466Z","primaryEndpoints":{"blob":"https://storacc2.blob.core.windows.net/","queue":"https://storacc2.queue.core.windows.net/","table":"https://storacc2.table.core.windows.net/","file":"https://storacc2.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/zeaawp7t7n4skdiag0","name":"zeaawp7t7n4skdiag0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.7951275Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.7951275Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.7482499Z","primaryEndpoints":{"blob":"https://zeaawp7t7n4skdiag0.blob.core.windows.net/","queue":"https://zeaawp7t7n4skdiag0.queue.core.windows.net/","table":"https://zeaawp7t7n4skdiag0.table.core.windows.net/","file":"https://zeaawp7t7n4skdiag0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyReallyCoolVM202/providers/Microsoft.Storage/storageAccounts/mynewaccount1234","name":"mynewaccount1234","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-27T21:34:15.2961058Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-27T21:34:15.2961058Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-27T21:34:15.2335978Z","primaryEndpoints":{"blob":"https://mynewaccount1234.blob.core.windows.net/","queue":"https://mynewaccount1234.queue.core.windows.net/","table":"https://mynewaccount1234.table.core.windows.net/","file":"https://mynewaccount1234.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/60zeaawp7t7n4skagntpri1","name":"60zeaawp7t7n4skagntpri1","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:59.4978129Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:59.4978129Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:33:59.3727743Z","primaryEndpoints":{"blob":"https://60zeaawp7t7n4skagntpri1.blob.core.windows.net/","queue":"https://60zeaawp7t7n4skagntpri1.queue.core.windows.net/","table":"https://60zeaawp7t7n4skagntpri1.table.core.windows.net/","file":"https://60zeaawp7t7n4skagntpri1.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/00zeaawp7t7n4skagntpri0","name":"00zeaawp7t7n4skagntpri0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:57.1533290Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:57.1533290Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:33:57.1064646Z","primaryEndpoints":{"blob":"https://00zeaawp7t7n4skagntpri0.blob.core.windows.net/","queue":"https://00zeaawp7t7n4skagntpri0.queue.core.windows.net/","table":"https://00zeaawp7t7n4skagntpri0.table.core.windows.net/","file":"https://00zeaawp7t7n4skagntpri0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Premium_LRS","tier":"Premium"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxgroupdisks925","name":"wilxgroupdisks925","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-13T17:14:42.2678046Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-13T17:14:42.2678046Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-13T17:14:42.2522063Z","primaryEndpoints":{"blob":"https://wilxgroupdisks925.blob.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/i0zeaawp7t7n4skagntpri3","name":"i0zeaawp7t7n4skagntpri3","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:59.2790240Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:59.2790240Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:33:59.2321471Z","primaryEndpoints":{"blob":"https://i0zeaawp7t7n4skagntpri3.blob.core.windows.net/","queue":"https://i0zeaawp7t7n4skagntpri3.queue.core.windows.net/","table":"https://i0zeaawp7t7n4skagntpri3.table.core.windows.net/","file":"https://i0zeaawp7t7n4skagntpri3.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/zeaawp7t7n4skexhb0","name":"zeaawp7t7n4skexhb0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.8576146Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.8576146Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.7951275Z","primaryEndpoints":{"blob":"https://zeaawp7t7n4skexhb0.blob.core.windows.net/","queue":"https://zeaawp7t7n4skexhb0.queue.core.windows.net/","table":"https://zeaawp7t7n4skexhb0.table.core.windows.net/","file":"https://zeaawp7t7n4skexhb0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/zeaawp7t7n4skmstr0","name":"zeaawp7t7n4skmstr0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.5294154Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.5294154Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.4825090Z","primaryEndpoints":{"blob":"https://zeaawp7t7n4skmstr0.blob.core.windows.net/","queue":"https://zeaawp7t7n4skmstr0.queue.core.windows.net/","table":"https://zeaawp7t7n4skmstr0.table.core.windows.net/","file":"https://zeaawp7t7n4skmstr0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/c0zeaawp7t7n4skagntpri2","name":"c0zeaawp7t7n4skagntpri2","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.8889157Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.8889157Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.8263879Z","primaryEndpoints":{"blob":"https://c0zeaawp7t7n4skagntpri2.blob.core.windows.net/","queue":"https://c0zeaawp7t7n4skagntpri2.queue.core.windows.net/","table":"https://c0zeaawp7t7n4skagntpri2.table.core.windows.net/","file":"https://c0zeaawp7t7n4skagntpri2.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"identity":{"principalId":"4b358eca-1f6e-4da5-a90c-5cfda2b6ca83","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/amar/providers/Microsoft.Storage/storageAccounts/eastustorage1","name":"eastustorage1","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-21T02:38:33.4035294Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-21T02:38:33.4035294Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-03-21T02:38:33.3253713Z","primaryEndpoints":{"blob":"https://eastustorage1.blob.core.windows.net/","queue":"https://eastustorage1.queue.core.windows.net/","table":"https://eastustorage1.table.core.windows.net/","file":"https://eastustorage1.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroupeastus2/providers/Microsoft.Storage/storageAccounts/wilxstorageeastus2","name":"wilxstorageeastus2","type":"Microsoft.Storage/storageAccounts","location":"eastus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-30T18:32:07.3429304Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-30T18:32:07.3429304Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-30T18:32:07.2804546Z","primaryEndpoints":{"blob":"https://wilxstorageeastus2.blob.core.windows.net/","queue":"https://wilxstorageeastus2.queue.core.windows.net/","table":"https://wilxstorageeastus2.table.core.windows.net/","file":"https://wilxstorageeastus2.file.core.windows.net/"},"primaryLocation":"eastus2","statusOfPrimary":"available","secondaryLocation":"centralus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorageeastus2-secondary.blob.core.windows.net/","queue":"https://wilxstorageeastus2-secondary.queue.core.windows.net/","table":"https://wilxstorageeastus2-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgojaoj267klrvs47gnp57mu55f6yoziamdogqqs72by7ljczabahxkfmzi5mh2glk5/providers/Microsoft.Storage/storageAccounts/clitest7tkosn7vrxnjiifrm","name":"clitest7tkosn7vrxnjiifrm","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:30.8088827Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:30.8088827Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"ResolvingDns","creationTime":"2018-05-01T21:45:30.4963753Z","primaryEndpoints":{"blob":"https://clitest7tkosn7vrxnjiifrm.blob.core.windows.net/","queue":"https://clitest7tkosn7vrxnjiifrm.queue.core.windows.net/","table":"https://clitest7tkosn7vrxnjiifrm.table.core.windows.net/","file":"https://clitest7tkosn7vrxnjiifrm.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgp3j2bt5nvsedgoxpqt6xtucbamnbo7jkgrcckdigt3aclxopqxio6lxjlqrj3czo7/providers/Microsoft.Storage/storageAccounts/clitestt7lrbv35ny3lgnfak","name":"clitestt7lrbv35ny3lgnfak","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1522571Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1522571Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:17:59.2725025Z","primaryEndpoints":{"blob":"https://clitestt7lrbv35ny3lgnfak.blob.core.windows.net/","queue":"https://clitestt7lrbv35ny3lgnfak.queue.core.windows.net/","table":"https://clitestt7lrbv35ny3lgnfak.table.core.windows.net/","file":"https://clitestt7lrbv35ny3lgnfak.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vscode-spot/providers/Microsoft.Storage/storageAccounts/spot1936b9594f55526a14","name":"spot1936b9594f55526a14","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-30T04:32:25.2179795Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-30T04:32:25.2179795Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-30T04:32:25.0930004Z","primaryEndpoints":{"blob":"https://spot1936b9594f55526a14.blob.core.windows.net/","queue":"https://spot1936b9594f55526a14.queue.core.windows.net/","table":"https://spot1936b9594f55526a14.table.core.windows.net/","file":"https://spot1936b9594f55526a14.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/awilxlab6038","name":"awilxlab6038","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"8887c3df-fb11-4c4a-b5ea-fb85003cd93d"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-11T22:14:43.7809117Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-11T22:14:43.7809117Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-11T22:14:43.6871681Z","primaryEndpoints":{"blob":"https://awilxlab6038.blob.core.windows.net/","queue":"https://awilxlab6038.queue.core.windows.net/","table":"https://awilxlab6038.table.core.windows.net/","file":"https://awilxlab6038.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy985","name":"foozy985","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2460333Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2460333Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-11T22:39:05.4716715Z","primaryEndpoints":{"blob":"https://foozy985.blob.core.windows.net/","queue":"https://foozy985.queue.core.windows.net/","table":"https://foozy985.table.core.windows.net/","file":"https://foozy985.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/amar/providers/Microsoft.Storage/storageAccounts/testacc7561","name":"testacc7561","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-13T01:22:28.4626746Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-13T01:22:28.4626746Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-03-13T01:22:28.4157923Z","primaryEndpoints":{"blob":"https://testacc7561.blob.core.windows.net/","queue":"https://testacc7561.queue.core.windows.net/","table":"https://testacc7561.table.core.windows.net/","file":"https://testacc7561.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxstorage2","name":"wilxstorage2","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-16T19:43:30.0571507Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-16T19:43:30.0571507Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-16T19:43:29.9946790Z","primaryEndpoints":{"blob":"https://wilxstorage2.blob.core.windows.net/","queue":"https://wilxstorage2.queue.core.windows.net/","table":"https://wilxstorage2.table.core.windows.net/","file":"https://wilxstorage2.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorage2-secondary.blob.core.windows.net/","queue":"https://wilxstorage2-secondary.queue.core.windows.net/","table":"https://wilxstorage2-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_ZRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/foostore103","name":"foostore103","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1991330Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1991330Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-05-25T23:52:18.1234838Z","primaryEndpoints":{"blob":"https://foostore103.blob.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_ZRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/foostore102","name":"foostore102","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1835342Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1835342Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-05-25T19:32:49.5192125Z","primaryEndpoints":{"blob":"https://foostore102.blob.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitest345","name":"zitest345","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.8313291Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.8313291Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-07T21:55:13.9394493Z","primaryEndpoints":{"blob":"https://zitest345.blob.core.windows.net/","queue":"https://zitest345.queue.core.windows.net/","table":"https://zitest345.table.core.windows.net/","file":"https://zitest345.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitest","name":"zitest","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.7688032Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.7688032Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-05-03T20:07:05.353746Z","primaryEndpoints":{"blob":"https://zitest.blob.core.windows.net/","queue":"https://zitest.queue.core.windows.net/","table":"https://zitest.table.core.windows.net/","file":"https://zitest.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitest1012","name":"zitest1012","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.8001033Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.8001033Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2017-07-07T02:12:27.684591Z","primaryEndpoints":{"blob":"https://zitest1012.blob.core.windows.net/","queue":"https://zitest1012.queue.core.windows.net/","table":"https://zitest1012.table.core.windows.net/","file":"https://zitest1012.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgvnc44s5iiyknx6iehpbmjsf7y6xsqhrqvyb5opb2yr5wagkqftcqlbbpfkralo2id/providers/Microsoft.Storage/storageAccounts/clitesttc4beb6y7zcdc7zly","name":"clitesttc4beb6y7zcdc7zly","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1522571Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1522571Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:16:26.3626209Z","primaryEndpoints":{"blob":"https://clitesttc4beb6y7zcdc7zly.blob.core.windows.net/","queue":"https://clitesttc4beb6y7zcdc7zly.queue.core.windows.net/","table":"https://clitesttc4beb6y7zcdc7zly.table.core.windows.net/","file":"https://clitesttc4beb6y7zcdc7zly.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg3yzhuqlkkv4l7gq2shu6suxl6afxmnlqhzh2u225pyluz6ukscohbbgylq7s5zifg/providers/Microsoft.Storage/storageAccounts/clitestl45vwc3spozojtlf7","name":"clitestl45vwc3spozojtlf7","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:28.7932429Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:28.7932429Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:28.7151381Z","primaryEndpoints":{"blob":"https://clitestl45vwc3spozojtlf7.blob.core.windows.net/","queue":"https://clitestl45vwc3spozojtlf7.queue.core.windows.net/","table":"https://clitestl45vwc3spozojtlf7.table.core.windows.net/","file":"https://clitestl45vwc3spozojtlf7.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lmazuel-docker-machine/providers/Microsoft.Storage/storageAccounts/vhdsn51j1sdv8scmv98fmq8q","name":"vhdsn51j1sdv8scmv98fmq8q","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.3085287Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.3085287Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-03T21:43:45.5227216Z","primaryEndpoints":{"blob":"https://vhdsn51j1sdv8scmv98fmq8q.blob.core.windows.net/","queue":"https://vhdsn51j1sdv8scmv98fmq8q.queue.core.windows.net/","table":"https://vhdsn51j1sdv8scmv98fmq8q.table.core.windows.net/","file":"https://vhdsn51j1sdv8scmv98fmq8q.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy984","name":"foozy984","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2460333Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2460333Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-11T18:22:12.9346214Z","primaryEndpoints":{"blob":"https://foozy984.blob.core.windows.net/","queue":"https://foozy984.queue.core.windows.net/","table":"https://foozy984.table.core.windows.net/","file":"https://foozy984.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgzlponhuihq2f3r2ncatzpvyupukdm6ixm63jq2whzuvbuchjhov4vejrj4uspf7ju/providers/Microsoft.Storage/storageAccounts/clitestracm62rkgrryoiiig","name":"clitestracm62rkgrryoiiig","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T16:57:00.9900481Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T16:57:00.9900481Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T16:57:00.9119456Z","primaryEndpoints":{"blob":"https://clitestracm62rkgrryoiiig.blob.core.windows.net/","queue":"https://clitestracm62rkgrryoiiig.queue.core.windows.net/","table":"https://clitestracm62rkgrryoiiig.table.core.windows.net/","file":"https://clitestracm62rkgrryoiiig.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgaz3x2qjeu5xahclts7r7bqdgy4cuuxwsjuskjp2yklftsa2vvhsfnv32dzawwhxj4/providers/Microsoft.Storage/storageAccounts/clitestzsvhxykinf3qwcf25","name":"clitestzsvhxykinf3qwcf25","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:27.3088492Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:27.3088492Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:27.1057047Z","primaryEndpoints":{"blob":"https://clitestzsvhxykinf3qwcf25.blob.core.windows.net/","queue":"https://clitestzsvhxykinf3qwcf25.queue.core.windows.net/","table":"https://clitestzsvhxykinf3qwcf25.table.core.windows.net/","file":"https://clitestzsvhxykinf3qwcf25.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/testacc209","name":"testacc209","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.3156846Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.3156846Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-01-26T19:04:16.5466637Z","primaryEndpoints":{"blob":"https://testacc209.blob.core.windows.net/","queue":"https://testacc209.queue.core.windows.net/","table":"https://testacc209.table.core.windows.net/","file":"https://testacc209.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgi5u2fwbpqi6kc6yo2odysgg2zhkd7hteysctgc2uhogvocg4hdpi4dx6o7zo7j4z5/providers/Microsoft.Storage/storageAccounts/clitestmym7gychmllliz4j3","name":"clitestmym7gychmllliz4j3","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:26.3557297Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:26.3557297Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:26.0744949Z","primaryEndpoints":{"blob":"https://clitestmym7gychmllliz4j3.blob.core.windows.net/","queue":"https://clitestmym7gychmllliz4j3.queue.core.windows.net/","table":"https://clitestmym7gychmllliz4j3.table.core.windows.net/","file":"https://clitestmym7gychmllliz4j3.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cloud-shell-storage-westus/providers/Microsoft.Storage/storageAccounts/cs400977cdb163fx435fx9c3","name":"cs400977cdb163fx435fx9c3","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"ms-resource-usage":"azure-cloud-shell"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-10-31T20:15:56.3292318Z","primaryEndpoints":{"blob":"https://cs400977cdb163fx435fx9c3.blob.core.windows.net/","queue":"https://cs400977cdb163fx435fx9c3.queue.core.windows.net/","table":"https://cs400977cdb163fx435fx9c3.table.core.windows.net/","file":"https://cs400977cdb163fx435fx9c3.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgwgjgodisz2vcsd55l3bixhutc5fbnyeyjuyatvgcv5k7sfzmxd6q2w4krnuq53zb7/providers/Microsoft.Storage/storageAccounts/clitestwwftaylvfj7kendae","name":"clitestwwftaylvfj7kendae","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:22:09.5983536Z","primaryEndpoints":{"blob":"https://clitestwwftaylvfj7kendae.blob.core.windows.net/","queue":"https://clitestwwftaylvfj7kendae.queue.core.windows.net/","table":"https://clitestwwftaylvfj7kendae.table.core.windows.net/","file":"https://clitestwwftaylvfj7kendae.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ziptxtdepl51/providers/Microsoft.Storage/storageAccounts/36y3ij42opovcstandardsa","name":"36y3ij42opovcstandardsa","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1054140Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1054140Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-15T01:53:43.4548265Z","primaryEndpoints":{"blob":"https://36y3ij42opovcstandardsa.blob.core.windows.net/","queue":"https://36y3ij42opovcstandardsa.queue.core.windows.net/","table":"https://36y3ij42opovcstandardsa.table.core.windows.net/","file":"https://36y3ij42opovcstandardsa.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgaungorwypaguq2ueh77vyexw7bdmu72z7vjoql6tnofssibb7u7bf2oex6iqg6jzz/providers/Microsoft.Storage/storageAccounts/clitestydki2n33vwyrmdoub","name":"clitestydki2n33vwyrmdoub","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:31.1057749Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:31.1057749Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"ResolvingDns","creationTime":"2018-05-01T21:45:30.8713726Z","primaryEndpoints":{"blob":"https://clitestydki2n33vwyrmdoub.blob.core.windows.net/","queue":"https://clitestydki2n33vwyrmdoub.queue.core.windows.net/","table":"https://clitestydki2n33vwyrmdoub.table.core.windows.net/","file":"https://clitestydki2n33vwyrmdoub.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://clitestydki2n33vwyrmdoub-secondary.blob.core.windows.net/","queue":"https://clitestydki2n33vwyrmdoub-secondary.queue.core.windows.net/","table":"https://clitestydki2n33vwyrmdoub-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitestb21","name":"zitestb21","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0656866Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0656866Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-08-23T20:10:50.2990885Z","primaryEndpoints":{"blob":"https://zitestb21.blob.core.windows.net/","queue":"https://zitestb21.queue.core.windows.net/","table":"https://zitestb21.table.core.windows.net/","file":"https://zitestb21.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy891","name":"foozy891","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2147571Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2147571Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-08T00:35:23.7925542Z","primaryEndpoints":{"blob":"https://foozy891.blob.core.windows.net/","queue":"https://foozy891.queue.core.windows.net/","table":"https://foozy891.table.core.windows.net/","file":"https://foozy891.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgh73m2h6rniak5bbqyrad43luxpotdofmlndof5secsxxee53kwocysqnklf4bn7yd/providers/Microsoft.Storage/storageAccounts/clitesttohpa6d65i7atctbm","name":"clitesttohpa6d65i7atctbm","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:05:15.5574981Z","primaryEndpoints":{"blob":"https://clitesttohpa6d65i7atctbm.blob.core.windows.net/","queue":"https://clitesttohpa6d65i7atctbm.queue.core.windows.net/","table":"https://clitesttohpa6d65i7atctbm.table.core.windows.net/","file":"https://clitesttohpa6d65i7atctbm.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgzgkjvgqueh6ylbuj5ktuxx6m6njxoabzpow65vpyumzmtjctna2jgz5lg2ggslj7v/providers/Microsoft.Storage/storageAccounts/clitestncgrg5ytsvot5spgf","name":"clitestncgrg5ytsvot5spgf","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:27.7307380Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:27.7307380Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:27.5276141Z","primaryEndpoints":{"blob":"https://clitestncgrg5ytsvot5spgf.blob.core.windows.net/","queue":"https://clitestncgrg5ytsvot5spgf.queue.core.windows.net/","table":"https://clitestncgrg5ytsvot5spgf.table.core.windows.net/","file":"https://clitestncgrg5ytsvot5spgf.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ZiTest/providers/Microsoft.Storage/storageAccounts/ztesty3456","name":"ztesty3456","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-13T01:01:13.5308331Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-13T01:01:13.5308331Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-01-13T01:01:13.4995571Z","primaryEndpoints":{"blob":"https://ztesty3456.blob.core.windows.net/","queue":"https://ztesty3456.queue.core.windows.net/","table":"https://ztesty3456.table.core.windows.net/","file":"https://ztesty3456.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgpf2denbj6axv7zzgne46nwonr7nj5agy2o2boyvdwim2tk3ha36wt53og4bdbazyl/providers/Microsoft.Storage/storageAccounts/clitestkmwx76vctofb4mjsq","name":"clitestkmwx76vctofb4mjsq","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:26.6057257Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:26.6057257Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:26.4651043Z","primaryEndpoints":{"blob":"https://clitestkmwx76vctofb4mjsq.blob.core.windows.net/","queue":"https://clitestkmwx76vctofb4mjsq.queue.core.windows.net/","table":"https://clitestkmwx76vctofb4mjsq.table.core.windows.net/","file":"https://clitestkmwx76vctofb4mjsq.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:25.8713651Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:25.8713651Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:25.6526131Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/some-unique-rg-name-second/providers/Microsoft.Storage/storageAccounts/tianosatest79","name":"tianosatest79","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:46.6281789Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:46.6281789Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-05-24T23:16:33.9028352Z","primaryEndpoints":{"blob":"https://tianosatest79.blob.core.windows.net/","queue":"https://tianosatest79.queue.core.windows.net/","table":"https://tianosatest79.table.core.windows.net/","file":"https://tianosatest79.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy894","name":"foozy894","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2303818Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2303818Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-08T00:39:03.09634Z","primaryEndpoints":{"blob":"https://foozy894.blob.core.windows.net/","queue":"https://foozy894.queue.core.windows.net/","table":"https://foozy894.table.core.windows.net/","file":"https://foozy894.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg7175/providers/Microsoft.Storage/storageAccounts/testacc7447","name":"testacc7447","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4719947Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4719947Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-21T19:13:51.907911Z","primaryEndpoints":{"blob":"https://testacc7447.blob.core.windows.net/","queue":"https://testacc7447.queue.core.windows.net/","table":"https://testacc7447.table.core.windows.net/","file":"https://testacc7447.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitesta21","name":"zitesta21","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0344305Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0344305Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-08-23T20:01:18.8418933Z","primaryEndpoints":{"blob":"https://zitesta21.blob.core.windows.net/","queue":"https://zitesta21.queue.core.windows.net/","table":"https://zitesta21.table.core.windows.net/","file":"https://zitesta21.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgcmxzjqe2ev2tarnzledhk4m7mk5dsnxznyqtyvx7dixjnjgqs4h5dh37jqoyzj5l5/providers/Microsoft.Storage/storageAccounts/cliteste7bmlfupz34m23jnc","name":"cliteste7bmlfupz34m23jnc","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1366608Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1366608Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-11T00:17:56.913505Z","primaryEndpoints":{"blob":"https://cliteste7bmlfupz34m23jnc.blob.core.windows.net/","queue":"https://cliteste7bmlfupz34m23jnc.queue.core.windows.net/","table":"https://cliteste7bmlfupz34m23jnc.table.core.windows.net/","file":"https://cliteste7bmlfupz34m23jnc.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg9639/providers/Microsoft.Storage/storageAccounts/testacc3070","name":"testacc3070","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.3469905Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.3469905Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-21T18:42:53.9505428Z","primaryEndpoints":{"blob":"https://testacc3070.blob.core.windows.net/","queue":"https://testacc3070.queue.core.windows.net/","table":"https://testacc3070.table.core.windows.net/","file":"https://testacc3070.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg52ctd4ojyg3ymklacmvjr36nyepy2y5j2nq62diomibfwqid5v3esztgp2jcx74kv/providers/Microsoft.Storage/storageAccounts/clitestfu622ozd5q5z6e7zv","name":"clitestfu622ozd5q5z6e7zv","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:30.0901281Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:30.0901281Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"ResolvingDns","creationTime":"2018-05-01T21:45:29.8557657Z","primaryEndpoints":{"blob":"https://clitestfu622ozd5q5z6e7zv.blob.core.windows.net/","queue":"https://clitestfu622ozd5q5z6e7zv.queue.core.windows.net/","table":"https://clitestfu622ozd5q5z6e7zv.table.core.windows.net/","file":"https://clitestfu622ozd5q5z6e7zv.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://clitestfu622ozd5q5z6e7zv-secondary.blob.core.windows.net/","queue":"https://clitestfu622ozd5q5z6e7zv-secondary.queue.core.windows.net/","table":"https://clitestfu622ozd5q5z6e7zv-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgvxzuui3qnyb3zab5viv7a6bxgimxz4k4iz4mgbw7l4js7n6aihljep4uihumvu5vg/providers/Microsoft.Storage/storageAccounts/clitestmkl7mkwejyngxmxpm","name":"clitestmkl7mkwejyngxmxpm","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:29.0276324Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:29.0276324Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:28.8244943Z","primaryEndpoints":{"blob":"https://clitestmkl7mkwejyngxmxpm.blob.core.windows.net/","queue":"https://clitestmkl7mkwejyngxmxpm.queue.core.windows.net/","table":"https://clitestmkl7mkwejyngxmxpm.table.core.windows.net/","file":"https://clitestmkl7mkwejyngxmxpm.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitesty21","name":"zitesty21","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0969536Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0969536Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-08-23T19:55:37.1159138Z","primaryEndpoints":{"blob":"https://zitesty21.blob.core.windows.net/","queue":"https://zitesty21.queue.core.windows.net/","table":"https://zitesty21.table.core.windows.net/","file":"https://zitesty21.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg3787/providers/Microsoft.Storage/storageAccounts/testacc5739","name":"testacc5739","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4406899Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4406899Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-21T02:06:37.3496304Z","primaryEndpoints":{"blob":"https://testacc5739.blob.core.windows.net/","queue":"https://testacc5739.queue.core.windows.net/","table":"https://testacc5739.table.core.windows.net/","file":"https://testacc5739.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg8761/providers/Microsoft.Storage/storageAccounts/testacc3915","name":"testacc3915","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4094279Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4094279Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-21T01:35:41.2354283Z","primaryEndpoints":{"blob":"https://testacc3915.blob.core.windows.net/","queue":"https://testacc3915.queue.core.windows.net/","table":"https://testacc3915.table.core.windows.net/","file":"https://testacc3915.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy89","name":"foozy89","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1991330Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1991330Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-07T22:15:52.1441975Z","primaryEndpoints":{"blob":"https://foozy89.blob.core.windows.net/","queue":"https://foozy89.queue.core.windows.net/","table":"https://foozy89.table.core.windows.net/","file":"https://foozy89.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxgroupdiag169","name":"wilxgroupdiag169","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-29T22:34:01.9561177Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-29T22:34:01.9561177Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-29T22:34:01.8935895Z","primaryEndpoints":{"blob":"https://wilxgroupdiag169.blob.core.windows.net/","queue":"https://wilxgroupdiag169.queue.core.windows.net/","table":"https://wilxgroupdiag169.table.core.windows.net/","file":"https://wilxgroupdiag169.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgg4iadnthjykpxrgud5gxju5rfqzthb6uvqfcm3t7cztqm5v2yyjbfuusommo4mtpv/providers/Microsoft.Storage/storageAccounts/clitestr7jsatxwbv2sefsvr","name":"clitestr7jsatxwbv2sefsvr","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:28.2151132Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:28.2151132Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:28.1369842Z","primaryEndpoints":{"blob":"https://clitestr7jsatxwbv2sefsvr.blob.core.windows.net/","queue":"https://clitestr7jsatxwbv2sefsvr.queue.core.windows.net/","table":"https://clitestr7jsatxwbv2sefsvr.table.core.windows.net/","file":"https://clitestr7jsatxwbv2sefsvr.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Premium_LRS","tier":"Premium"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxgroupdisks899","name":"wilxgroupdisks899","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-11T23:26:25.3653337Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-11T23:26:25.3653337Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-11T23:26:25.2872072Z","primaryEndpoints":{"blob":"https://wilxgroupdisks899.blob.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg6sqzt5phdo5viklk7dquteui74rn3vn2tioolq5dsdnz2znxn6fdwaa47uyu2i4eg/providers/Microsoft.Storage/storageAccounts/clitestgjx5vdkyf74377ieg","name":"clitestgjx5vdkyf74377ieg","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1366608Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1366608Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:09:48.4001597Z","primaryEndpoints":{"blob":"https://clitestgjx5vdkyf74377ieg.blob.core.windows.net/","queue":"https://clitestgjx5vdkyf74377ieg.queue.core.windows.net/","table":"https://clitestgjx5vdkyf74377ieg.table.core.windows.net/","file":"https://clitestgjx5vdkyf74377ieg.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxstorage","name":"wilxstorage","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-15T17:47:45.4399402Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-15T17:47:45.4399402Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-15T17:47:45.3930700Z","primaryEndpoints":{"blob":"https://wilxstorage.blob.core.windows.net/","queue":"https://wilxstorage.queue.core.windows.net/","table":"https://wilxstorage.table.core.windows.net/","file":"https://wilxstorage.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorage-secondary.blob.core.windows.net/","queue":"https://wilxstorage-secondary.queue.core.windows.net/","table":"https://wilxstorage-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/foostore12978","name":"foostore12978","type":"Microsoft.Storage/storageAccounts","location":"westeurope","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-22T22:18:07.1937355Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-22T22:18:07.1937355Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-04-29T06:55:06.4412159Z","primaryEndpoints":{"blob":"https://foostore12978.blob.core.windows.net/","queue":"https://foostore12978.queue.core.windows.net/","table":"https://foostore12978.table.core.windows.net/","file":"https://foostore12978.file.core.windows.net/"},"primaryLocation":"westeurope","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"BlobStorage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/t-chwong/providers/Microsoft.Storage/storageAccounts/tchwong","name":"tchwong","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-01T18:07:07.4006066Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-01T18:07:07.4006066Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-03-01T18:07:07.3381076Z","primaryEndpoints":{"blob":"https://tchwong.blob.core.windows.net/","table":"https://tchwong.table.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitestlab1/providers/Microsoft.Storage/storageAccounts/acliautomationlab8902","name":"acliautomationlab8902","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{"hidden-DevTestLabs-LabUId":"ca9ec547-32c5-422d-b3d2-25906ed71959"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T16:51:47.2662871Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T16:51:47.2662871Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T16:51:47.2194106Z","primaryEndpoints":{"blob":"https://acliautomationlab8902.blob.core.windows.net/","queue":"https://acliautomationlab8902.queue.core.windows.net/","table":"https://acliautomationlab8902.table.core.windows.net/","file":"https://acliautomationlab8902.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"identity":{"principalId":"ebc8557b-5159-4db6-8b04-699759875130","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgls6pde2luhubksnkjxebnrqthsdi6dcfpxcrhlmgnvdkkimk6b2usub6ehq3ocrsm/providers/Microsoft.Storage/storageAccounts/clitesttrevle6ezqkjtfdl3","name":"clitesttrevle6ezqkjtfdl3","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-14T22:32:56.5552622Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-14T22:32:56.5552622Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-14T22:32:56.5084099Z","primaryEndpoints":{"blob":"https://clitesttrevle6ezqkjtfdl3.blob.core.windows.net/","queue":"https://clitesttrevle6ezqkjtfdl3.queue.core.windows.net/","table":"https://clitesttrevle6ezqkjtfdl3.table.core.windows.net/","file":"https://clitesttrevle6ezqkjtfdl3.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lmazuel-testfunction-msi/providers/Microsoft.Storage/storageAccounts/lmazueltestfuncbbd8","name":"lmazueltestfuncbbd8","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1691771Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1691771Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-10-11T19:03:26.3781645Z","primaryEndpoints":{"blob":"https://lmazueltestfuncbbd8.blob.core.windows.net/","queue":"https://lmazueltestfuncbbd8.queue.core.windows.net/","table":"https://lmazueltestfuncbbd8.table.core.windows.net/","file":"https://lmazueltestfuncbbd8.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cloud-shell-storage-southcentralus/providers/Microsoft.Storage/storageAccounts/cs700977cdb163fx435fx9c3","name":"cs700977cdb163fx435fx9c3","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{"ms-resource-usage":"azure-cloud-shell"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1691771Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1691771Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-08-09T21:59:02.7061936Z","primaryEndpoints":{"blob":"https://cs700977cdb163fx435fx9c3.blob.core.windows.net/","queue":"https://cs700977cdb163fx435fx9c3.queue.core.windows.net/","table":"https://cs700977cdb163fx435fx9c3.table.core.windows.net/","file":"https://cs700977cdb163fx435fx9c3.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/t-chwong/providers/Microsoft.Storage/storageAccounts/tchwongdiag300","name":"tchwongdiag300","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-20T18:15:54.9483325Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-20T18:15:54.9483325Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-20T18:15:54.8858351Z","primaryEndpoints":{"blob":"https://tchwongdiag300.blob.core.windows.net/","queue":"https://tchwongdiag300.queue.core.windows.net/","table":"https://tchwongdiag300.table.core.windows.net/","file":"https://tchwongdiag300.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefunctions-southcentralus/providers/Microsoft.Storage/storageAccounts/azurefunctions2e2e624d","name":"azurefunctions2e2e624d","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1535349Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1535349Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-22T21:04:32.5702152Z","primaryEndpoints":{"blob":"https://azurefunctions2e2e624d.blob.core.windows.net/","queue":"https://azurefunctions2e2e624d.queue.core.windows.net/","table":"https://azurefunctions2e2e624d.table.core.windows.net/","file":"https://azurefunctions2e2e624d.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available","secondaryLocation":"northcentralus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup2/providers/Microsoft.Storage/storageAccounts/wilxstorage0","name":"wilxstorage0","type":"Microsoft.Storage/storageAccounts","location":"westus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-13T01:05:28.4648959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-13T01:05:28.4648959Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-04-13T01:05:28.4023820Z","primaryEndpoints":{"blob":"https://wilxstorage0.blob.core.windows.net/","queue":"https://wilxstorage0.queue.core.windows.net/","table":"https://wilxstorage0.table.core.windows.net/","file":"https://wilxstorage0.file.core.windows.net/"},"primaryLocation":"westus2","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgmr6jo34yofyafj3n6gjbhrgmrd6pwgguthc2u235qfle6y6ztyzrlkuqn544s7cop/providers/Microsoft.Storage/storageAccounts/clitestnlmd52jlcmr4ce7b4","name":"clitestnlmd52jlcmr4ce7b4","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T20:14:07.3500611Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T20:14:07.3500611Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T20:14:07.3188286Z","primaryEndpoints":{"blob":"https://clitestnlmd52jlcmr4ce7b4.blob.core.windows.net/","queue":"https://clitestnlmd52jlcmr4ce7b4.queue.core.windows.net/","table":"https://clitestnlmd52jlcmr4ce7b4.table.core.windows.net/","file":"https://clitestnlmd52jlcmr4ce7b4.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup3/providers/Microsoft.Storage/storageAccounts/wilxstorageworm","name":"wilxstorageworm","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-13T22:36:53.1534839Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-13T22:36:53.1534839Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-13T22:36:53.0909769Z","primaryEndpoints":{"blob":"https://wilxstorageworm.blob.core.windows.net/","queue":"https://wilxstorageworm.queue.core.windows.net/","table":"https://wilxstorageworm.table.core.windows.net/","file":"https://wilxstorageworm.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available","secondaryLocation":"centraluseuap","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorageworm-secondary.blob.core.windows.net/","queue":"https://wilxstorageworm-secondary.queue.core.windows.net/","table":"https://wilxstorageworm-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg326oxnqqn33y3n42vz6x5xol5rvvw3z4o6tladwwtkmcntnsxhhxxtddtrxwm2edj/providers/Microsoft.Storage/storageAccounts/clitestjwzkdsfuou3niutbd","name":"clitestjwzkdsfuou3niutbd","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T20:07:33.1021018Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T20:07:33.1021018Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T20:07:33.0552270Z","primaryEndpoints":{"blob":"https://clitestjwzkdsfuou3niutbd.blob.core.windows.net/","queue":"https://clitestjwzkdsfuou3niutbd.queue.core.windows.net/","table":"https://clitestjwzkdsfuou3niutbd.table.core.windows.net/","file":"https://clitestjwzkdsfuou3niutbd.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgldagdmcl4pklmwzmr3wftx2kidhw7johz6d7tl6m7raetzzfhpqhrfffu5vwqtfxo/providers/Microsoft.Storage/storageAccounts/clitestt6pqb7xneswrh2sp6","name":"clitestt6pqb7xneswrh2sp6","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T17:51:14.8730435Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T17:51:14.8730435Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T17:51:14.8105336Z","primaryEndpoints":{"blob":"https://clitestt6pqb7xneswrh2sp6.blob.core.windows.net/","queue":"https://clitestt6pqb7xneswrh2sp6.queue.core.windows.net/","table":"https://clitestt6pqb7xneswrh2sp6.table.core.windows.net/","file":"https://clitestt6pqb7xneswrh2sp6.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgf3er5m4irbxsxhyil42jxq3t5ehzphmdzn2gortdlrzyw4i6tlgswx2xrcgldp6oh/providers/Microsoft.Storage/storageAccounts/clitestpabilv4yd6qxvguml","name":"clitestpabilv4yd6qxvguml","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T19:20:22.2758006Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T19:20:22.2758006Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T19:20:22.2445526Z","primaryEndpoints":{"blob":"https://clitestpabilv4yd6qxvguml.blob.core.windows.net/","queue":"https://clitestpabilv4yd6qxvguml.queue.core.windows.net/","table":"https://clitestpabilv4yd6qxvguml.table.core.windows.net/","file":"https://clitestpabilv4yd6qxvguml.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgwxiadyatfxsixayqfinia7ybjwo5cfoyw65qpuna3alx3x2diwukx4tkcpwir2mbq/providers/Microsoft.Storage/storageAccounts/clitesta2lvllqz23rgasyf7","name":"clitesta2lvllqz23rgasyf7","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T17:57:25.6818153Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T17:57:25.6818153Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T17:57:25.6193002Z","primaryEndpoints":{"blob":"https://clitesta2lvllqz23rgasyf7.blob.core.windows.net/","queue":"https://clitesta2lvllqz23rgasyf7.queue.core.windows.net/","table":"https://clitesta2lvllqz23rgasyf7.table.core.windows.net/","file":"https://clitesta2lvllqz23rgasyf7.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgoo2qxqtbb56w7uujqzhodrozdh7fxg5wxscql4ndybxkardgqzqvheltadic2zoxf/providers/Microsoft.Storage/storageAccounts/clitestfyixx74gs3loj3isf","name":"clitestfyixx74gs3loj3isf","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T20:34:26.6293927Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T20:34:26.6293927Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T20:34:26.5668681Z","primaryEndpoints":{"blob":"https://clitestfyixx74gs3loj3isf.blob.core.windows.net/","queue":"https://clitestfyixx74gs3loj3isf.queue.core.windows.net/","table":"https://clitestfyixx74gs3loj3isf.table.core.windows.net/","file":"https://clitestfyixx74gs3loj3isf.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgd5ygu6mbq43qw57ncgznekmhwaqlrowjc6dggyk2h6cfwioigvtt3bg7ayqckcwvk/providers/Microsoft.Storage/storageAccounts/clitestixsogcl5p5af5w2p3","name":"clitestixsogcl5p5af5w2p3","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T18:00:02.2397791Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T18:00:02.2397791Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T18:00:02.2087326Z","primaryEndpoints":{"blob":"https://clitestixsogcl5p5af5w2p3.blob.core.windows.net/","queue":"https://clitestixsogcl5p5af5w2p3.queue.core.windows.net/","table":"https://clitestixsogcl5p5af5w2p3.table.core.windows.net/","file":"https://clitestixsogcl5p5af5w2p3.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup3/providers/Microsoft.Storage/storageAccounts/wilxstorageblah","name":"wilxstorageblah","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-17T20:06:51.4259719Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-17T20:06:51.4259719Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-17T20:06:51.3790974Z","primaryEndpoints":{"blob":"https://wilxstorageblah.blob.core.windows.net/","queue":"https://wilxstorageblah.queue.core.windows.net/","table":"https://wilxstorageblah.table.core.windows.net/","file":"https://wilxstorageblah.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available","secondaryLocation":"centraluseuap","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorageblah-secondary.blob.core.windows.net/","queue":"https://wilxstorageblah-secondary.queue.core.windows.net/","table":"https://wilxstorageblah-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgeyg7p46zydk24opv23uowejjybhvp2nqcyqpnmknbs7o3w5c3tocuuygkogbvxz5f/providers/Microsoft.Storage/storageAccounts/clitestcrdofae6jvibomf2w","name":"clitestcrdofae6jvibomf2w","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-20T01:19:55.8214506Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-20T01:19:55.8214506Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-20T01:19:55.7120798Z","primaryEndpoints":{"blob":"https://clitestcrdofae6jvibomf2w.blob.core.windows.net/","queue":"https://clitestcrdofae6jvibomf2w.queue.core.windows.net/","table":"https://clitestcrdofae6jvibomf2w.table.core.windows.net/","file":"https://clitestcrdofae6jvibomf2w.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgeblmtd6pv6car44ga6qwvicwjyuxydhhkaharam4nad6uekgqgm2uiisw7v4a3czx/providers/Microsoft.Storage/storageAccounts/clitestcdx4bwlcvgviotc2p","name":"clitestcdx4bwlcvgviotc2p","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T22:26:49.0369320Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T22:26:49.0369320Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T22:26:48.9744081Z","primaryEndpoints":{"blob":"https://clitestcdx4bwlcvgviotc2p.blob.core.windows.net/","queue":"https://clitestcdx4bwlcvgviotc2p.queue.core.windows.net/","table":"https://clitestcdx4bwlcvgviotc2p.table.core.windows.net/","file":"https://clitestcdx4bwlcvgviotc2p.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}}]}'}
headers:
cache-control: [no-cache]
- content-length: ['112844']
+ content-length: ['97462']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 21:34:42 GMT']
+ date: ['Tue, 01 May 2018 21:45:46 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
vary: [Accept-Encoding]
- x-ms-original-request-ids: [c85fabf5-0de5-42a8-a247-53b4577cbdf8, 677dd49b-5673-419e-bd9f-f9561d778358,
- 0653d2e6-0f7d-4288-be2e-61326548386d, 110703bf-8681-4bd3-a54d-56ade7539107,
- 37aca02e-507c-4085-89e9-faba778c1ce6]
+ x-content-type-options: [nosniff]
+ x-ms-original-request-ids: [400f9403-e5f6-4d40-b54d-a8aae7192afa, 8bac4d5c-7584-4404-84a4-778348381883,
+ 4d3468d9-85e4-4ffd-a61e-19dfb6034ce0, d2a889bb-f2b1-41bc-ad2f-4387bfb944e3,
+ 30157c0f-ad4b-4c0d-b00f-fe99e47d72dc, bfc07f5d-948d-4185-9b87-08514087ae0e,
+ c8991b8b-d539-4c43-a527-dba2be4efb47]
status: {code: 200, message: OK}
- request:
body: null
@@ -152,17 +159,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"J5jUEDgfRpsBRD+1YMqix8HkQTeQYw3cNMCovEFGuVu5wjlKg18YgmyE7tgz+6xWbi7CHfu8xeaukkBWNKLEDg==","permissions":"FULL"},{"keyName":"key2","value":"KmnoycxJZ2GyAcmyDuqCtNX4L6fvt/ZibesD3WBz+rOmAXkPJ4HqQJ+d8K485TFTHSKCoJ/vAWRO3xJTzcuoFQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"94uEIpJdQoFGvUpLq172W0WoJBW3KeymBQWjNIBcr123RxLVfRRVSCUUonj7bzAKTUI/gxPz4pB63bh6nuFp2w==","permissions":"FULL"},{"keyName":"key2","value":"K2uoQjVDL7nTil9ce1C8lxWta/FPE/5gqD/CL40AkFzidAFKmgam6IwToKaMYrXfEVywTfRKAwUflstPQEjwyQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 21:34:42 GMT']
+ date: ['Tue, 01 May 2018 21:45:46 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -170,7 +177,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -182,8 +190,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -192,11 +200,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 21:34:42 GMT']
+ date: ['Tue, 01 May 2018 21:45:46 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdUMlNON0szWkpTVzdIWVFHMldSSTVHNUxKQ1RBQVBZVU5RWHw2RUI5RUM5OEM0RkM3RjUwLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdWSFZLWkpZUUVDU1JGQ0pLMjRRQUJOR0RTNkwyUzdBR0lQUnxGQzNCREU0RDQyQ0MzMzg4LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
+ x-content-type-options: [nosniff]
x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account.yaml
index d0dcffcf427..fc64e9493e6 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:47Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:47Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1183']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:00 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/0e3526e2-17c0-4402-9dd6-30eab4048d67?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/581bfbcc-2d7d-4095-89c4-5d546894db13?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/0e3526e2-17c0-4402-9dd6-30eab4048d67?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/581bfbcc-2d7d-4095-89c4-5d546894db13?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:17 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/0e3526e2-17c0-4402-9dd6-30eab4048d67?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/0e3526e2-17c0-4402-9dd6-30eab4048d67?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:35 GMT']
+ date: ['Tue, 01 May 2018 21:46:06 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: 'b''{"name": "cli000002", "type": "Microsoft.Storage/storageAccounts"}'''
@@ -121,25 +98,26 @@ interactions:
Content-Length: ['81']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/checkNameAvailability?api-version=2017-10-01
response:
- body: {string: '{"message":"The storage account named cli000002 is already taken.","nameAvailable":false,"reason":"AlreadyExists"}
-
- '}
+ body: {string: '{"nameAvailable":false,"reason":"AlreadyExists","message":"The
+ storage account named cli000002 is already taken."}'}
headers:
cache-control: [no-cache]
- content-length: ['130']
+ content-length: ['129']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:37 GMT']
+ date: ['Tue, 01 May 2018 21:46:08 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0]
+ server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
+ Microsoft-HTTPAPI/2.0']
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -150,17 +128,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts?api-version=2017-10-01
response:
- body: {string: '{"value":[{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}]}'}
+ body: {string: '{"value":[{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}]}'}
headers:
cache-control: [no-cache]
content-length: ['1243']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:37 GMT']
+ date: ['Tue, 01 May 2018 21:46:08 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -168,6 +146,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -178,17 +157,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:38 GMT']
+ date: ['Tue, 01 May 2018 21:46:09 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -196,6 +175,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -207,17 +187,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"ruaUMgyUOuxqdbOBlD7DS5qLiONImENw2MsjpGt3c3Rs0EEBxJl8J6xZfiORH40iUV9NVv7xtpOZNgVE9Geggg==","permissions":"FULL"},{"keyName":"key2","value":"8AhVR0hl97YRYDDs1V38HVAIbCb1PVdyT6cZAR0k1ZCzFq26qeUe4Cp9eZNJMyTxzrPUqafhizIjXWKyvC+UCQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"T71EfEyU6KGnY/hliBId6+qsi6a1ZDQCQh8bvoog/YurI/hmyXYNtzq594OdPK8WnobRNFfzWJCnLIdslt2/8A==","permissions":"FULL"},{"keyName":"key2","value":"Ko/+WC1OwMLOXzNX/zpSdM7UyRSkCoo2Id+sv66o4kDvUZutDMu313YlclEGg+dRdaEF7IXLDwB4V6HG7FrA8g==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:38 GMT']
+ date: ['Tue, 01 May 2018 21:46:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -225,7 +205,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1189']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -236,17 +217,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:39 GMT']
+ date: ['Tue, 01 May 2018 21:46:09 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -254,6 +235,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "tags": {"foo": "bar", "cat": ""}, "properties":
@@ -269,17 +251,17 @@ interactions:
Content-Length: ['349']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"foo":"bar","cat":""},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"foo":"bar","cat":""},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1251']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:39 GMT']
+ date: ['Tue, 01 May 2018 21:46:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -287,7 +269,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1181']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -298,17 +281,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"foo":"bar","cat":""},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"foo":"bar","cat":""},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1251']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:40 GMT']
+ date: ['Tue, 01 May 2018 21:46:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -316,6 +299,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: '{"sku": {"name": "Standard_GRS"}, "tags": {}, "properties": {"encryption":
@@ -331,17 +315,17 @@ interactions:
Content-Length: ['326']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:41 GMT']
+ date: ['Tue, 01 May 2018 21:46:11 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -349,7 +333,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1195']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
@@ -360,17 +345,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:41 GMT']
+ date: ['Tue, 01 May 2018 21:46:12 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -378,6 +363,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: '{"sku": {"name": "Standard_GRS"}, "tags": {"test": "success"}, "properties":
@@ -393,17 +379,17 @@ interactions:
Content-Length: ['343']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"test":"success"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:00.9372089Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:00.8903104Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"test":"success"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:50.0435368Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:49.5279899Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1247']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:42 GMT']
+ date: ['Tue, 01 May 2018 21:46:13 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -411,7 +397,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1187']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -423,7 +410,7 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
@@ -433,13 +420,14 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:44 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 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-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: 'b''{"name": "cli000002", "type": "Microsoft.Storage/storageAccounts"}'''
@@ -451,25 +439,25 @@ interactions:
Content-Length: ['81']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/checkNameAvailability?api-version=2017-10-01
response:
- body: {string: '{"nameAvailable":true}
-
- '}
+ body: {string: '{"nameAvailable":true}'}
headers:
cache-control: [no-cache]
- content-length: ['23']
+ content-length: ['22']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:44 GMT']
+ date: ['Tue, 01 May 2018 21:46:15 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0]
+ server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
+ Microsoft-HTTPAPI/2.0']
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -481,8 +469,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -491,11 +479,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:46 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdZWVhUR05GMk9XRVA1VEg3RVdCQURLUDNKUEZTSUhKQVdGRnxDQTZCMDVEMjdCQ0Y2RDcwLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdaVktMTFlUN05JVElCQTNQWFRXVlBIR1BUUkU0WVRXUzdTRnwxOTZCRjcxNTg0RTVDRjcyLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1181']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account_v2.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account_v2.yaml
index 5858821bd59..dd5fabbf40a 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account_v2.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account_v2.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "southcentralus", "tags": {"use": "az-test"}}'
+ body: '{"location": "southcentralus", "tags": {"product": "azurecli", "cause":
+ "automation", "date": "2018-05-01T21:46:16Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['58']
+ Content-Length: ['118']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:46:16Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:47 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1189']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_RAGRS"}, "kind": "StorageV2", "location": "southcentralus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['137']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:48 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/0967b4da-f47a-46a1-be3a-51abbd85432d?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/9008c892-6042-487c-9297-aa126dbdd3a3?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1191']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1194']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/0967b4da-f47a-46a1-be3a-51abbd85432d?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/9008c892-6042-487c-9297-aa126dbdd3a3?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:48.6603755Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:48.6603755Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:48.6134706Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available","secondaryLocation":"northcentralus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://cli000002-secondary.blob.core.windows.net/","queue":"https://cli000002-secondary.queue.core.windows.net/","table":"https://cli000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:46:18.9026126Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:46:18.9026126Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-05-01T21:46:18.8245022Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available","secondaryLocation":"northcentralus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://cli000002-secondary.blob.core.windows.net/","queue":"https://cli000002-secondary.queue.core.windows.net/","table":"https://cli000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1591']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:11:06 GMT']
+ date: ['Tue, 01 May 2018 21:46:36 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: 'b''{"name": "cli000002", "type": "Microsoft.Storage/storageAccounts"}'''
@@ -94,25 +98,26 @@ interactions:
Content-Length: ['81']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/checkNameAvailability?api-version=2017-10-01
response:
- body: {string: '{"message":"The storage account named cli000002 is already taken.","nameAvailable":false,"reason":"AlreadyExists"}
-
- '}
+ body: {string: '{"nameAvailable":false,"reason":"AlreadyExists","message":"The
+ storage account named cli000002 is already taken."}'}
headers:
cache-control: [no-cache]
- content-length: ['130']
+ content-length: ['129']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:11:07 GMT']
+ date: ['Tue, 01 May 2018 21:46:37 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0]
+ server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
+ Microsoft-HTTPAPI/2.0']
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -124,8 +129,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -134,11 +139,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:11:09 GMT']
+ date: ['Tue, 01 May 2018 21:46:38 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdINE8zSkdDQ0dWTk1JRjI2TFdHT1VaSUdMNVpKSDQ3WkxJWHwwMDEyNkJCRjUzNkE2OUI4LVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkc3Q0xRTzZXQkJQQTIyT1NYTktTNERETEtJR1M2R1YzSU9WRnw3OEUxRTNGRDYyNjhDNkUwLVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account_with_assigned_identity.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account_with_assigned_identity.yaml
index 2cd734fa2f4..eb91655aaba 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account_with_assigned_identity.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_create_storage_account_with_assigned_identity.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "southcentralus", "tags": {"use": "az-test"}}'
+ body: '{"location": "southcentralus", "tags": {"product": "azurecli", "cause":
+ "automation", "date": "2018-05-01T21:46:38Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['58']
+ Content-Length: ['118']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:46:38Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:11:10 GMT']
+ date: ['Tue, 01 May 2018 21:46:39 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
body: null
@@ -35,22 +37,23 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:46:38Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:11:11 GMT']
+ date: ['Tue, 01 May 2018 21:46:40 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "southcentralus",
@@ -64,7 +67,7 @@ interactions:
Content-Length: ['173']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
@@ -74,14 +77,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:11:14 GMT']
+ date: ['Tue, 01 May 2018 21:46:43 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/0dd5ff8d-fcd9-4d81-aed4-64578003c0a3?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/db07f4d6-1aa9-4a35-9e9f-ec92d48bf5c6?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -92,17 +96,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/0dd5ff8d-fcd9-4d81-aed4-64578003c0a3?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/db07f4d6-1aa9-4a35-9e9f-ec92d48bf5c6?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"identity":{"principalId":"fc7b1ff3-153f-422c-be6e-10fd0dbb2b53","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:14.3377009Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:14.3377009Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:11:14.2908347Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"identity":{"principalId":"953ecdf7-a1a2-4571-a45e-276b341fd399","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:46:43.4103371Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:46:43.4103371Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:46:43.3477952Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1387']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:11:32 GMT']
+ date: ['Tue, 01 May 2018 21:47:01 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +114,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,8 +126,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -131,11 +136,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:11:34 GMT']
+ date: ['Tue, 01 May 2018 21:47:02 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdMRjRaWUlCSjY3NkNaN1VCRUZYTjZWSkpVSlRGN0VNUVpSM3w2RTkxNTE0MUQzMjFGRjU3LVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdaSlRLRDNBNEhZQkU3VlVCSlU3R0JVNVQzNkQzVFNVRTZDUnwxRjIxOURCNEZEODVDRUIyLVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1191']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_customer_managed_key.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_customer_managed_key.yaml
index eb6113e1236..020aeea2207 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_customer_managed_key.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_customer_managed_key.yaml
@@ -1,31 +1,32 @@
interactions:
- request:
- body: '{"location": "southcentralus", "tags": {"use": "az-test"}}'
+ body: '{"location": "southcentralus", "tags": {"product": "azurecli", "cause":
+ "automation", "date": "2018-05-01T21:47:03Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['58']
+ Content-Length: ['118']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:47:03Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:45:14 GMT']
+ date: ['Tue, 01 May 2018 21:47:04 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "southcentralus",
@@ -37,9 +38,8 @@ interactions:
Connection: [keep-alive]
Content-Length: ['133']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -49,9 +49,9 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:45:16 GMT']
+ date: ['Tue, 01 May 2018 21:47:05 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/475457db-2a94-478d-9557-cbf335778430?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/a9d3ebd1-4539-47e6-ae2c-ebd9ac8b7ed6?monitor=true&api-version=2017-10-01']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
Microsoft-HTTPAPI/2.0']
@@ -67,48 +67,18 @@ interactions:
CommandName: [storage account create]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/475457db-2a94-478d-9557-cbf335778430?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/a9d3ebd1-4539-47e6-ae2c-ebd9ac8b7ed6?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:45:34 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/475457db-2a94-478d-9557-cbf335778430?monitor=true&api-version=2017-10-01']
- 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-content-type-options: [nosniff]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/475457db-2a94-478d-9557-cbf335778430?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-14T22:45:16.8101562Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:47:05.9065524Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1247']
content-type: [application/json]
- date: ['Wed, 14 Mar 2018 22:45:51 GMT']
+ date: ['Tue, 01 May 2018 21:47:22 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -127,19 +97,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"29iXmtApzwAgRU8RFPFc896ZSHW4hYGutTWNZn7RbmOnUZqC6mJDx5PbdrnPn/3Ta4DNTapCNNwo1GEWRe8rBw==","permissions":"FULL"},{"keyName":"key2","value":"idf7KpJ5ifYJoB9H83S6RZuA4HvGtt8QMFD5hJS9keCnWMx4OUfkLct1r5xzRRVB3yHyc/Ke+D/Hxa1v2Fi85w==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"rjXT1kvmeWybJWyFiYBHHDcL5lSdSWDPXj/jKH1+L/FnrP6CQrnFRWNhw4wE8fSQ6koOguSwVwAJOvZLhDliPg==","permissions":"FULL"},{"keyName":"key2","value":"GlYufNjT5f7xOlMIzKSJrB4IwD3vxFV8FE0C/4JyDM7Z1Gw6+jfnA+lFTiUDaFXmwnIE0GBLDbQUvjH1OsPJ9g==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Wed, 14 Mar 2018 22:45:52 GMT']
+ date: ['Tue, 01 May 2018 21:47:23 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -148,7 +117,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -158,19 +127,19 @@ interactions:
CommandName: [keyvault create]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:47:03Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:45:52 GMT']
+ date: ['Tue, 01 May 2018 21:47:25 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
@@ -184,43 +153,36 @@ interactions:
Accept-Encoding: ['gzip, deflate']
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 graphrbacmanagementclient/0.31.0 Azure-SDK-For-Python]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-graphrbac/0.40.0 Azure-SDK-For-Python]
accept-language: [en-US]
method: GET
uri: https://graph.windows.net/00000000-0000-0000-0000-000000000000/me?api-version=1.6
response:
- body: {string: '{"odata.metadata":"https://graph.windows.net/00000000-0000-0000-0000-000000000000/$metadata#directoryObjects/Microsoft.DirectoryServices.User/@Element","odata.type":"Microsoft.DirectoryServices.User","objectType":"User","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","deletionTimestamp":null,"accountEnabled":true,"ageGroup":null,"assignedLicenses":[{"disabledPlans":[],"skuId":"b05e124f-c7cc-45a0-a6aa-8cf78c946968"},{"disabledPlans":["0b03f40b-c404-40c3-8651-2aceb74365fa","b650d915-9886-424b-a08d-633cede56f57","e95bec33-7c88-4a70-8e19-b10bd9d0c014","5dbe027f-2339-4123-9542-606e4d348a72","fe71d6c3-a2ea-4499-9778-da042bf08063","fafd7243-e5c1-4a3a-9e40-495efcb1d3c3"],"skuId":"ea126fc5-a19e-42e2-a731-da9d437bffcf"},{"disabledPlans":[],"skuId":"c7df2760-2c81-4ef7-b578-5b5392b571df"},{"disabledPlans":[],"skuId":"c5928f49-12ba-48f7-ada3-0d743a3601d5"},{"disabledPlans":["e95bec33-7c88-4a70-8e19-b10bd9d0c014","5dbe027f-2339-4123-9542-606e4d348a72"],"skuId":"f82a60b8-1ee3-4cfb-a4fe-1c6a53c2656c"},{"disabledPlans":[],"skuId":"d3b4fe1f-9992-4930-8acb-ca6ec609365e"},{"disabledPlans":[],"skuId":"c52ea49f-fe5d-4e95-93ba-1de91d380f89"}],"assignedPlans":[{"assignedTimestamp":"2018-01-09T10:23:23Z","capabilityStatus":"Enabled","service":"ProjectWorkManagement","servicePlanId":"b737dad2-2f6c-4c65-90e3-ca563267e8b9"},{"assignedTimestamp":"2018-01-01T00:45:04Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"fe71d6c3-a2ea-4499-9778-da042bf08063"},{"assignedTimestamp":"2018-01-01T00:45:04Z","capabilityStatus":"Enabled","service":"AADPremiumService","servicePlanId":"41781fb2-bc02-4b7c-bd55-b576c07bb09d"},{"assignedTimestamp":"2018-01-01T00:45:04Z","capabilityStatus":"Enabled","service":"MultiFactorService","servicePlanId":"8a256a2b-b617-496d-b51b-e76466e88db0"},{"assignedTimestamp":"2018-01-01T00:45:04Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"e95bec33-7c88-4a70-8e19-b10bd9d0c014"},{"assignedTimestamp":"2018-01-01T00:45:04Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"5dbe027f-2339-4123-9542-606e4d348a72"},{"assignedTimestamp":"2018-01-01T00:45:04Z","capabilityStatus":"Enabled","service":"MicrosoftOffice","servicePlanId":"fafd7243-e5c1-4a3a-9e40-495efcb1d3c3"},{"assignedTimestamp":"2017-12-31T09:05:59Z","capabilityStatus":"Deleted","service":"Adallom","servicePlanId":"932ad362-64a8-4783-9106-97849a1a30b9"},{"assignedTimestamp":"2017-12-16T12:54:56Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"2bdbaf8f-738f-4ac7-9234-3c3ee2ce7d0f"},{"assignedTimestamp":"2017-12-16T12:54:56Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"da792a53-cbc0-4184-a10d-e544dd34b3c1"},{"assignedTimestamp":"2017-12-16T12:54:56Z","capabilityStatus":"Enabled","service":"To-Do","servicePlanId":"3fb82609-8c27-4f7b-bd51-30634711ee67"},{"assignedTimestamp":"2017-12-16T12:54:56Z","capabilityStatus":"Enabled","service":"RMSOnline","servicePlanId":"5689bec4-755d-4753-8b61-40975025187c"},{"assignedTimestamp":"2017-12-16T12:54:56Z","capabilityStatus":"Enabled","service":"Adallom","servicePlanId":"2e2ddb96-6af9-4b1d-a3f0-d6ecfd22edb2"},{"assignedTimestamp":"2017-01-26T01:41:01Z","capabilityStatus":"Enabled","service":"Adallom","servicePlanId":"8c098270-9dd4-4350-9b30-ba4703f3b36b"},{"assignedTimestamp":"2017-10-07T03:10:17Z","capabilityStatus":"Enabled","service":"Netbreeze","servicePlanId":"03acaee3-9492-4f40-aed4-bcb6b32981b6"},{"assignedTimestamp":"2017-10-07T03:10:17Z","capabilityStatus":"Enabled","service":"RMSOnline","servicePlanId":"bea4c11e-220a-4e6d-8eb8-8ea15d019f90"},{"assignedTimestamp":"2017-10-07T03:10:17Z","capabilityStatus":"Enabled","service":"RMSOnline","servicePlanId":"6c57d4b6-3b23-47a5-9bc9-69f17b4947b3"},{"assignedTimestamp":"2017-10-07T03:10:17Z","capabilityStatus":"Enabled","service":"CRM","servicePlanId":"d56f3deb-50d8-465a-bedb-f079817ccac1"},{"assignedTimestamp":"2017-07-06T17:55:21Z","capabilityStatus":"Enabled","service":"MicrosoftCommunicationsOnline","servicePlanId":"4828c8ec-dc2e-4779-b502-87ac9ce28ab7"},{"assignedTimestamp":"2017-07-06T17:55:21Z","capabilityStatus":"Enabled","service":"MicrosoftCommunicationsOnline","servicePlanId":"3e26ee1f-8a5f-4d52-aee2-b81ce45c8f40"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Enabled","service":"TeamspaceAPI","servicePlanId":"57ff2da0-773e-42df-b2af-ffb7a2317929"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Deleted","service":"ProcessSimple","servicePlanId":"76846ad7-7776-4c40-a281-a386362dd1b9"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Deleted","service":"PowerAppsService","servicePlanId":"c68f8d98-5534-41c8-bf36-22fa496fa792"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Enabled","service":"YammerEnterprise","servicePlanId":"7547a3fe-08ee-4ccb-b430-5077c5041653"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Enabled","service":"Sway","servicePlanId":"a23b959c-7ce8-4e57-9140-b90eb88a9e97"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Enabled","service":"MicrosoftCommunicationsOnline","servicePlanId":"0feaeb32-d00e-4d66-bd5a-43b5b83db82c"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Enabled","service":"Deskless","servicePlanId":"8c7d2df8-86f0-4902-b2ed-a0458298f3b3"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Deleted","service":"MicrosoftStream","servicePlanId":"9e700747-8b1d-45e5-ab8d-ef187ceec156"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"efb87545-963c-4e0d-99df-69c6916d9eb0"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Enabled","service":"MicrosoftOffice","servicePlanId":"43de0ff5-c92c-492b-9116-175376d08c38"},{"assignedTimestamp":"2017-07-06T17:55:20Z","capabilityStatus":"Deleted","service":"OfficeForms","servicePlanId":"2789c901-c14e-48ab-a76a-be334d9d793a"},{"assignedTimestamp":"2017-07-06T17:55:19Z","capabilityStatus":"Enabled","service":"OfficeForms","servicePlanId":"e212cbc7-0961-4c40-9825-01117710dcb1"},{"assignedTimestamp":"2017-07-06T17:55:19Z","capabilityStatus":"Enabled","service":"OfficeForms","servicePlanId":"159f4cd6-e380-449f-a816-af1a9ef76344"},{"assignedTimestamp":"2017-06-11T11:19:06Z","capabilityStatus":"Enabled","service":"MicrosoftStream","servicePlanId":"6c6042f5-6f01-4d67-b8c1-eb99d36eed3e"},{"assignedTimestamp":"2017-06-11T11:19:06Z","capabilityStatus":"Enabled","service":"AADPremiumService","servicePlanId":"eec0eb4f-6444-4f95-aba0-50c24d67f998"},{"assignedTimestamp":"2017-06-11T11:19:06Z","capabilityStatus":"Enabled","service":"SCO","servicePlanId":"c1ec4a95-1f05-45b3-a911-aa3fa01094f5"},{"assignedTimestamp":"2017-05-13T02:29:46Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"8e0c0a52-6a6c-4d40-8370-dd62790dcd70"},{"assignedTimestamp":"2017-01-26T01:41:01Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"9f431833-0334-42de-a7dc-70aa40db46db"},{"assignedTimestamp":"2017-01-26T01:41:01Z","capabilityStatus":"Enabled","service":"PowerBI","servicePlanId":"70d33638-9c74-4d01-bfd3-562de28bd4ba"},{"assignedTimestamp":"2017-01-26T01:41:01Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"4de31727-a228-4ec3-a5bf-8e45b5ca48cc"},{"assignedTimestamp":"2017-01-26T01:41:01Z","capabilityStatus":"Deleted","service":"SharePoint","servicePlanId":"c4048e79-4474-4c74-ba9b-c31ff225e511"},{"assignedTimestamp":"2017-01-26T01:41:01Z","capabilityStatus":"Deleted","service":"AzureAnalysis","servicePlanId":"2049e525-b859-401b-b2a0-e0a31c4b1fe4"},{"assignedTimestamp":"2017-01-26T01:41:01Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"34c0d7a0-a70f-4668-9238-47f9fc208882"},{"assignedTimestamp":"2016-12-19T04:25:33Z","capabilityStatus":"Deleted","service":"PowerBI","servicePlanId":"fc0a60aa-feee-4746-a0e3-aecfe81a38dd"},{"assignedTimestamp":"2016-12-19T04:25:33Z","capabilityStatus":"Deleted","service":"SharePoint","servicePlanId":"2125cfd7-2110-4567-83c4-c1cd5275163d"},{"assignedTimestamp":"2016-11-19T14:33:33Z","capabilityStatus":"Enabled","service":"PowerAppsService","servicePlanId":"9c0dab89-a30c-4117-86e7-97bda240acd2"},{"assignedTimestamp":"2016-11-19T14:33:33Z","capabilityStatus":"Enabled","service":"ProcessSimple","servicePlanId":"07699545-9485-468e-95b6-2fca3738be01"},{"assignedTimestamp":"2012-10-17T12:12:58Z","capabilityStatus":"Enabled","service":"MicrosoftOffice","servicePlanId":"663a804f-1c30-4ff0-9915-9db84f0d1cea"},{"assignedTimestamp":"2015-07-30T05:29:29Z","capabilityStatus":"Enabled","service":"MicrosoftCommunicationsOnline","servicePlanId":"5a10155d-f5c1-411a-a8ec-e99aae125390"},{"assignedTimestamp":"2015-07-30T05:29:29Z","capabilityStatus":"Deleted","service":"MicrosoftCommunicationsOnline","servicePlanId":"27216c54-caf8-4d0d-97e2-517afb5c08f6"}],"city":"REDMOND","companyName":"MICROSOFT","consentProvidedForMinor":null,"country":null,"creationType":null,"department":"Azure
- and Web","dirSyncEnabled":true,"displayName":"Troy Dai","employeeId":null,"facsimileTelephoneNumber":null,"givenName":"Troy","immutableId":"461912","isCompromised":null,"jobTitle":"SENIOR
- SOFTWARE ENGINEER","lastDirSyncTime":"2018-02-23T23:05:29Z","legalAgeGroupClassification":null,"mail":"trdai@microsoft.com","mailNickname":"trdai","mobile":null,"onPremisesDistinguishedName":null,"onPremisesSecurityIdentifier":"S-1-5-21-2127521184-1604012920-1887927527-7314606","otherMails":[],"passwordPolicies":"DisablePasswordExpiration","passwordProfile":null,"physicalDeliveryOfficeName":"18/2300FL","postalCode":null,"preferredLanguage":null,"provisionedPlans":[{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"Netbreeze"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"CRM"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftCommunicationsOnline"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftCommunicationsOnline"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftCommunicationsOnline"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Deleted","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Deleted","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftOffice"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftOffice"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftCommunicationsOnline"},{"capabilityStatus":"Deleted","provisioningStatus":"Success","service":"MicrosoftCommunicationsOnline"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftOffice"}],"provisioningErrors":[],"proxyAddresses":["X500:/O=Nokia/OU=HUB/cn=Recipients/cn=trdai","X500:/o=SDF/ou=Exchange
- Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=sdflabs.com-51490-Troy
- Dai","X500:/o=microsoft/ou=First Administrative Group/cn=Recipients/cn=trdai","X500:/o=microsoft/ou=External
- (FYDIBOHF25SPDLT)/cn=Recipients/cn=a84f62fabe9b4550aaeda1239b1a98a0","X500:/o=microsoft/ou=Exchange
- Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=trdai","X500:/o=SDF/ou=Exchange
- Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=trdaif6bab3c01c","X500:/o=SDF/ou=Exchange
- Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=51490-trdai_7c9c85843c","X500:/o=SDF/ou=Exchange
- Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=51490-trdai_1ff209dd2f","X500:/o=MSNBC/ou=Servers/cn=Recipients/cn=trdai","X500:/o=ExchangeLabs/ou=Exchange
- Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=trdai8d49b0283b","X500:/o=ExchangeLabs/ou=Exchange
- Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=microsoft.onmicrosoft.com-55760-Troy
- Dai","smtp:trdai@064d.mgd.microsoft.com","X500:/o=MMS/ou=Exchange Administrative
- Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=Troy Dai0deb72db-4e3f-41b7-b53f-0e30c68d0958","SMTP:trdai@microsoft.com","x500:/o=microsoft/ou=Exchange
- Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=Troy Dai","smtp:trdai@service.microsoft.com"],"refreshTokensValidFromDateTime":"2018-02-23T22:01:13Z","showInAddressList":true,"signInNames":[],"sipProxyAddress":"trdai@microsoft.com","state":null,"streetAddress":null,"surname":"Dai","telephoneNumber":"+1
- (425) 7062263","thumbnailPhoto@odata.mediaContentType":"image/Jpeg","usageLocation":"US","userIdentities":[],"userPrincipalName":"trdai@microsoft.com","userType":null,"extension_18e31482d3fb4a8ea958aa96b662f508_SupervisorInd":"N","extension_18e31482d3fb4a8ea958aa96b662f508_BuildingName":"18","extension_18e31482d3fb4a8ea958aa96b662f508_BuildingID":"17","extension_18e31482d3fb4a8ea958aa96b662f508_ReportsToPersonnelNbr":"186027","extension_18e31482d3fb4a8ea958aa96b662f508_ReportsToFullName":"Diwan,
- Mayuri","extension_18e31482d3fb4a8ea958aa96b662f508_ReportsToEmailName":"MAYURID","extension_18e31482d3fb4a8ea958aa96b662f508_AddressLine1":"1
- Microsoft Way","extension_18e31482d3fb4a8ea958aa96b662f508_CityName":"REDMOND","extension_18e31482d3fb4a8ea958aa96b662f508_CompanyCode":"1010","extension_18e31482d3fb4a8ea958aa96b662f508_CostCenterCode":"10040929","extension_18e31482d3fb4a8ea958aa96b662f508_CountryShortCode":"US","extension_18e31482d3fb4a8ea958aa96b662f508_LocationAreaCode":"US","extension_18e31482d3fb4a8ea958aa96b662f508_PersonnelNumber":"461912","extension_18e31482d3fb4a8ea958aa96b662f508_PositionNumber":"19376","extension_18e31482d3fb4a8ea958aa96b662f508_ProfitCenterCode":"P10040929","extension_18e31482d3fb4a8ea958aa96b662f508_StateProvinceCode":"WA","extension_18e31482d3fb4a8ea958aa96b662f508_ZipCode":"98052"}'}
+ body: {string: '{"odata.metadata":"https://graph.windows.net/00000000-0000-0000-0000-000000000000/$metadata#directoryObjects/Microsoft.DirectoryServices.User/@Element","odata.type":"Microsoft.DirectoryServices.User","objectType":"User","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","deletionTimestamp":null,"accountEnabled":true,"ageGroup":null,"assignedLicenses":[{"disabledPlans":[],"skuId":"488ba24a-39a9-4473-8ee5-19291e71b002"},{"disabledPlans":[],"skuId":"b05e124f-c7cc-45a0-a6aa-8cf78c946968"},{"disabledPlans":["0b03f40b-c404-40c3-8651-2aceb74365fa","b650d915-9886-424b-a08d-633cede56f57","e95bec33-7c88-4a70-8e19-b10bd9d0c014","5dbe027f-2339-4123-9542-606e4d348a72","fe71d6c3-a2ea-4499-9778-da042bf08063","fafd7243-e5c1-4a3a-9e40-495efcb1d3c3"],"skuId":"ea126fc5-a19e-42e2-a731-da9d437bffcf"},{"disabledPlans":[],"skuId":"c7df2760-2c81-4ef7-b578-5b5392b571df"},{"disabledPlans":["e95bec33-7c88-4a70-8e19-b10bd9d0c014","5dbe027f-2339-4123-9542-606e4d348a72"],"skuId":"f82a60b8-1ee3-4cfb-a4fe-1c6a53c2656c"},{"disabledPlans":[],"skuId":"c5928f49-12ba-48f7-ada3-0d743a3601d5"},{"disabledPlans":[],"skuId":"c52ea49f-fe5d-4e95-93ba-1de91d380f89"}],"assignedPlans":[{"assignedTimestamp":"2018-04-24T12:19:11Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"fe71d6c3-a2ea-4499-9778-da042bf08063"},{"assignedTimestamp":"2018-04-24T12:19:11Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"2bdbaf8f-738f-4ac7-9234-3c3ee2ce7d0f"},{"assignedTimestamp":"2018-04-24T12:19:11Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"da792a53-cbc0-4184-a10d-e544dd34b3c1"},{"assignedTimestamp":"2018-04-24T12:19:11Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"e95bec33-7c88-4a70-8e19-b10bd9d0c014"},{"assignedTimestamp":"2018-04-24T12:19:11Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"5dbe027f-2339-4123-9542-606e4d348a72"},{"assignedTimestamp":"2018-03-23T21:16:30Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"fe71d6c3-a2ea-4499-9778-da042bf08063"},{"assignedTimestamp":"2018-03-23T21:16:30Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"e95bec33-7c88-4a70-8e19-b10bd9d0c014"},{"assignedTimestamp":"2018-03-23T21:16:30Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"5dbe027f-2339-4123-9542-606e4d348a72"},{"assignedTimestamp":"2018-03-23T21:16:30Z","capabilityStatus":"Deleted","service":"MicrosoftStream","servicePlanId":"acffdce6-c30f-4dc2-81c0-372e33c515ec"},{"assignedTimestamp":"2018-03-23T21:16:30Z","capabilityStatus":"Enabled","service":"MicrosoftOffice","servicePlanId":"fafd7243-e5c1-4a3a-9e40-495efcb1d3c3"},{"assignedTimestamp":"2018-03-17T19:15:37Z","capabilityStatus":"Enabled","service":"WindowsDefenderATP","servicePlanId":"871d91ec-ec1a-452b-a83f-bd76c7d770ef"},{"assignedTimestamp":"2018-03-17T19:15:37Z","capabilityStatus":"Enabled","service":"AzureAdvancedThreatAnalytics","servicePlanId":"14ab5db5-e6c4-4b20-b4bc-13e36fd2227f"},{"assignedTimestamp":"2018-03-17T19:15:37Z","capabilityStatus":"Enabled","service":"Windows","servicePlanId":"e7c91390-7625-45be-94e0-e16907e03118"},{"assignedTimestamp":"2018-01-09T12:24:45Z","capabilityStatus":"Enabled","service":"ProjectWorkManagement","servicePlanId":"b737dad2-2f6c-4c65-90e3-ca563267e8b9"},{"assignedTimestamp":"2018-01-01T06:15:34Z","capabilityStatus":"Enabled","service":"AADPremiumService","servicePlanId":"41781fb2-bc02-4b7c-bd55-b576c07bb09d"},{"assignedTimestamp":"2018-01-01T06:15:34Z","capabilityStatus":"Enabled","service":"MultiFactorService","servicePlanId":"8a256a2b-b617-496d-b51b-e76466e88db0"},{"assignedTimestamp":"2017-12-31T18:38:48Z","capabilityStatus":"Deleted","service":"Adallom","servicePlanId":"932ad362-64a8-4783-9106-97849a1a30b9"},{"assignedTimestamp":"2017-12-14T05:01:45Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"2bdbaf8f-738f-4ac7-9234-3c3ee2ce7d0f"},{"assignedTimestamp":"2017-12-14T05:01:45Z","capabilityStatus":"Enabled","service":"SharePoint","servicePlanId":"da792a53-cbc0-4184-a10d-e544dd34b3c1"},{"assignedTimestamp":"2017-12-14T05:01:45Z","capabilityStatus":"Enabled","service":"To-Do","servicePlanId":"3fb82609-8c27-4f7b-bd51-30634711ee67"},{"assignedTimestamp":"2017-12-14T05:01:45Z","capabilityStatus":"Enabled","service":"RMSOnline","servicePlanId":"5689bec4-755d-4753-8b61-40975025187c"},{"assignedTimestamp":"2017-12-14T05:01:45Z","capabilityStatus":"Enabled","service":"Adallom","servicePlanId":"2e2ddb96-6af9-4b1d-a3f0-d6ecfd22edb2"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"Adallom","servicePlanId":"8c098270-9dd4-4350-9b30-ba4703f3b36b"},{"assignedTimestamp":"2017-10-07T05:29:38Z","capabilityStatus":"Enabled","service":"Netbreeze","servicePlanId":"03acaee3-9492-4f40-aed4-bcb6b32981b6"},{"assignedTimestamp":"2017-10-07T05:29:38Z","capabilityStatus":"Enabled","service":"RMSOnline","servicePlanId":"bea4c11e-220a-4e6d-8eb8-8ea15d019f90"},{"assignedTimestamp":"2017-10-07T05:29:38Z","capabilityStatus":"Enabled","service":"RMSOnline","servicePlanId":"6c57d4b6-3b23-47a5-9bc9-69f17b4947b3"},{"assignedTimestamp":"2017-10-07T05:29:38Z","capabilityStatus":"Enabled","service":"CRM","servicePlanId":"d56f3deb-50d8-465a-bedb-f079817ccac1"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"efb87545-963c-4e0d-99df-69c6916d9eb0"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"MicrosoftCommunicationsOnline","servicePlanId":"3e26ee1f-8a5f-4d52-aee2-b81ce45c8f40"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"MicrosoftCommunicationsOnline","servicePlanId":"4828c8ec-dc2e-4779-b502-87ac9ce28ab7"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"34c0d7a0-a70f-4668-9238-47f9fc208882"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"9f431833-0334-42de-a7dc-70aa40db46db"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"Deskless","servicePlanId":"8c7d2df8-86f0-4902-b2ed-a0458298f3b3"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"8e0c0a52-6a6c-4d40-8370-dd62790dcd70"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"MicrosoftStream","servicePlanId":"6c6042f5-6f01-4d67-b8c1-eb99d36eed3e"},{"assignedTimestamp":"2017-08-18T15:14:38Z","capabilityStatus":"Enabled","service":"OfficeForms","servicePlanId":"e212cbc7-0961-4c40-9825-01117710dcb1"},{"assignedTimestamp":"2017-08-04T07:20:51Z","capabilityStatus":"Enabled","service":"AADPremiumService","servicePlanId":"eec0eb4f-6444-4f95-aba0-50c24d67f998"},{"assignedTimestamp":"2017-08-04T07:20:51Z","capabilityStatus":"Enabled","service":"SCO","servicePlanId":"c1ec4a95-1f05-45b3-a911-aa3fa01094f5"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"MicrosoftCommunicationsOnline","servicePlanId":"0feaeb32-d00e-4d66-bd5a-43b5b83db82c"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"ProcessSimple","servicePlanId":"07699545-9485-468e-95b6-2fca3738be01"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"Sway","servicePlanId":"a23b959c-7ce8-4e57-9140-b90eb88a9e97"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"PowerBI","servicePlanId":"70d33638-9c74-4d01-bfd3-562de28bd4ba"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"exchange","servicePlanId":"4de31727-a228-4ec3-a5bf-8e45b5ca48cc"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"MicrosoftOffice","servicePlanId":"663a804f-1c30-4ff0-9915-9db84f0d1cea"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"TeamspaceAPI","servicePlanId":"57ff2da0-773e-42df-b2af-ffb7a2317929"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"PowerAppsService","servicePlanId":"9c0dab89-a30c-4117-86e7-97bda240acd2"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"OfficeForms","servicePlanId":"159f4cd6-e380-449f-a816-af1a9ef76344"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"YammerEnterprise","servicePlanId":"7547a3fe-08ee-4ccb-b430-5077c5041653"},{"assignedTimestamp":"2017-08-04T02:23:56Z","capabilityStatus":"Enabled","service":"MicrosoftOffice","servicePlanId":"43de0ff5-c92c-492b-9116-175376d08c38"}],"city":"REDMOND","companyName":"MICROSOFT","consentProvidedForMinor":null,"country":null,"creationType":null,"department":"Azure
+ and Web","dirSyncEnabled":true,"displayName":"Willie Xu","employeeId":null,"facsimileTelephoneNumber":null,"givenName":"Willie","immutableId":"1241166","isCompromised":null,"jobTitle":"SOFTWARE
+ ENGINEER","lastDirSyncTime":"2018-04-14T15:06:56Z","legalAgeGroupClassification":null,"mail":"Willie.Xu@microsoft.com","mailNickname":"wilx","mobile":null,"onPremisesDistinguishedName":"CN=Willie
+ Xu,OU=UserAccounts,DC=redmond,DC=corp,DC=microsoft,DC=com","onPremisesSecurityIdentifier":"S-1-5-21-2127521184-1604012920-1887927527-28031824","otherMails":[],"passwordPolicies":"DisablePasswordExpiration","passwordProfile":null,"physicalDeliveryOfficeName":"18/2250FL","postalCode":null,"preferredLanguage":null,"provisionedPlans":[{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"SharePoint"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"Netbreeze"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"CRM"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftCommunicationsOnline"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftCommunicationsOnline"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"MicrosoftCommunicationsOnline"},{"capabilityStatus":"Enabled","provisioningStatus":"Success","service":"exchange"}],"provisioningErrors":[],"proxyAddresses":["x500:/o=ExchangeLabs/ou=Exchange
+ Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=73e4dc5a8858433681fcb300f98cd2db-Willie
+ Xu","X500:/o=microsoft/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=53ed7de51a1940ae94f43ae4b57643a4-Willie
+ Xu","X500:/o=MMS/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=55b110a31823461c9ce34dd1a3f445dc-Willie
+ Xu96c9fa53-17","X500:/o=microsoft/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=e2257f0925774064878e0ae17f94fdef-Willie
+ Xu","smtp:wilx@microsoft.onmicrosoft.com","smtp:wilx@service.microsoft.com","smtp:wilx@microsoft.com","SMTP:Willie.Xu@microsoft.com"],"refreshTokensValidFromDateTime":"2018-02-27T19:29:17Z","showInAddressList":null,"signInNames":[],"sipProxyAddress":"wilx@microsoft.com","state":null,"streetAddress":null,"surname":"Xu","telephoneNumber":null,"usageLocation":"US","userIdentities":[],"userPrincipalName":"wilx@microsoft.com","userType":"Member","extension_18e31482d3fb4a8ea958aa96b662f508_ZipCode":"98052","extension_18e31482d3fb4a8ea958aa96b662f508_SupervisorInd":"N","extension_18e31482d3fb4a8ea958aa96b662f508_StateProvinceCode":"WA","extension_18e31482d3fb4a8ea958aa96b662f508_ReportsToPersonnelNbr":"186027","extension_18e31482d3fb4a8ea958aa96b662f508_ReportsToFullName":"Diwan,
+ Mayuri","extension_18e31482d3fb4a8ea958aa96b662f508_ReportsToEmailName":"MAYURID","extension_18e31482d3fb4a8ea958aa96b662f508_ProfitCenterCode":"P10040929","extension_18e31482d3fb4a8ea958aa96b662f508_PositionNumber":"90656247","extension_18e31482d3fb4a8ea958aa96b662f508_LocationAreaCode":"US","extension_18e31482d3fb4a8ea958aa96b662f508_CountryShortCode":"US","extension_18e31482d3fb4a8ea958aa96b662f508_CostCenterCode":"10040929","extension_18e31482d3fb4a8ea958aa96b662f508_CompanyCode":"1010","extension_18e31482d3fb4a8ea958aa96b662f508_CityName":"REDMOND","extension_18e31482d3fb4a8ea958aa96b662f508_BuildingName":"18","extension_18e31482d3fb4a8ea958aa96b662f508_BuildingID":"17","extension_18e31482d3fb4a8ea958aa96b662f508_AddressLine1":"1
+ Microsoft Way","extension_18e31482d3fb4a8ea958aa96b662f508_PersonnelNumber":"1241166"}'}
headers:
access-control-allow-origin: ['*']
cache-control: [no-cache]
- content-length: ['14563']
+ content-length: ['13487']
content-type: [application/json; odata=minimalmetadata; streaming=true; charset=utf-8]
dataserviceversion: [3.0;]
- date: ['Wed, 14 Mar 2018 22:45:53 GMT']
- duration: ['878137']
+ date: ['Tue, 01 May 2018 21:47:26 GMT']
+ duration: ['1254797']
expires: ['-1']
- ocp-aad-diagnostics-server-name: [ueBU+Ctw2NpjhaqIeDGmz36cCklGr4Ik3hSndonrJ8s=]
- ocp-aad-session-key: [h-ou6CfY7RrfRo7vToOwUH_32odrFbJ9IYojtvtUR1Prlynw2xVjm0uMAUBGNY48W6jz5iwro_FuFfsnwiZGrdLwK7L7l5AAUXMlWgTP6EUEHfty4PiFjDjX3daZGAUd.4p7HXH8ub4gv1HKt41E47tD7csPk5CBTcXhjRz4oDOY]
+ ocp-aad-diagnostics-server-name: [itPlsAoHbG6osDHbVzYs2a+9kGEe205TaLepJuLRQYY=]
+ ocp-aad-session-key: [OgpqxwMSJJJizHeXqDwJ-bzGwpuqkBgQrFWBGCwdMMP-Z4AUSEIPeNeE3YiQTwaS4SxjS--Qk6Yj8Eoxu3pdpMw06vULma9DvW-BK4dIajLJtVq5Bg-GOTXzZsMOREsA.Vq3iqNRGq2xtGuJsX-zTrphAojKyhUjXgQNHAcYiTl4]
pragma: [no-cache]
- request-id: [52764719-c8a2-431d-9b57-378d3ec35f97]
+ request-id: [6b9e1fcd-901a-45f5-891a-a0547b042652]
server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
x-aspnet-version: [4.0.30319]
@@ -231,7 +193,7 @@ interactions:
- request:
body: '{"location": "southcentralus", "properties": {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"sku": {"family": "A", "name": "standard"}, "accessPolicies": [{"tenantId":
- "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "cdf4ba39-6a56-45be-a72a-13ec9cdfee91",
+ "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "4b1f6d49-d203-442f-bb23-06d98ab68f05",
"permissions": {"keys": ["get", "create", "delete", "list", "update", "import",
"backup", "restore", "recover"], "secrets": ["get", "list", "set", "delete",
"backup", "restore", "recover"], "certificates": ["get", "list", "delete", "create",
@@ -245,29 +207,29 @@ interactions:
Connection: [keep-alive]
Content-Length: ['754']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net","provisioningState":"RegisteringDns"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net","provisioningState":"RegisteringDns"}}'}
headers:
cache-control: [no-cache]
content-length: ['1114']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:45:55 GMT']
+ date: ['Tue, 01 May 2018 21:47:28 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-ms-keyvault-service-version: [1.0.0.215]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
- request:
@@ -278,28 +240,28 @@ interactions:
CommandName: [keyvault show]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
headers:
cache-control: [no-cache]
content-length: ['1115']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:45:57 GMT']
+ date: ['Tue, 01 May 2018 21:47:29 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
+ x-ms-keyvault-service-version: [1.0.0.215]
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
- request:
@@ -310,8 +272,8 @@ interactions:
Connection: [keep-alive]
Content-Length: ['47']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 keyvaultclient/0.3.7 Azure-SDK-For-Python]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 keyvaultclient/0.3.7 Azure-SDK-For-Python]
accept-language: [en-US]
method: POST
uri: https://clitest000003.vault.azure.net/keys/testkey/create?api-version=2016-10-01
@@ -320,17 +282,18 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Wed, 14 Mar 2018 22:45:57 GMT']
+ date: ['Tue, 01 May 2018 21:47:30 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000;includeSubDomains]
www-authenticate: ['Bearer authorization="https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47",
resource="https://vault.azure.net"']
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
+ x-ms-keyvault-network-info: [addr=167.220.1.116;act_addr_fam=InterNetwork;]
x-ms-keyvault-region: [southcentralus]
- x-ms-keyvault-service-version: [1.0.0.841]
+ x-ms-keyvault-service-version: [1.0.0.847]
x-powered-by: [ASP.NET]
status: {code: 401, message: Unauthorized}
- request:
@@ -341,26 +304,27 @@ interactions:
Connection: [keep-alive]
Content-Length: ['47']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 keyvaultclient/0.3.7 Azure-SDK-For-Python]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 keyvaultclient/0.3.7 Azure-SDK-For-Python]
accept-language: [en-US]
method: POST
uri: https://clitest000003.vault.azure.net/keys/testkey/create?api-version=2016-10-01
response:
- body: {string: '{"key":{"kid":"https://clitest000003.vault.azure.net/keys/testkey/fff5a9c679664908a6675a10b9c8d952","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qSSdSr77XJK9X6GDUX9wYDM_tWyBuYm4N5nliCs1UE5KgzDm-hs-ko-YndG1YFuf6AcXQBDftYaXN_AeCEtRkEyCMFtGeZ2FGOkLdattLm4paZAzUEN7_x4GFMVPI6-F052Vso-SswgvcqDo2PFLTv4_c6xDFHun0E12mwXfcI5nXeK5Awmvo4KiZUNvHBaldb1hEyqi-UR4L559Hf6ksMEnVCnPU7NO9o8Sq0dknnzFFAUVnWPGgLi6Ktka-ZYghPHdyl-2u1V1BOR0hzdg-ktFxRkmPWxqa048upiFxxdvpgwZWabEG1aw3TkckdwPMkn72TPgmNI5TTtLh896vw","e":"AQAB"},"attributes":{"enabled":true,"created":1521067558,"updated":1521067558,"recoveryLevel":"Purgeable"}}'}
+ body: {string: '{"key":{"kid":"https://clitest000003.vault.azure.net/keys/testkey/f99dcad9b19d4839be3296fd333700a9","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"r9OTl9V1DpLm1W8tKktiO6lSvXSDZaKGh8yamAJWaIk4yWvFm983fAsTys0Jr6xxauUVTg6tRXjhkDm45em4J8oRwdnDyYWkUWwl98EKZiSy0EvvcVK2e5wY3Q9aiIfRsBF2ctw9yu7g_ARtc7cMS2OPN-WVQutm8Sz5-NihxedjpktsXRjI224sAzlN2U_Qztow3d78i7T-3pbSNEX_4RL-iIbd4VFvzlT-qAA6vYhA5smXRCnK-piEVqpAW0vawx26UnRwxu-_T69LERBIBoRmnPFBznUyW7QRIWzm9c0ariEsSsDvom2FrCDvrl9T79AkJT3OFejpgY3T6xsuqw","e":"AQAB"},"attributes":{"enabled":true,"created":1525211251,"updated":1525211251,"recoveryLevel":"Purgeable"}}'}
headers:
cache-control: [no-cache]
content-length: ['654']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:45:57 GMT']
+ date: ['Tue, 01 May 2018 21:47:31 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000;includeSubDomains]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
+ x-ms-keyvault-network-info: [addr=167.220.1.116;act_addr_fam=InterNetwork;]
x-ms-keyvault-region: [southcentralus]
- x-ms-keyvault-service-version: [1.0.0.841]
+ x-ms-keyvault-service-version: [1.0.0.847]
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
- request:
@@ -371,19 +335,18 @@ interactions:
CommandName: [storage account update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-14T22:45:16.8101562Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:47:05.9065524Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1247']
content-type: [application/json]
- date: ['Wed, 14 Mar 2018 22:45:58 GMT']
+ date: ['Tue, 01 May 2018 21:47:32 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -406,19 +369,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['366']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"identity":{"principalId":"739fc607-0f9e-40c8-a69b-84bb547e3751","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-14T22:45:16.8101562Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"identity":{"principalId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:47:05.9065524Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1387']
content-type: [application/json]
- date: ['Wed, 14 Mar 2018 22:46:01 GMT']
+ date: ['Tue, 01 May 2018 21:47:34 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -427,7 +389,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -437,42 +399,42 @@ interactions:
CommandName: [keyvault set-policy]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
headers:
cache-control: [no-cache]
content-length: ['1115']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:02 GMT']
+ date: ['Tue, 01 May 2018 21:47:35 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
+ x-ms-keyvault-service-version: [1.0.0.215]
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
- request:
body: 'b''{"location": "southcentralus", "tags": {}, "properties": {"tenantId":
"72f988bf-86f1-41af-91ab-2d7cd011db47", "sku": {"family": "A", "name": "standard"},
"accessPolicies": [{"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId":
- "cdf4ba39-6a56-45be-a72a-13ec9cdfee91", "permissions": {"keys": ["get", "create",
+ "4b1f6d49-d203-442f-bb23-06d98ab68f05", "permissions": {"keys": ["get", "create",
"delete", "list", "update", "import", "backup", "restore", "recover"], "secrets":
["get", "list", "set", "delete", "backup", "restore", "recover"], "certificates":
["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers",
"listissuers", "setissuers", "deleteissuers", "manageissuers", "recover"], "storage":
["get", "list", "delete", "set", "update", "regeneratekey", "setsas", "listsas",
"getsas", "deletesas"]}}, {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
- "objectId": "739fc607-0f9e-40c8-a69b-84bb547e3751", "permissions": {"keys":
+ "objectId": "f9dda2cf-e03f-4a7a-a8ea-7411041143de", "permissions": {"keys":
["get", "wrapKey", "unwrapKey", "recover"]}}], "vaultUri": "https://clitest000003.vault.azure.net/",
"enabledForDeployment": false}}'''
headers:
@@ -482,28 +444,28 @@ interactions:
Connection: [keep-alive]
Content-Length: ['1037']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"739fc607-0f9e-40c8-a69b-84bb547e3751","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
headers:
cache-control: [no-cache]
content-length: ['1280']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:03 GMT']
+ date: ['Tue, 01 May 2018 21:47:35 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
+ x-ms-keyvault-service-version: [1.0.0.215]
x-ms-ratelimit-remaining-subscription-writes: ['1198']
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
@@ -515,41 +477,41 @@ interactions:
CommandName: [keyvault update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"739fc607-0f9e-40c8-a69b-84bb547e3751","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
headers:
cache-control: [no-cache]
content-length: ['1280']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:03 GMT']
+ date: ['Tue, 01 May 2018 21:47:36 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
+ x-ms-keyvault-service-version: [1.0.0.215]
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
- request:
body: 'b''{"location": "southcentralus", "properties": {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"sku": {"family": "A", "name": "standard"}, "accessPolicies": [{"tenantId":
- "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "cdf4ba39-6a56-45be-a72a-13ec9cdfee91",
+ "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "4b1f6d49-d203-442f-bb23-06d98ab68f05",
"permissions": {"keys": ["get", "create", "delete", "list", "update", "import",
"backup", "restore", "recover"], "secrets": ["get", "list", "set", "delete",
"backup", "restore", "recover"], "certificates": ["get", "list", "delete", "create",
"import", "update", "managecontacts", "getissuers", "listissuers", "setissuers",
"deleteissuers", "manageissuers", "recover"], "storage": ["get", "list", "delete",
"set", "update", "regeneratekey", "setsas", "listsas", "getsas", "deletesas"]}},
- {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "739fc607-0f9e-40c8-a69b-84bb547e3751",
+ {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId": "f9dda2cf-e03f-4a7a-a8ea-7411041143de",
"permissions": {"keys": ["get", "wrapKey", "unwrapKey", "recover"]}}], "vaultUri":
"https://clitest000003.vault.azure.net/", "enabledForDeployment": false, "enableSoftDelete":
true}}'''
@@ -560,29 +522,29 @@ interactions:
Connection: [keep-alive]
Content-Length: ['1051']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 keyvaultmanagementclient/0.40.0 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"739fc607-0f9e-40c8-a69b-84bb547e3751","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"enableSoftDelete":true,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"enableSoftDelete":true,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
headers:
cache-control: [no-cache]
content-length: ['1304']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:04 GMT']
+ date: ['Tue, 01 May 2018 21:47:36 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
- x-ms-ratelimit-remaining-subscription-writes: ['1197']
+ x-ms-keyvault-service-version: [1.0.0.215]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
- request:
@@ -593,9 +555,9 @@ interactions:
CommandName: [resource update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault?api-version=2017-05-10
@@ -605,38 +567,50 @@ interactions:
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"],"capabilities":"CrossResourceGroupResourceMove,
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"],"apiProfiles":[{"profileVersion":"2018-03-01-hybrid","apiVersion":"2016-10-01"}],"capabilities":"CrossResourceGroupResourceMove,
CrossSubscriptionResourceMove"},{"resourceType":"vaults/secrets","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"]},{"resourceType":"vaults/accessPolicies","locations":["North
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"],"apiProfiles":[{"profileVersion":"2018-03-01-hybrid","apiVersion":"2016-10-01"}]},{"resourceType":"vaults/accessPolicies","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"]},{"resourceType":"operations","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01","2014-12-19-preview"]},{"resourceType":"checkNameAvailability","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"]},{"resourceType":"deletedVaults","locations":["North
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"],"apiProfiles":[{"profileVersion":"2018-03-01-hybrid","apiVersion":"2016-10-01"}]},{"resourceType":"operations","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01","2014-12-19-preview"],"apiProfiles":[{"profileVersion":"2018-03-01-hybrid","apiVersion":"2016-10-01"}]},{"resourceType":"checkNameAvailability","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"]},{"resourceType":"deletedVaults","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/deletedVaults","locations":["North
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/deletedVaults","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/operationResults","locations":["North
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/deleteVirtualNetworkOrSubnets","locations":["East
+ US","North Central US","West Europe","North Europe","East Asia","Southeast
+ Asia","East US 2","Central US","South Central US","West Central US","West
+ US 2","West US","Japan East","Japan West","Australia East","Australia Southeast","Brazil
+ South","Central India","South India","West India","Canada Central","Canada
+ East","UK South","UK West","Korea Central","Korea South","France Central","Central
+ US EUAP","East US 2 EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/operationResults","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01"]}],"registrationState":"Registered"}'}
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01"]}],"registrationState":"Registered"}'}
headers:
cache-control: [no-cache]
- content-length: ['3732']
+ content-length: ['4817']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:04 GMT']
+ date: ['Tue, 01 May 2018 21:47:37 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
@@ -651,28 +625,28 @@ interactions:
CommandName: [resource update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"739fc607-0f9e-40c8-a69b-84bb547e3751","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"enableSoftDelete":true,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"enableSoftDelete":true,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
headers:
cache-control: [no-cache]
content-length: ['1304']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:05 GMT']
+ date: ['Tue, 01 May 2018 21:47:38 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
+ x-ms-keyvault-service-version: [1.0.0.215]
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
- request:
@@ -683,9 +657,9 @@ interactions:
CommandName: [resource update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.KeyVault?api-version=2017-05-10
@@ -695,38 +669,50 @@ interactions:
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"],"capabilities":"CrossResourceGroupResourceMove,
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"],"apiProfiles":[{"profileVersion":"2018-03-01-hybrid","apiVersion":"2016-10-01"}],"capabilities":"CrossResourceGroupResourceMove,
CrossSubscriptionResourceMove"},{"resourceType":"vaults/secrets","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"]},{"resourceType":"vaults/accessPolicies","locations":["North
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"],"apiProfiles":[{"profileVersion":"2018-03-01-hybrid","apiVersion":"2016-10-01"}]},{"resourceType":"vaults/accessPolicies","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"]},{"resourceType":"operations","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01","2014-12-19-preview"]},{"resourceType":"checkNameAvailability","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"]},{"resourceType":"deletedVaults","locations":["North
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"],"apiProfiles":[{"profileVersion":"2018-03-01-hybrid","apiVersion":"2016-10-01"}]},{"resourceType":"operations","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01","2014-12-19-preview"],"apiProfiles":[{"profileVersion":"2018-03-01-hybrid","apiVersion":"2016-10-01"}]},{"resourceType":"checkNameAvailability","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01","2015-06-01"]},{"resourceType":"deletedVaults","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/deletedVaults","locations":["North
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations","locations":[],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/deletedVaults","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/operationResults","locations":["North
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/deleteVirtualNetworkOrSubnets","locations":["East
+ US","North Central US","West Europe","North Europe","East Asia","Southeast
+ Asia","East US 2","Central US","South Central US","West Central US","West
+ US 2","West US","Japan East","Japan West","Australia East","Australia Southeast","Brazil
+ South","Central India","South India","West India","Canada Central","Canada
+ East","UK South","UK West","Korea Central","Korea South","France Central","Central
+ US EUAP","East US 2 EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01"]},{"resourceType":"locations/operationResults","locations":["North
Central US","East US","North Europe","West Europe","East Asia","Southeast
Asia","East US 2","Central US","South Central US","West US","Japan East","Japan
West","Australia East","Australia Southeast","Brazil South","Central India","South
India","West India","Canada Central","Canada East","UK South","UK West","West
- Central US","West US 2","Korea Central","Korea South","France Central"],"apiVersions":["2018-02-14-preview","2016-10-01"]}],"registrationState":"Registered"}'}
+ Central US","West US 2","Korea Central","Korea South","France Central","East
+ US 2 EUAP","Central US EUAP"],"apiVersions":["2018-02-14-preview","2016-10-01"]}],"registrationState":"Registered"}'}
headers:
cache-control: [no-cache]
- content-length: ['3732']
+ content-length: ['4817']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:05 GMT']
+ date: ['Tue, 01 May 2018 21:47:38 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
@@ -737,14 +723,14 @@ interactions:
body: 'b''{"location": "southcentralus", "tags": {}, "properties": {"sku": {"family":
"A", "name": "standard"}, "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"accessPolicies": [{"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", "objectId":
- "cdf4ba39-6a56-45be-a72a-13ec9cdfee91", "permissions": {"keys": ["get", "create",
+ "4b1f6d49-d203-442f-bb23-06d98ab68f05", "permissions": {"keys": ["get", "create",
"delete", "list", "update", "import", "backup", "restore", "recover"], "secrets":
["get", "list", "set", "delete", "backup", "restore", "recover"], "certificates":
["get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers",
"listissuers", "setissuers", "deleteissuers", "manageissuers", "recover"], "storage":
["get", "list", "delete", "set", "update", "regeneratekey", "setsas", "listsas",
"getsas", "deletesas"]}}, {"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
- "objectId": "739fc607-0f9e-40c8-a69b-84bb547e3751", "permissions": {"keys":
+ "objectId": "f9dda2cf-e03f-4a7a-a8ea-7411041143de", "permissions": {"keys":
["get", "wrapKey", "unwrapKey", "recover"]}}], "enabledForDeployment": false,
"enableSoftDelete": true, "vaultUri": "https://clitest000003.vault.azure.net/",
"provisioningState": "RegisteringDns", "enablePurgeProtection": true}}'''
@@ -755,28 +741,28 @@ interactions:
Connection: [keep-alive]
Content-Length: ['1133']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"739fc607-0f9e-40c8-a69b-84bb547e3751","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"enableSoftDelete":true,"enablePurgeProtection":true,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"enableSoftDelete":true,"enablePurgeProtection":true,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"RegisteringDns"}}'}
headers:
cache-control: [no-cache]
content-length: ['1333']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:05 GMT']
+ date: ['Tue, 01 May 2018 21:47:38 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
+ x-ms-keyvault-service-version: [1.0.0.215]
x-ms-ratelimit-remaining-subscription-writes: ['1198']
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
@@ -788,28 +774,28 @@ interactions:
CommandName: [resource update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003?api-version=2016-10-01
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"cdf4ba39-6a56-45be-a72a-13ec9cdfee91","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"739fc607-0f9e-40c8-a69b-84bb547e3751","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"enableSoftDelete":true,"enablePurgeProtection":true,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.KeyVault/vaults/clitest000003","name":"clitest000003","type":"Microsoft.KeyVault/vaults","location":"southcentralus","tags":{},"properties":{"sku":{"family":"A","name":"standard"},"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","accessPolicies":[{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"4b1f6d49-d203-442f-bb23-06d98ab68f05","permissions":{"keys":["get","create","delete","list","update","import","backup","restore","recover"],"secrets":["get","list","set","delete","backup","restore","recover"],"certificates":["get","list","delete","create","import","update","managecontacts","getissuers","listissuers","setissuers","deleteissuers","manageissuers","recover"],"storage":["get","list","delete","set","update","regeneratekey","setsas","listsas","getsas","deletesas"]}},{"tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","objectId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","permissions":{"keys":["get","wrapKey","unwrapKey","recover"]}}],"enabledForDeployment":false,"enableSoftDelete":true,"enablePurgeProtection":true,"vaultUri":"https://clitest000003.vault.azure.net/","provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
content-length: ['1328']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 14 Mar 2018 22:46:36 GMT']
+ date: ['Tue, 01 May 2018 21:48:08 GMT']
expires: ['-1']
pragma: [no-cache]
- server: [Microsoft-IIS/8.5]
+ server: [Microsoft-IIS/10.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-aspnet-version: [4.0.30319]
x-content-type-options: [nosniff]
- x-ms-keyvault-service-version: [1.0.0.210]
+ x-ms-keyvault-service-version: [1.0.0.215]
x-powered-by: [ASP.NET]
status: {code: 200, message: OK}
- request:
@@ -820,19 +806,18 @@ interactions:
CommandName: [storage account update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"identity":{"principalId":"739fc607-0f9e-40c8-a69b-84bb547e3751","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-14T22:45:16.8101562Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"identity":{"principalId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:47:05.9065524Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1387']
content-type: [application/json]
- date: ['Wed, 14 Mar 2018 22:46:37 GMT']
+ date: ['Tue, 01 May 2018 21:48:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -846,7 +831,7 @@ interactions:
body: 'b''{"sku": {"name": "Standard_LRS"}, "tags": {}, "properties": {"encryption":
{"services": {"blob": {"enabled": true}, "file": {"enabled": true}}, "keySource":
"Microsoft.Keyvault", "keyvaultproperties": {"keyname": "testkey", "keyversion":
- "fff5a9c679664908a6675a10b9c8d952", "keyvaulturi": "https://clitest000003.vault.azure.net/"}},
+ "f99dcad9b19d4839be3296fd333700a9", "keyvaulturi": "https://clitest000003.vault.azure.net/"}},
"supportsHttpsTrafficOnly": false, "networkAcls": {"bypass": "AzureServices",
"virtualNetworkRules": [], "ipRules": [], "defaultAction": "Allow"}}}'''
headers:
@@ -856,19 +841,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['491']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"identity":{"principalId":"739fc607-0f9e-40c8-a69b-84bb547e3751","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"keyvaultproperties":{"keyvaulturi":"https://clitest000003.vault.azure.net/","keyname":"testkey","keyversion":"fff5a9c679664908a6675a10b9c8d952"},"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-14T22:45:16.8414059Z"}},"keySource":"Microsoft.Keyvault"},"provisioningState":"Succeeded","creationTime":"2018-03-14T22:45:16.8101562Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"identity":{"principalId":"f9dda2cf-e03f-4a7a-a8ea-7411041143de","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"keyvaultproperties":{"keyvaulturi":"https://clitest000003.vault.azure.net/","keyname":"testkey","keyversion":"f99dcad9b19d4839be3296fd333700a9"},"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:05.9534027Z"}},"keySource":"Microsoft.Keyvault"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:47:05.9065524Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1545']
content-type: [application/json]
- date: ['Wed, 14 Mar 2018 22:46:39 GMT']
+ date: ['Tue, 01 May 2018 21:48:12 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -877,7 +861,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -888,9 +872,9 @@ interactions:
Connection: [keep-alive]
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.4 (Darwin-17.4.0-x86_64-i386-64bit) requests/2.18.4
- msrest/0.4.25 msrest_azure/0.4.20 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.30]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -899,12 +883,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Wed, 14 Mar 2018 22:46:41 GMT']
+ date: ['Tue, 01 May 2018 21:48:15 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdNREc1S0daV0U3RFBTQVlRQUxOVk9JNDRJRlNHQko0TlRJSHwxQzdFMjZFQzNBOTk2OUZGLVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdZQlVZMlVaMldaM0JVQlk0QVJSUjU0WktOVEZPQ0RPN0dNSnw1MEFGMTlBQjYxRTEzM0JCLVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_list_locations.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_list_locations.yaml
index 978a6e21df0..f5290c6f7e0 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_list_locations.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_list_locations.yaml
@@ -8,7 +8,7 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 subscriptionclient/1.2.1 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 subscriptionclient/1.2.1 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/locations?api-version=2016-06-01
@@ -39,15 +39,20 @@ interactions:
Central US","longitude":"-110.234","latitude":"40.890"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/westus2","name":"westus2","displayName":"West
US 2","longitude":"-119.852","latitude":"47.233"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreacentral","name":"koreacentral","displayName":"Korea
Central","longitude":"126.9780","latitude":"37.5665"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/koreasouth","name":"koreasouth","displayName":"Korea
- South","longitude":"129.0756","latitude":"35.1796"}]}'}
+ South","longitude":"129.0756","latitude":"35.1796"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francecentral","name":"francecentral","displayName":"France
+ Central","longitude":"2.3730","latitude":"46.3772"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/francesouth","name":"francesouth","displayName":"France
+ South","longitude":"2.1972","latitude":"43.8345"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral","name":"australiacentral","displayName":"Australia
+ Central","longitude":"149.1244","latitude":"-35.3075"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/australiacentral2","name":"australiacentral2","displayName":"Australia
+ Central 2","longitude":"149.1244","latitude":"-35.3075"}]}'}
headers:
cache-control: [no-cache]
- content-length: ['4523']
+ content-length: ['5269']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:11:35 GMT']
+ date: ['Tue, 01 May 2018 21:48:17 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_list_storage_accounts.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_list_storage_accounts.yaml
index ca043f528a9..bbf2a0ff1af 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_list_storage_accounts.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_list_storage_accounts.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:48:17Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:48:17Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:11:36 GMT']
+ date: ['Tue, 01 May 2018 21:48:17 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:11:37 GMT']
+ date: ['Tue, 01 May 2018 21:48:17 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/63946121-517a-424d-9635-896b4cc8a043?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/935cdf39-c0de-4897-b12d-11c1f43e1569?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/63946121-517a-424d-9635-896b4cc8a043?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/935cdf39-c0de-4897-b12d-11c1f43e1569?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:11:54 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/63946121-517a-424d-9635-896b4cc8a043?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/63946121-517a-424d-9635-896b4cc8a043?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:37.6366830Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:37.6366830Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:11:37.5741907Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:18.3231444Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:18.3231444Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:48:18.2450195Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:12:12 GMT']
+ date: ['Tue, 01 May 2018 21:48:34 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"OETfFP6IVszHBA3uwVEp9EFPFT46xDAoHkJ0BG1byG41EWZ62f8d+uXdMPKY7HVlYOgrWXcX8fxs1yNAqsjl9Q==","permissions":"FULL"},{"keyName":"key2","value":"XIKn0TTCYZGWcJ4H0V4T5a4Bdul/jq+xqhSvsU5jRmmp/lfItVVyP4BzpxjBpxJETnTJnLJxlVMUky7nbBMH3A==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"JpyZFS2rU/ITmy9GBt9dJfleHXQKyPbsm1h1IUmgr1qxETrsAeJ3exRr+g1qBwW6srp2+G4DJqNQADG1jid3ag==","permissions":"FULL"},{"keyName":"key2","value":"5qnrHpm9V5AdQGEFqM2q9KdH9kJSL+yzIh6R+9yFpOhg2P5GjXhcAwKX8/OEfuahhNcnZSjtGQN/gSgujew/+g==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:12:12 GMT']
+ date: ['Tue, 01 May 2018 21:48:36 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -152,7 +130,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003?api-version=2017-10-01
@@ -162,14 +140,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:12:13 GMT']
+ date: ['Tue, 01 May 2018 21:48:37 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/0151d0da-3bbe-4a98-aa00-55847842c6b2?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b9cf7077-db79-4990-b409-a7475f2dac0b?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -180,17 +159,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/0151d0da-3bbe-4a98-aa00-55847842c6b2?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b9cf7077-db79-4990-b409-a7475f2dac0b?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003","name":"clitest000003","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:14.1064068Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:14.1064068Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:12:14.0439010Z","primaryEndpoints":{"blob":"https://clitest000003.blob.core.windows.net/","queue":"https://clitest000003.queue.core.windows.net/","table":"https://clitest000003.table.core.windows.net/","file":"https://clitest000003.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003","name":"clitest000003","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:37.4795170Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:37.4795170Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:48:37.3857709Z","primaryEndpoints":{"blob":"https://clitest000003.blob.core.windows.net/","queue":"https://clitest000003.queue.core.windows.net/","table":"https://clitest000003.table.core.windows.net/","file":"https://clitest000003.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:12:31 GMT']
+ date: ['Tue, 01 May 2018 21:48:54 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -198,6 +177,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -209,17 +189,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"aiDL1Rg64ABytwt4Wro1D999z7ClIufr3/1hOWc+GfdowBUOCLFc7r19FrhKOswoY8GkYgIIkdgxnh5h9rFakw==","permissions":"FULL"},{"keyName":"key2","value":"4ELIf1EMXKVEf60ti+nvpc84tKdfO8JMOi1IVKd1SrSBbxJ4n0SiAu7DnMYe91LBuCpD0BcwkBiQdF8KrE89oQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"hKhdGhEQVL9EUpbHR/nmynJ5GOpRtciN9bY7LZUtSQkxoyryK6NudyK3KJl9lz8u1CHb1cWFEQFyRDb0LZlhfg==","permissions":"FULL"},{"keyName":"key2","value":"nU4o9UKVho35Jfw1fuOoKK+z1e41ejTzYtlOXDZ8sWTZHvHEFJyI1sUzF/SuZGWIeti3qFzNq6ZaigP8frZ9TA==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:12:32 GMT']
+ date: ['Tue, 01 May 2018 21:48:55 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -227,7 +207,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1189']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
@@ -238,23 +219,26 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/storageAccounts?api-version=2017-10-01
response:
- body: {string: '{"value":[{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest6075/providers/Microsoft.Storage/storageAccounts/stgbnc8939","name":"stgbnc8939","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:07:05.6471355Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:07:05.6471355Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:07:05.6158803Z","primaryEndpoints":{"blob":"https://stgbnc8939.blob.core.windows.net/","queue":"https://stgbnc8939.queue.core.windows.net/","table":"https://stgbnc8939.table.core.windows.net/","file":"https://stgbnc8939.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest1501/providers/Microsoft.Storage/storageAccounts/stgjavavme823820652e","name":"stgjavavme823820652e","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:41:10.5736026Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:41:10.5736026Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:41:10.5579773Z","primaryEndpoints":{"blob":"https://stgjavavme823820652e.blob.core.windows.net/","queue":"https://stgjavavme823820652e.queue.core.windows.net/","table":"https://stgjavavme823820652e.table.core.windows.net/","file":"https://stgjavavme823820652e.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest9977/providers/Microsoft.Storage/storageAccounts/stgjavavm333507506ea","name":"stgjavavm333507506ea","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:32:47.9591527Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:32:47.9591527Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:32:47.8341521Z","primaryEndpoints":{"blob":"https://stgjavavm333507506ea.blob.core.windows.net/","queue":"https://stgjavavm333507506ea.queue.core.windows.net/","table":"https://stgjavavm333507506ea.table.core.windows.net/","file":"https://stgjavavm333507506ea.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3602/providers/Microsoft.Storage/storageAccounts/stg8927","name":"stg8927","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:37:55.0112849Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:37:55.0112849Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:37:54.9800708Z","primaryEndpoints":{"blob":"https://stg8927.blob.core.windows.net/","queue":"https://stg8927.queue.core.windows.net/","table":"https://stg8927.table.core.windows.net/","file":"https://stg8927.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest6075/providers/Microsoft.Storage/storageAccounts/stgjavavm52d424261a2","name":"stgjavavm52d424261a2","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:07:42.0875788Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:07:42.0875788Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:07:42.0563640Z","primaryEndpoints":{"blob":"https://stgjavavm52d424261a2.blob.core.windows.net/","queue":"https://stgjavavm52d424261a2.queue.core.windows.net/","table":"https://stgjavavm52d424261a2.table.core.windows.net/","file":"https://stgjavavm52d424261a2.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilx-group/providers/Microsoft.Storage/storageAccounts/awilxdevlab9274","name":"awilxdevlab9274","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{"hidden-DevTestLabs-LabUId":"3f487f2b-f13a-422f-a05c-761b17b0200d"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9463952Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9463952Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-07T22:43:14.9920432Z","primaryEndpoints":{"blob":"https://awilxdevlab9274.blob.core.windows.net/","queue":"https://awilxdevlab9274.queue.core.windows.net/","table":"https://awilxdevlab9274.table.core.windows.net/","file":"https://awilxdevlab9274.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest2038/providers/Microsoft.Storage/storageAccounts/stgjavavmac8610156cf","name":"stgjavavmac8610156cf","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:00:07.6351597Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:00:07.6351597Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:00:07.6039345Z","primaryEndpoints":{"blob":"https://stgjavavmac8610156cf.blob.core.windows.net/","queue":"https://stgjavavmac8610156cf.queue.core.windows.net/","table":"https://stgjavavmac8610156cf.table.core.windows.net/","file":"https://stgjavavmac8610156cf.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest5772/providers/Microsoft.Storage/storageAccounts/stgjavavm42113837dbb","name":"stgjavavm42113837dbb","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T12:48:36.1026547Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T12:48:36.1026547Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T12:48:36.0714523Z","primaryEndpoints":{"blob":"https://stgjavavm42113837dbb.blob.core.windows.net/","queue":"https://stgjavavm42113837dbb.queue.core.windows.net/","table":"https://stgjavavm42113837dbb.table.core.windows.net/","file":"https://stgjavavm42113837dbb.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg8678/providers/Microsoft.Storage/storageAccounts/stg7343","name":"stg7343","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.0401485Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.0401485Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-10-22T20:47:23.8366703Z","primaryEndpoints":{"blob":"https://stg7343.blob.core.windows.net/","queue":"https://stg7343.queue.core.windows.net/","table":"https://stg7343.table.core.windows.net/","file":"https://stg7343.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg7434/providers/Microsoft.Storage/storageAccounts/stg8548","name":"stg8548","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:39:56.6875433Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:39:56.6875433Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:39:56.6562752Z","primaryEndpoints":{"blob":"https://stg8548.blob.core.windows.net/","queue":"https://stg8548.queue.core.windows.net/","table":"https://stg8548.table.core.windows.net/","file":"https://stg8548.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest7312/providers/Microsoft.Storage/storageAccounts/stgjavavm43d95373650","name":"stgjavavm43d95373650","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:26:15.2306952Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:26:15.2306952Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:26:15.2150846Z","primaryEndpoints":{"blob":"https://stgjavavm43d95373650.blob.core.windows.net/","queue":"https://stgjavavm43d95373650.queue.core.windows.net/","table":"https://stgjavavm43d95373650.table.core.windows.net/","file":"https://stgjavavm43d95373650.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3093/providers/Microsoft.Storage/storageAccounts/stg4985","name":"stg4985","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:28:11.7207048Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:28:11.7207048Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:28:11.6894612Z","primaryEndpoints":{"blob":"https://stg4985.blob.core.windows.net/","queue":"https://stg4985.queue.core.windows.net/","table":"https://stg4985.table.core.windows.net/","file":"https://stg4985.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest9977/providers/Microsoft.Storage/storageAccounts/stgbnc9165","name":"stgbnc9165","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:31:59.0738016Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:31:59.0738016Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:31:59.0581787Z","primaryEndpoints":{"blob":"https://stgbnc9165.blob.core.windows.net/","queue":"https://stgbnc9165.queue.core.windows.net/","table":"https://stgbnc9165.table.core.windows.net/","file":"https://stgbnc9165.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest5772/providers/Microsoft.Storage/storageAccounts/stgjavavmcb00830196f","name":"stgjavavmcb00830196f","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T12:54:38.4891429Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T12:54:38.4891429Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T12:54:38.4422705Z","primaryEndpoints":{"blob":"https://stgjavavmcb00830196f.blob.core.windows.net/","queue":"https://stgjavavmcb00830196f.queue.core.windows.net/","table":"https://stgjavavmcb00830196f.table.core.windows.net/","file":"https://stgjavavmcb00830196f.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg1377/providers/Microsoft.Storage/storageAccounts/stg35556","name":"stg35556","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:29:10.3577399Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:29:10.3577399Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:29:10.3421120Z","primaryEndpoints":{"blob":"https://stg35556.blob.core.windows.net/","queue":"https://stg35556.queue.core.windows.net/","table":"https://stg35556.table.core.windows.net/","file":"https://stg35556.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg9de67119f7/providers/Microsoft.Storage/storageAccounts/st3ea29977a4","name":"st3ea29977a4","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9620243Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9620243Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-01T04:00:22.2331421Z","primaryEndpoints":{"blob":"https://st3ea29977a4.blob.core.windows.net/","queue":"https://st3ea29977a4.queue.core.windows.net/","table":"https://st3ea29977a4.table.core.windows.net/","file":"https://st3ea29977a4.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg8678/providers/Microsoft.Storage/storageAccounts/stg24699","name":"stg24699","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9932855Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9932855Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-10-22T20:47:23.3426259Z","primaryEndpoints":{"blob":"https://stg24699.blob.core.windows.net/","queue":"https://stg24699.queue.core.windows.net/","table":"https://stg24699.table.core.windows.net/","file":"https://stg24699.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3819/providers/Microsoft.Storage/storageAccounts/stg2666","name":"stg2666","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T23:15:53.4245534Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T23:15:53.4245534Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T23:15:53.3932595Z","primaryEndpoints":{"blob":"https://stg2666.blob.core.windows.net/","queue":"https://stg2666.queue.core.windows.net/","table":"https://stg2666.table.core.windows.net/","file":"https://stg2666.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest2038/providers/Microsoft.Storage/storageAccounts/stgbnc6669","name":"stgbnc6669","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T12:59:33.1175728Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T12:59:33.1175728Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T12:59:33.0863032Z","primaryEndpoints":{"blob":"https://stgbnc6669.blob.core.windows.net/","queue":"https://stgbnc6669.queue.core.windows.net/","table":"https://stgbnc6669.table.core.windows.net/","file":"https://stgbnc6669.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg1377/providers/Microsoft.Storage/storageAccounts/stg1798","name":"stg1798","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:29:09.9827302Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:29:09.9827302Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:29:09.9671375Z","primaryEndpoints":{"blob":"https://stg1798.blob.core.windows.net/","queue":"https://stg1798.queue.core.windows.net/","table":"https://stg1798.table.core.windows.net/","file":"https://stg1798.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest1501/providers/Microsoft.Storage/storageAccounts/stgbnc4090","name":"stgbnc4090","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:40:34.7555760Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:40:34.7555760Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:40:34.7086970Z","primaryEndpoints":{"blob":"https://stgbnc4090.blob.core.windows.net/","queue":"https://stgbnc4090.queue.core.windows.net/","table":"https://stgbnc4090.table.core.windows.net/","file":"https://stgbnc4090.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest7312/providers/Microsoft.Storage/storageAccounts/stgjavavm57b02213d98","name":"stgjavavm57b02213d98","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:18:03.2964360Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:18:03.2964360Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:18:03.1714019Z","primaryEndpoints":{"blob":"https://stgjavavm57b02213d98.blob.core.windows.net/","queue":"https://stgjavavm57b02213d98.queue.core.windows.net/","table":"https://stgjavavm57b02213d98.table.core.windows.net/","file":"https://stgjavavm57b02213d98.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg9511/providers/Microsoft.Storage/storageAccounts/stg4096","name":"stg4096","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:51:31.4329960Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:51:31.4329960Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:51:31.4174074Z","primaryEndpoints":{"blob":"https://stg4096.blob.core.windows.net/","queue":"https://stg4096.queue.core.windows.net/","table":"https://stg4096.table.core.windows.net/","file":"https://stg4096.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3602/providers/Microsoft.Storage/storageAccounts/stg4719","name":"stg4719","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:38:44.2043180Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:38:44.2043180Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:38:44.1730915Z","primaryEndpoints":{"blob":"https://stg4719.blob.core.windows.net/","queue":"https://stg4719.queue.core.windows.net/","table":"https://stg4719.table.core.windows.net/","file":"https://stg4719.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg771/providers/Microsoft.Storage/storageAccounts/stg1266","name":"stg1266","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:51:55.4657267Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:51:55.4657267Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:51:55.4344476Z","primaryEndpoints":{"blob":"https://stg1266.blob.core.windows.net/","queue":"https://stg1266.queue.core.windows.net/","table":"https://stg1266.table.core.windows.net/","file":"https://stg1266.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest8491/providers/Microsoft.Storage/storageAccounts/stgjavavm0539488888b","name":"stgjavavm0539488888b","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:36:35.0405070Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:36:35.0405070Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:36:35.0092280Z","primaryEndpoints":{"blob":"https://stgjavavm0539488888b.blob.core.windows.net/","queue":"https://stgjavavm0539488888b.queue.core.windows.net/","table":"https://stgjavavm0539488888b.table.core.windows.net/","file":"https://stgjavavm0539488888b.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest6621/providers/Microsoft.Storage/storageAccounts/stgjavavmd2b85295b29","name":"stgjavavmd2b85295b29","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:44:27.7895164Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:44:27.7895164Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:44:27.7738787Z","primaryEndpoints":{"blob":"https://stgjavavmd2b85295b29.blob.core.windows.net/","queue":"https://stgjavavmd2b85295b29.queue.core.windows.net/","table":"https://stgjavavmd2b85295b29.table.core.windows.net/","file":"https://stgjavavmd2b85295b29.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3502/providers/Microsoft.Storage/storageAccounts/stg2889","name":"stg2889","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T08:17:44.3543509Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T08:17:44.3543509Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T08:17:44.3230988Z","primaryEndpoints":{"blob":"https://stg2889.blob.core.windows.net/","queue":"https://stg2889.queue.core.windows.net/","table":"https://stg2889.table.core.windows.net/","file":"https://stg2889.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest8711/providers/Microsoft.Storage/storageAccounts/stgbnc2032","name":"stgbnc2032","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:14:27.1828795Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:14:27.1828795Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:14:27.1672525Z","primaryEndpoints":{"blob":"https://stgbnc2032.blob.core.windows.net/","queue":"https://stgbnc2032.queue.core.windows.net/","table":"https://stgbnc2032.table.core.windows.net/","file":"https://stgbnc2032.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg9511/providers/Microsoft.Storage/storageAccounts/stg3196","name":"stg3196","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:52:22.3698825Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:52:22.3698825Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:52:22.3386431Z","primaryEndpoints":{"blob":"https://stg3196.blob.core.windows.net/","queue":"https://stg3196.queue.core.windows.net/","table":"https://stg3196.table.core.windows.net/","file":"https://stg3196.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest4180/providers/Microsoft.Storage/storageAccounts/stgbnc5175","name":"stgbnc5175","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:50:47.5307698Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:50:47.5307698Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:50:47.4995195Z","primaryEndpoints":{"blob":"https://stgbnc5175.blob.core.windows.net/","queue":"https://stgbnc5175.queue.core.windows.net/","table":"https://stgbnc5175.table.core.windows.net/","file":"https://stgbnc5175.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest2727/providers/Microsoft.Storage/storageAccounts/stgbnc5888","name":"stgbnc5888","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:47:26.5456311Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:47:26.5456311Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:47:26.5143633Z","primaryEndpoints":{"blob":"https://stgbnc5888.blob.core.windows.net/","queue":"https://stgbnc5888.queue.core.windows.net/","table":"https://stgbnc5888.table.core.windows.net/","file":"https://stgbnc5888.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest5560/providers/Microsoft.Storage/storageAccounts/stgjavavm3ce9008563d","name":"stgjavavm3ce9008563d","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:10:52.6901809Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:10:52.6901809Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:10:52.6745969Z","primaryEndpoints":{"blob":"https://stgjavavm3ce9008563d.blob.core.windows.net/","queue":"https://stgjavavm3ce9008563d.queue.core.windows.net/","table":"https://stgjavavm3ce9008563d.table.core.windows.net/","file":"https://stgjavavm3ce9008563d.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgcomvad814855116a9864/providers/Microsoft.Storage/storageAccounts/stgvm32735dbab87839ad","name":"stgvm32735dbab87839ad","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.2745251Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.2745251Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-05T02:16:45.9826459Z","primaryEndpoints":{"blob":"https://stgvm32735dbab87839ad.blob.core.windows.net/","queue":"https://stgvm32735dbab87839ad.queue.core.windows.net/","table":"https://stgvm32735dbab87839ad.table.core.windows.net/","file":"https://stgvm32735dbab87839ad.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest8132/providers/Microsoft.Storage/storageAccounts/stgbnc1363","name":"stgbnc1363","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:17:50.0973565Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:17:50.0973565Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:17:50.0660905Z","primaryEndpoints":{"blob":"https://stgbnc1363.blob.core.windows.net/","queue":"https://stgbnc1363.queue.core.windows.net/","table":"https://stgbnc1363.table.core.windows.net/","file":"https://stgbnc1363.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3502/providers/Microsoft.Storage/storageAccounts/stg1316","name":"stg1316","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T08:17:43.8700047Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T08:17:43.8700047Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T08:17:43.8387584Z","primaryEndpoints":{"blob":"https://stg1316.blob.core.windows.net/","queue":"https://stg1316.queue.core.windows.net/","table":"https://stg1316.table.core.windows.net/","file":"https://stg1316.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3819/providers/Microsoft.Storage/storageAccounts/stg6080","name":"stg6080","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T23:15:53.3307714Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T23:15:53.3307714Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T23:15:53.2995412Z","primaryEndpoints":{"blob":"https://stg6080.blob.core.windows.net/","queue":"https://stg6080.queue.core.windows.net/","table":"https://stg6080.table.core.windows.net/","file":"https://stg6080.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg7434/providers/Microsoft.Storage/storageAccounts/stg379","name":"stg379","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:40:27.5308774Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:40:27.5308774Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:40:27.4683812Z","primaryEndpoints":{"blob":"https://stg379.blob.core.windows.net/","queue":"https://stg379.queue.core.windows.net/","table":"https://stg379.table.core.windows.net/","file":"https://stg379.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest3168/providers/Microsoft.Storage/storageAccounts/stgjavavm3dd27109215","name":"stgjavavm3dd27109215","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T13:03:43.1243832Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T13:03:43.1243832Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T13:03:43.0775007Z","primaryEndpoints":{"blob":"https://stgjavavm3dd27109215.blob.core.windows.net/","queue":"https://stgjavavm3dd27109215.queue.core.windows.net/","table":"https://stgjavavm3dd27109215.table.core.windows.net/","file":"https://stgjavavm3dd27109215.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg771/providers/Microsoft.Storage/storageAccounts/stg8019","name":"stg8019","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T22:52:44.3417181Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T22:52:44.3417181Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T22:52:44.3260939Z","primaryEndpoints":{"blob":"https://stg8019.blob.core.windows.net/","queue":"https://stg8019.queue.core.windows.net/","table":"https://stg8019.table.core.windows.net/","file":"https://stg8019.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rged92722916/providers/Microsoft.Storage/storageAccounts/st39055055d8","name":"st39055055d8","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9620243Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:35.9620243Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-14T08:29:14.1632499Z","primaryEndpoints":{"blob":"https://st39055055d8.blob.core.windows.net/","queue":"https://st39055055d8.queue.core.windows.net/","table":"https://st39055055d8.table.core.windows.net/","file":"https://st39055055d8.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg3093/providers/Microsoft.Storage/storageAccounts/stg31634","name":"stg31634","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T07:28:13.1805425Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T07:28:13.1805425Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T07:28:13.1493074Z","primaryEndpoints":{"blob":"https://stg31634.blob.core.windows.net/","queue":"https://stg31634.queue.core.windows.net/","table":"https://stg31634.table.core.windows.net/","file":"https://stg31634.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest5960/providers/Microsoft.Storage/storageAccounts/stgjavavmbf44552277c","name":"stgjavavmbf44552277c","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T12:56:14.6365579Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T12:56:14.6365579Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T12:56:14.6053295Z","primaryEndpoints":{"blob":"https://stgjavavmbf44552277c.blob.core.windows.net/","queue":"https://stgjavavmbf44552277c.queue.core.windows.net/","table":"https://stgjavavmbf44552277c.table.core.windows.net/","file":"https://stgjavavmbf44552277c.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vmbdtest6805/providers/Microsoft.Storage/storageAccounts/stgjavavm76e93900fb5","name":"stgjavavm76e93900fb5","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T15:28:13.0923956Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T15:28:13.0923956Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T15:28:13.0611455Z","primaryEndpoints":{"blob":"https://stgjavavm76e93900fb5.blob.core.windows.net/","queue":"https://stgjavavm76e93900fb5.queue.core.windows.net/","table":"https://stgjavavm76e93900fb5.table.core.windows.net/","file":"https://stgjavavm76e93900fb5.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg1819/providers/Microsoft.Storage/storageAccounts/stg6604","name":"stg6604","type":"Microsoft.Storage/storageAccounts","location":"eastus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-07T14:47:30.4664398Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-07T14:47:30.4664398Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-07T14:47:30.4195672Z","primaryEndpoints":{"blob":"https://stg6604.blob.core.windows.net/","queue":"https://stg6604.queue.core.windows.net/","table":"https://stg6604.table.core.windows.net/","file":"https://stg6604.file.core.windows.net/"},"primaryLocation":"eastus2","statusOfPrimary":"available","secondaryLocation":"centralus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationpyaffz2jgatrx3wmu5i3ms7e6vq6ffr6c7vpfafzb27ypbrksahwiedyawvx4g/providers/Microsoft.Storage/storageAccounts/acliautomationlab2482","name":"acliautomationlab2482","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"fad847a0-13b6-4061-9649-ad71226702f7"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-06T18:03:05.8117216Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-06T18:03:05.8117216Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-06T18:03:05.7648048Z","primaryEndpoints":{"blob":"https://acliautomationlab2482.blob.core.windows.net/","queue":"https://acliautomationlab2482.queue.core.windows.net/","table":"https://acliautomationlab2482.table.core.windows.net/","file":"https://acliautomationlab2482.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationtoxqsril3nh52zq7j2qv45ep7rtig4xnyg77hmcyl2uuausjromygxx7poq77x/providers/Microsoft.Storage/storageAccounts/acliautomationlab920","name":"acliautomationlab920","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"0958ba1e-279c-465c-a6a8-2b58d04b60b1"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-08T22:52:48.9788934Z","primaryEndpoints":{"blob":"https://acliautomationlab920.blob.core.windows.net/","queue":"https://acliautomationlab920.queue.core.windows.net/","table":"https://acliautomationlab920.table.core.windows.net/","file":"https://acliautomationlab920.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01/providers/Microsoft.Storage/storageAccounts/acliautomationlab2281","name":"acliautomationlab2281","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"72f1b266-2a21-4f0a-af01-934c93c72e6e"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-07T16:46:33.749166Z","primaryEndpoints":{"blob":"https://acliautomationlab2281.blob.core.windows.net/","queue":"https://acliautomationlab2281.queue.core.windows.net/","table":"https://acliautomationlab2281.table.core.windows.net/","file":"https://acliautomationlab2281.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01q2ksq7ibjhnl6y3qahzaq67qjcuv3p3xuhqhg6nufdyu6sttjlioho5vlbmp/providers/Microsoft.Storage/storageAccounts/acliautomationlab9808","name":"acliautomationlab9808","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"568e6db7-10b6-40e1-af55-4e5c0c9460b3"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-03T04:09:43.1153175Z","primaryEndpoints":{"blob":"https://acliautomationlab9808.blob.core.windows.net/","queue":"https://acliautomationlab9808.queue.core.windows.net/","table":"https://acliautomationlab9808.table.core.windows.net/","file":"https://acliautomationlab9808.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01p5mb65te4noiwqbh7ni3sggmdrhbawq2atk5mc6elgdat5qkg6fuguonzmvj/providers/Microsoft.Storage/storageAccounts/acliautomationlab9396","name":"acliautomationlab9396","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"ba56a262-8f28-4665-86d9-18a308784945"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-08T20:14:17.6792122Z","primaryEndpoints":{"blob":"https://acliautomationlab9396.blob.core.windows.net/","queue":"https://acliautomationlab9396.queue.core.windows.net/","table":"https://acliautomationlab9396.table.core.windows.net/","file":"https://acliautomationlab9396.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01ei2lu47wac7ixneeciagpf7ocqwvjvrq6rvkjl5hr2t3tyqkrzjdrsyd5lom/providers/Microsoft.Storage/storageAccounts/acliautomationlab4923","name":"acliautomationlab4923","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"db05f622-e24b-4bad-8265-0042a9feacff"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-26T20:28:36.5037123Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-26T20:28:36.5037123Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-26T20:28:36.3943699Z","primaryEndpoints":{"blob":"https://acliautomationlab4923.blob.core.windows.net/","queue":"https://acliautomationlab4923.queue.core.windows.net/","table":"https://acliautomationlab4923.table.core.windows.net/","file":"https://acliautomationlab4923.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation014o3znldng4uswc6mo6fhrx7gjnqitwa7b4ygnel5rhm624kjc53acrmyl3rk/providers/Microsoft.Storage/storageAccounts/acliautomationlab1633","name":"acliautomationlab1633","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"e33eb9e2-9aa6-4024-90b0-44509f6beded"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-06T18:03:01.1799270Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-06T18:03:01.1799270Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-06T18:03:01.1486631Z","primaryEndpoints":{"blob":"https://acliautomationlab1633.blob.core.windows.net/","queue":"https://acliautomationlab1633.queue.core.windows.net/","table":"https://acliautomationlab1633.table.core.windows.net/","file":"https://acliautomationlab1633.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationr7zmwrv545myosbhrhgmvyxvh473lloj24vcvwx5xuabi7hadxngt4sg7cbfxm/providers/Microsoft.Storage/storageAccounts/acliautomationlab4621","name":"acliautomationlab4621","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"3acb626c-e8a0-431d-bd15-47d2472c013f"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-07T18:36:05.7790991Z","primaryEndpoints":{"blob":"https://acliautomationlab4621.blob.core.windows.net/","queue":"https://acliautomationlab4621.queue.core.windows.net/","table":"https://acliautomationlab4621.table.core.windows.net/","file":"https://acliautomationlab4621.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation/providers/Microsoft.Storage/storageAccounts/acliautomationlab2987","name":"acliautomationlab2987","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"9f45d4bf-7e01-4684-9438-37c712728db1"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-07T16:48:01.7641299Z","primaryEndpoints":{"blob":"https://acliautomationlab2987.blob.core.windows.net/","queue":"https://acliautomationlab2987.queue.core.windows.net/","table":"https://acliautomationlab2987.table.core.windows.net/","file":"https://acliautomationlab2987.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01l6uben7lla33aijx72dhaf3wb7dlqb2u7ixr7vhmojrwbr6e5gv2rvdneg5r/providers/Microsoft.Storage/storageAccounts/acliautomationlab1471","name":"acliautomationlab1471","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"48fc5481-154a-40d8-a96c-90f85a3186b5"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-26T15:33:35.4529781Z","primaryEndpoints":{"blob":"https://acliautomationlab1471.blob.core.windows.net/","queue":"https://acliautomationlab1471.queue.core.windows.net/","table":"https://acliautomationlab1471.table.core.windows.net/","file":"https://acliautomationlab1471.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgl32osgy7cgkf2gfcwwpbcd5u76nxdn3k3r3kodgy6mqtntek4u6evygklnq5j4alp/providers/Microsoft.Storage/storageAccounts/clitest4bj7lpyqt63vmlicy","name":"clitest4bj7lpyqt63vmlicy","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:47.7602879Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:47.7602879Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:11:47.7134125Z","primaryEndpoints":{"blob":"https://clitest4bj7lpyqt63vmlicy.blob.core.windows.net/","queue":"https://clitest4bj7lpyqt63vmlicy.queue.core.windows.net/","table":"https://clitest4bj7lpyqt63vmlicy.table.core.windows.net/","file":"https://clitest4bj7lpyqt63vmlicy.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003","name":"clitest000003","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:14.1064068Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:14.1064068Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:12:14.0439010Z","primaryEndpoints":{"blob":"https://clitest000003.blob.core.windows.net/","queue":"https://clitest000003.queue.core.windows.net/","table":"https://clitest000003.table.core.windows.net/","file":"https://clitest000003.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgcv22bl3p5jculym7mxzp4qrzni5wnq3cmtnvsu52yhtwvwicm3fe3k6m24yqdilgh/providers/Microsoft.Storage/storageAccounts/clireg23zq5h4f67b5091810","name":"clireg23zq5h4f67b5091810","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"containerregistry":"clireg23zq5h4f67b5wu"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T09:18:14.1652856Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T09:18:14.1652856Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T09:18:14.1184391Z","primaryEndpoints":{"blob":"https://clireg23zq5h4f67b5091810.blob.core.windows.net/","queue":"https://clireg23zq5h4f67b5091810.queue.core.windows.net/","table":"https://clireg23zq5h4f67b5091810.table.core.windows.net/","file":"https://clireg23zq5h4f67b5091810.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation014m5le4sxlxnlbtvhekxljqndmwiuvvczqg2qumloh3nw3a6dg6qfqz65dczz/providers/Microsoft.Storage/storageAccounts/acliautomationlab2832","name":"acliautomationlab2832","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"ec24f56f-0a82-42f5-ae26-f391815aaf39"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-02T07:38:16.9674949Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-02T07:38:16.9674949Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-02T07:38:16.9356739Z","primaryEndpoints":{"blob":"https://acliautomationlab2832.blob.core.windows.net/","queue":"https://acliautomationlab2832.queue.core.windows.net/","table":"https://acliautomationlab2832.table.core.windows.net/","file":"https://acliautomationlab2832.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgdck3uxgfru5tm5ikoovn76skc4ldgtdq2qwxnli35y5tprl44fji7ebjsrqoftih5/providers/Microsoft.Storage/storageAccounts/clitestmhylproyn6v45bhrk","name":"clitestmhylproyn6v45bhrk","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:19.2774391Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:19.2774391Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:11:19.2305445Z","primaryEndpoints":{"blob":"https://clitestmhylproyn6v45bhrk.blob.core.windows.net/","queue":"https://clitestmhylproyn6v45bhrk.queue.core.windows.net/","table":"https://clitestmhylproyn6v45bhrk.table.core.windows.net/","file":"https://clitestmhylproyn6v45bhrk.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationbvd5rqbmr4xfzxbbls4vvm4zl66fz5ykv73nqx3rtougzgxhksyjpn3l43txu3/providers/Microsoft.Storage/storageAccounts/acliautomationlab386","name":"acliautomationlab386","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"40c3e5e9-6d70-41a5-9ba0-dedd33f96963"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-02T07:38:24.9254634Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-02T07:38:24.9254634Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-02T07:38:24.9098324Z","primaryEndpoints":{"blob":"https://acliautomationlab386.blob.core.windows.net/","queue":"https://acliautomationlab386.queue.core.windows.net/","table":"https://acliautomationlab386.table.core.windows.net/","file":"https://acliautomationlab386.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgcv22bl3p5jculym7mxzp4qrzni5wnq3cmtnvsu52yhtwvwicm3fe3k6m24yqdilgh/providers/Microsoft.Storage/storageAccounts/clitestaycxoezila4zvz3oc","name":"clitestaycxoezila4zvz3oc","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T09:17:31.1771220Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T09:17:31.1771220Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T09:17:31.1146217Z","primaryEndpoints":{"blob":"https://clitestaycxoezila4zvz3oc.blob.core.windows.net/","queue":"https://clitestaycxoezila4zvz3oc.queue.core.windows.net/","table":"https://clitestaycxoezila4zvz3oc.table.core.windows.net/","file":"https://clitestaycxoezila4zvz3oc.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationzlgmnmobxi6bkdkatnybuntm5ic5csahw33ox6rmthro3hjfgfqujqkdlrxfje/providers/Microsoft.Storage/storageAccounts/acliautomationlab3782","name":"acliautomationlab3782","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"b9dc7e5c-5ff3-4687-bf01-83833a4ccd53"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-04T06:41:36.4612382Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-04T06:41:36.4612382Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-04T06:41:36.4143632Z","primaryEndpoints":{"blob":"https://acliautomationlab3782.blob.core.windows.net/","queue":"https://acliautomationlab3782.queue.core.windows.net/","table":"https://acliautomationlab3782.table.core.windows.net/","file":"https://acliautomationlab3782.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01bn7wa4ubnulp6m4khobeloz6mvbxxg6ygalgryhylt2zpjgqcumow6ih26ud/providers/Microsoft.Storage/storageAccounts/acliautomationlab8383","name":"acliautomationlab8383","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"417cc8eb-3e86-4a90-9ce0-e215c7a4b9be"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-31T19:38:42.9687239Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-31T19:38:42.9687239Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-31T19:38:42.9375080Z","primaryEndpoints":{"blob":"https://acliautomationlab8383.blob.core.windows.net/","queue":"https://acliautomationlab8383.queue.core.windows.net/","table":"https://acliautomationlab8383.table.core.windows.net/","file":"https://acliautomationlab8383.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg2claqiiin2xfwkiskmfrvz2arekdocwsl7ff63gkroosvxv2whwbgdanw4tgesatc/providers/Microsoft.Storage/storageAccounts/clitest6uk5hhihzzby4ytcq","name":"clitest6uk5hhihzzby4ytcq","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T08:12:51.8379955Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T08:12:51.8379955Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T08:12:51.7754853Z","primaryEndpoints":{"blob":"https://clitest6uk5hhihzzby4ytcq.blob.core.windows.net/","queue":"https://clitest6uk5hhihzzby4ytcq.queue.core.windows.net/","table":"https://clitest6uk5hhihzzby4ytcq.table.core.windows.net/","file":"https://clitest6uk5hhihzzby4ytcq.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01ldu2m7bvtvotoelxgw2icl5sivnvoixudxyql6l42hseiv5stbbuulg7g3h4/providers/Microsoft.Storage/storageAccounts/acliautomationlab9248","name":"acliautomationlab9248","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"3ff20302-c399-4d32-88ed-2c84952da1c3"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7914959Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-04T00:40:16.2044479Z","primaryEndpoints":{"blob":"https://acliautomationlab9248.blob.core.windows.net/","queue":"https://acliautomationlab9248.queue.core.windows.net/","table":"https://acliautomationlab9248.table.core.windows.net/","file":"https://acliautomationlab9248.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation016zx7ulhvrc7ng6fcdst72y2t2fgbvbyueykqnw4d76aq4gyxd267voh5nixs/providers/Microsoft.Storage/storageAccounts/acliautomationlab8049","name":"acliautomationlab8049","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"909a5513-261d-4cd4-a8dd-19a18a866f77"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-08T02:56:53.0185142Z","primaryEndpoints":{"blob":"https://acliautomationlab8049.blob.core.windows.net/","queue":"https://acliautomationlab8049.queue.core.windows.net/","table":"https://acliautomationlab8049.table.core.windows.net/","file":"https://acliautomationlab8049.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation013mvyy356dnjmb5iwivgwu3gp2bgpjaik6sx3zxuqg36vhnchoc5vwvzzvxu4/providers/Microsoft.Storage/storageAccounts/acliautomationlab8828","name":"acliautomationlab8828","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"33f5487f-2303-4193-9ec1-9f4820d78d00"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-05T07:38:28.7575542Z","primaryEndpoints":{"blob":"https://acliautomationlab8828.blob.core.windows.net/","queue":"https://acliautomationlab8828.queue.core.windows.net/","table":"https://acliautomationlab8828.table.core.windows.net/","file":"https://acliautomationlab8828.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg5ekbhxjo6bqmf6jq6v3hdloqo6c2aowo6vhlg3huqevasa6vpuncpyhmjjvz2tlae/providers/Microsoft.Storage/storageAccounts/clitestysso67rm2b3ckvaap","name":"clitestysso67rm2b3ckvaap","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:31.0284038Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:31.0284038Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"ResolvingDns","creationTime":"2018-02-08T18:12:30.9815153Z","primaryEndpoints":{"blob":"https://clitestysso67rm2b3ckvaap.blob.core.windows.net/","queue":"https://clitestysso67rm2b3ckvaap.queue.core.windows.net/","table":"https://clitestysso67rm2b3ckvaap.table.core.windows.net/","file":"https://clitestysso67rm2b3ckvaap.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01iy5u4xyaed2wgxpr3oshkjvesx7eypiagoyydutuuwbrotz44zddkgr7qfay/providers/Microsoft.Storage/storageAccounts/acliautomationlab1940","name":"acliautomationlab1940","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"867204a5-7d7c-41c3-866f-845829532736"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-04T06:41:24.3204875Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-04T06:41:24.3204875Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-04T06:41:24.2579926Z","primaryEndpoints":{"blob":"https://acliautomationlab1940.blob.core.windows.net/","queue":"https://acliautomationlab1940.queue.core.windows.net/","table":"https://acliautomationlab1940.table.core.windows.net/","file":"https://acliautomationlab1940.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationrmo5dcfkn2tcdobw3qhwsafqbqgge3o7emagrlfoxgsioc2jr7e5cjztqewzla/providers/Microsoft.Storage/storageAccounts/acliautomationlab6710","name":"acliautomationlab6710","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"90a7effd-a5b2-48ce-ac70-88b48096881c"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-03T04:10:00.39885Z","primaryEndpoints":{"blob":"https://acliautomationlab6710.blob.core.windows.net/","queue":"https://acliautomationlab6710.queue.core.windows.net/","table":"https://acliautomationlab6710.table.core.windows.net/","file":"https://acliautomationlab6710.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationpytfzqow2fyxfbik7w4k34yguitwrmhunpwy4ozpgsy243novl4fjnlev2zfly/providers/Microsoft.Storage/storageAccounts/acliautomationlab1008","name":"acliautomationlab1008","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"7dfd84e6-8815-45cd-a927-4ea20034ff9e"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-31T19:38:56.9344030Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-31T19:38:56.9344030Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-31T19:38:56.8562798Z","primaryEndpoints":{"blob":"https://acliautomationlab1008.blob.core.windows.net/","queue":"https://acliautomationlab1008.queue.core.windows.net/","table":"https://acliautomationlab1008.table.core.windows.net/","file":"https://acliautomationlab1008.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgto2ghq4h25fuawweucv6ste57zdppblaq4wjjkogzmaqyvsk7j62layubppuog7ey/providers/Microsoft.Storage/storageAccounts/clitestsfuvmkmzvamdsi47q","name":"clitestsfuvmkmzvamdsi47q","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:38.9141035Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:38.9141035Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:09:38.8672665Z","primaryEndpoints":{"blob":"https://clitestsfuvmkmzvamdsi47q.blob.core.windows.net/","queue":"https://clitestsfuvmkmzvamdsi47q.queue.core.windows.net/","table":"https://clitestsfuvmkmzvamdsi47q.table.core.windows.net/","file":"https://clitestsfuvmkmzvamdsi47q.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:37.6366830Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:11:37.6366830Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:11:37.5741907Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationgbb6evd4zx72bc5wpfijxlcbpo5n24rkj2kg3y57jpl2mkxc6w5x5exnsantug/providers/Microsoft.Storage/storageAccounts/acliautomationlab5191","name":"acliautomationlab5191","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"bfb18d73-f216-4bdc-aba6-252bba91adb2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-26T20:28:36.4256121Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-26T20:28:36.4256121Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-26T20:28:36.3631077Z","primaryEndpoints":{"blob":"https://acliautomationlab5191.blob.core.windows.net/","queue":"https://acliautomationlab5191.queue.core.windows.net/","table":"https://acliautomationlab5191.table.core.windows.net/","file":"https://acliautomationlab5191.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationrcjorwrtg3oudx2a6akfwe5e6n7ocvpleklcwwqclzazlly76iaddtkjqtdwbe/providers/Microsoft.Storage/storageAccounts/acliautomationlab5146","name":"acliautomationlab5146","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"6734c4ab-6f8d-46e5-afec-0ed8275cccc7"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T16:45:00.1329602Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T16:45:00.1329602Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T16:45:00.0861198Z","primaryEndpoints":{"blob":"https://acliautomationlab5146.blob.core.windows.net/","queue":"https://acliautomationlab5146.queue.core.windows.net/","table":"https://acliautomationlab5146.table.core.windows.net/","file":"https://acliautomationlab5146.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01undmfcuvtas2vq76b7cdf2bcb522g55yjxgq26oqjumof4h3bkhfa5f5galo/providers/Microsoft.Storage/storageAccounts/acliautomationlab3187","name":"acliautomationlab3187","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"3cd350aa-2568-49ea-a4a2-41dd07e9e8ac"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-02T05:13:09.9630161Z","primaryEndpoints":{"blob":"https://acliautomationlab3187.blob.core.windows.net/","queue":"https://acliautomationlab3187.queue.core.windows.net/","table":"https://acliautomationlab3187.table.core.windows.net/","file":"https://acliautomationlab3187.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationsxtwbd7crie33fjnfjz2zp7ibcmfz4gyjh5mvqoqkz3y7txx7g34rl7mmoucew/providers/Microsoft.Storage/storageAccounts/acliautomationlab3276","name":"acliautomationlab3276","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"9f96ba9d-7858-43e0-a93a-9424a36a0975"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7602255Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-05T07:38:39.4934331Z","primaryEndpoints":{"blob":"https://acliautomationlab3276.blob.core.windows.net/","queue":"https://acliautomationlab3276.queue.core.windows.net/","table":"https://acliautomationlab3276.table.core.windows.net/","file":"https://acliautomationlab3276.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Premium_LRS","tier":"Premium"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sdk-test/providers/Microsoft.Storage/storageAccounts/sdkteststor","name":"sdkteststor","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.8539723Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-05-21T04:29:51.1804697Z","primaryEndpoints":{"blob":"https://sdkteststor.blob.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationyl5duneg4gkn25csd2rd4lbm2yjjq5n33z24jxikgchafi3xnfgokwxtsor56r/providers/Microsoft.Storage/storageAccounts/acliautomationlab1231","name":"acliautomationlab1231","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"f500a48c-e003-403a-b50a-903a96f6d226"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7133409Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7133409Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-08T02:59:00.3810995Z","primaryEndpoints":{"blob":"https://acliautomationlab1231.blob.core.windows.net/","queue":"https://acliautomationlab1231.queue.core.windows.net/","table":"https://acliautomationlab1231.table.core.windows.net/","file":"https://acliautomationlab1231.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg6246/providers/Microsoft.Storage/storageAccounts/javawebapp735267887","name":"javawebapp735267887","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T12:44:08.0866484Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T12:44:08.0866484Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T12:44:08.0397682Z","primaryEndpoints":{"blob":"https://javawebapp735267887.blob.core.windows.net/","queue":"https://javawebapp735267887.queue.core.windows.net/","table":"https://javawebapp735267887.table.core.windows.net/","file":"https://javawebapp735267887.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01ptu376gffvlvblokeyvsvqoefixzvz2uosy7gvqozzktnhvpufmcc5ut4ytd/providers/Microsoft.Storage/storageAccounts/acliautomationlab2257","name":"acliautomationlab2257","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"e6cd699b-4ac2-4022-a435-960bc7d3ee9f"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7289702Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-08T22:52:45.5675859Z","primaryEndpoints":{"blob":"https://acliautomationlab2257.blob.core.windows.net/","queue":"https://acliautomationlab2257.queue.core.windows.net/","table":"https://acliautomationlab2257.table.core.windows.net/","file":"https://acliautomationlab2257.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation01kr3ll4q2x5vuwozn4xz6zoybb4odfjebsjtwcxrehup7jnzykb47tmcsohyz/providers/Microsoft.Storage/storageAccounts/acliautomationlab6989","name":"acliautomationlab6989","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"3e585a6c-7c78-494c-99f8-a56e8734fb6d"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T16:44:45.7241602Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T16:44:45.7241602Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T16:44:45.6772890Z","primaryEndpoints":{"blob":"https://acliautomationlab6989.blob.core.windows.net/","queue":"https://acliautomationlab6989.queue.core.windows.net/","table":"https://acliautomationlab6989.table.core.windows.net/","file":"https://acliautomationlab6989.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomationt3zeu76ormrubewlqrnf4ykozdfs3pr2ahftj4d33tuybrpobavi5sbtcdcfc4/providers/Microsoft.Storage/storageAccounts/acliautomationlab9106","name":"acliautomationlab9106","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"498bf2d2-520c-42fd-b974-269015697a98"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7758767Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-04T00:40:33.0829429Z","primaryEndpoints":{"blob":"https://acliautomationlab9106.blob.core.windows.net/","queue":"https://acliautomationlab9106.queue.core.windows.net/","table":"https://acliautomationlab9106.table.core.windows.net/","file":"https://acliautomationlab9106.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/javacsmrg9129/providers/Microsoft.Storage/storageAccounts/javawebapp575092367","name":"javawebapp575092367","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T02:46:42.1621654Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T02:46:42.1621654Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T02:46:42.1153349Z","primaryEndpoints":{"blob":"https://javawebapp575092367.blob.core.windows.net/","queue":"https://javawebapp575092367.queue.core.windows.net/","table":"https://javawebapp575092367.table.core.windows.net/","file":"https://javawebapp575092367.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cliautomation2nscoydrikfz67cluekp6xqv4zkltay5x7ubl3qh2yb73qfdjq3j24fzcrd766/providers/Microsoft.Storage/storageAccounts/acliautomationlab2578","name":"acliautomationlab2578","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"8cf9f8f3-ff0c-43a5-809d-b4be39f17fa8"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T01:40:36.7446210Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-02T05:13:20.2601933Z","primaryEndpoints":{"blob":"https://acliautomationlab2578.blob.core.windows.net/","queue":"https://acliautomationlab2578.queue.core.windows.net/","table":"https://acliautomationlab2578.table.core.windows.net/","file":"https://acliautomationlab2578.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rga3f3zxudbuy3iipjzrrdghm5c5gqapaqnp3bxhrqtyvmpvin2ees27mrrzg2j5t6e/providers/Microsoft.Storage/storageAccounts/clitest4ibjeed42cdh5vxdc","name":"clitest4ibjeed42cdh5vxdc","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:02.8966124Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:02.8966124Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:12:02.8497510Z","primaryEndpoints":{"blob":"https://clitest4ibjeed42cdh5vxdc.blob.core.windows.net/","queue":"https://clitest4ibjeed42cdh5vxdc.queue.core.windows.net/","table":"https://clitest4ibjeed42cdh5vxdc.table.core.windows.net/","file":"https://clitest4ibjeed42cdh5vxdc.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxstorage","name":"wilxstorage","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-05T21:40:13.3804210Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-05T21:40:13.3804210Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-05T21:40:13.3335235Z","primaryEndpoints":{"blob":"https://wilxstorage.blob.core.windows.net/","queue":"https://wilxstorage.queue.core.windows.net/","table":"https://wilxstorage.table.core.windows.net/","file":"https://wilxstorage.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorage-secondary.blob.core.windows.net/","queue":"https://wilxstorage-secondary.queue.core.windows.net/","table":"https://wilxstorage-secondary.table.core.windows.net/"}}}]}'}
+ body: {string: '{"value":[{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/o0zeaawp7t7n4skagntpri4","name":"o0zeaawp7t7n4skagntpri4","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.2637195Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.2637195Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.2168154Z","primaryEndpoints":{"blob":"https://o0zeaawp7t7n4skagntpri4.blob.core.windows.net/","queue":"https://o0zeaawp7t7n4skagntpri4.queue.core.windows.net/","table":"https://o0zeaawp7t7n4skagntpri4.table.core.windows.net/","file":"https://o0zeaawp7t7n4skagntpri4.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/zeaawp7t7n4skagntpub","name":"zeaawp7t7n4skagntpub","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.5762847Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.5762847Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.5294154Z","primaryEndpoints":{"blob":"https://zeaawp7t7n4skagntpub.blob.core.windows.net/","queue":"https://zeaawp7t7n4skagntpub.queue.core.windows.net/","table":"https://zeaawp7t7n4skagntpub.table.core.windows.net/","file":"https://zeaawp7t7n4skagntpub.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/storGRP1/providers/Microsoft.Storage/storageAccounts/storacc2","name":"storacc2","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-09T18:24:41.3214880Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-09T18:24:41.3214880Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-09T18:24:41.2902466Z","primaryEndpoints":{"blob":"https://storacc2.blob.core.windows.net/","queue":"https://storacc2.queue.core.windows.net/","table":"https://storacc2.table.core.windows.net/","file":"https://storacc2.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/zeaawp7t7n4skdiag0","name":"zeaawp7t7n4skdiag0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.7951275Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.7951275Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.7482499Z","primaryEndpoints":{"blob":"https://zeaawp7t7n4skdiag0.blob.core.windows.net/","queue":"https://zeaawp7t7n4skdiag0.queue.core.windows.net/","table":"https://zeaawp7t7n4skdiag0.table.core.windows.net/","file":"https://zeaawp7t7n4skdiag0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyReallyCoolVM202/providers/Microsoft.Storage/storageAccounts/mynewaccount1234","name":"mynewaccount1234","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-27T21:34:15.2961058Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-27T21:34:15.2961058Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-27T21:34:15.2335978Z","primaryEndpoints":{"blob":"https://mynewaccount1234.blob.core.windows.net/","queue":"https://mynewaccount1234.queue.core.windows.net/","table":"https://mynewaccount1234.table.core.windows.net/","file":"https://mynewaccount1234.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/60zeaawp7t7n4skagntpri1","name":"60zeaawp7t7n4skagntpri1","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:59.4978129Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:59.4978129Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:33:59.3727743Z","primaryEndpoints":{"blob":"https://60zeaawp7t7n4skagntpri1.blob.core.windows.net/","queue":"https://60zeaawp7t7n4skagntpri1.queue.core.windows.net/","table":"https://60zeaawp7t7n4skagntpri1.table.core.windows.net/","file":"https://60zeaawp7t7n4skagntpri1.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/00zeaawp7t7n4skagntpri0","name":"00zeaawp7t7n4skagntpri0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:57.1533290Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:57.1533290Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:33:57.1064646Z","primaryEndpoints":{"blob":"https://00zeaawp7t7n4skagntpri0.blob.core.windows.net/","queue":"https://00zeaawp7t7n4skagntpri0.queue.core.windows.net/","table":"https://00zeaawp7t7n4skagntpri0.table.core.windows.net/","file":"https://00zeaawp7t7n4skagntpri0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Premium_LRS","tier":"Premium"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxgroupdisks925","name":"wilxgroupdisks925","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-13T17:14:42.2678046Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-13T17:14:42.2678046Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-13T17:14:42.2522063Z","primaryEndpoints":{"blob":"https://wilxgroupdisks925.blob.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/i0zeaawp7t7n4skagntpri3","name":"i0zeaawp7t7n4skagntpri3","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:59.2790240Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:33:59.2790240Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:33:59.2321471Z","primaryEndpoints":{"blob":"https://i0zeaawp7t7n4skagntpri3.blob.core.windows.net/","queue":"https://i0zeaawp7t7n4skagntpri3.queue.core.windows.net/","table":"https://i0zeaawp7t7n4skagntpri3.table.core.windows.net/","file":"https://i0zeaawp7t7n4skagntpri3.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/zeaawp7t7n4skexhb0","name":"zeaawp7t7n4skexhb0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.8576146Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.8576146Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.7951275Z","primaryEndpoints":{"blob":"https://zeaawp7t7n4skexhb0.blob.core.windows.net/","queue":"https://zeaawp7t7n4skexhb0.queue.core.windows.net/","table":"https://zeaawp7t7n4skexhb0.table.core.windows.net/","file":"https://zeaawp7t7n4skexhb0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/zeaawp7t7n4skmstr0","name":"zeaawp7t7n4skmstr0","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.5294154Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.5294154Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.4825090Z","primaryEndpoints":{"blob":"https://zeaawp7t7n4skmstr0.blob.core.windows.net/","queue":"https://zeaawp7t7n4skmstr0.queue.core.windows.net/","table":"https://zeaawp7t7n4skmstr0.table.core.windows.net/","file":"https://zeaawp7t7n4skmstr0.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitesti4aotnzdo4/providers/Microsoft.Storage/storageAccounts/c0zeaawp7t7n4skagntpri2","name":"c0zeaawp7t7n4skagntpri2","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.8889157Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-18T18:34:00.8889157Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-01-18T18:34:00.8263879Z","primaryEndpoints":{"blob":"https://c0zeaawp7t7n4skagntpri2.blob.core.windows.net/","queue":"https://c0zeaawp7t7n4skagntpri2.queue.core.windows.net/","table":"https://c0zeaawp7t7n4skagntpri2.table.core.windows.net/","file":"https://c0zeaawp7t7n4skagntpri2.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available"}},{"identity":{"principalId":"4b358eca-1f6e-4da5-a90c-5cfda2b6ca83","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/amar/providers/Microsoft.Storage/storageAccounts/eastustorage1","name":"eastustorage1","type":"Microsoft.Storage/storageAccounts","location":"eastus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-21T02:38:33.4035294Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-21T02:38:33.4035294Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-03-21T02:38:33.3253713Z","primaryEndpoints":{"blob":"https://eastustorage1.blob.core.windows.net/","queue":"https://eastustorage1.queue.core.windows.net/","table":"https://eastustorage1.table.core.windows.net/","file":"https://eastustorage1.file.core.windows.net/"},"primaryLocation":"eastus","statusOfPrimary":"available","secondaryLocation":"westus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroupeastus2/providers/Microsoft.Storage/storageAccounts/wilxstorageeastus2","name":"wilxstorageeastus2","type":"Microsoft.Storage/storageAccounts","location":"eastus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-30T18:32:07.3429304Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-30T18:32:07.3429304Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-30T18:32:07.2804546Z","primaryEndpoints":{"blob":"https://wilxstorageeastus2.blob.core.windows.net/","queue":"https://wilxstorageeastus2.queue.core.windows.net/","table":"https://wilxstorageeastus2.table.core.windows.net/","file":"https://wilxstorageeastus2.file.core.windows.net/"},"primaryLocation":"eastus2","statusOfPrimary":"available","secondaryLocation":"centralus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorageeastus2-secondary.blob.core.windows.net/","queue":"https://wilxstorageeastus2-secondary.queue.core.windows.net/","table":"https://wilxstorageeastus2-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgp3j2bt5nvsedgoxpqt6xtucbamnbo7jkgrcckdigt3aclxopqxio6lxjlqrj3czo7/providers/Microsoft.Storage/storageAccounts/clitestt7lrbv35ny3lgnfak","name":"clitestt7lrbv35ny3lgnfak","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1522571Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1522571Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:17:59.2725025Z","primaryEndpoints":{"blob":"https://clitestt7lrbv35ny3lgnfak.blob.core.windows.net/","queue":"https://clitestt7lrbv35ny3lgnfak.queue.core.windows.net/","table":"https://clitestt7lrbv35ny3lgnfak.table.core.windows.net/","file":"https://clitestt7lrbv35ny3lgnfak.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/vscode-spot/providers/Microsoft.Storage/storageAccounts/spot1936b9594f55526a14","name":"spot1936b9594f55526a14","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-30T04:32:25.2179795Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-30T04:32:25.2179795Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-30T04:32:25.0930004Z","primaryEndpoints":{"blob":"https://spot1936b9594f55526a14.blob.core.windows.net/","queue":"https://spot1936b9594f55526a14.queue.core.windows.net/","table":"https://spot1936b9594f55526a14.table.core.windows.net/","file":"https://spot1936b9594f55526a14.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/awilxlab6038","name":"awilxlab6038","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"hidden-DevTestLabs-LabUId":"8887c3df-fb11-4c4a-b5ea-fb85003cd93d"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-11T22:14:43.7809117Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-11T22:14:43.7809117Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-11T22:14:43.6871681Z","primaryEndpoints":{"blob":"https://awilxlab6038.blob.core.windows.net/","queue":"https://awilxlab6038.queue.core.windows.net/","table":"https://awilxlab6038.table.core.windows.net/","file":"https://awilxlab6038.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy985","name":"foozy985","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2460333Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2460333Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-11T22:39:05.4716715Z","primaryEndpoints":{"blob":"https://foozy985.blob.core.windows.net/","queue":"https://foozy985.queue.core.windows.net/","table":"https://foozy985.table.core.windows.net/","file":"https://foozy985.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/amar/providers/Microsoft.Storage/storageAccounts/testacc7561","name":"testacc7561","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-13T01:22:28.4626746Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-13T01:22:28.4626746Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-03-13T01:22:28.4157923Z","primaryEndpoints":{"blob":"https://testacc7561.blob.core.windows.net/","queue":"https://testacc7561.queue.core.windows.net/","table":"https://testacc7561.table.core.windows.net/","file":"https://testacc7561.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgcy7ox5qk3ftoqfvnj2gsphlw7o3kwgyxw7zuvep5lgezszs2ik2wsar4amtsck7mw/providers/Microsoft.Storage/storageAccounts/clitestjjf7hxdcmump2f5jj","name":"clitestjjf7hxdcmump2f5jj","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:25.4950895Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:25.4950895Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:48:25.4013159Z","primaryEndpoints":{"blob":"https://clitestjjf7hxdcmump2f5jj.blob.core.windows.net/","queue":"https://clitestjjf7hxdcmump2f5jj.queue.core.windows.net/","table":"https://clitestjjf7hxdcmump2f5jj.table.core.windows.net/","file":"https://clitestjjf7hxdcmump2f5jj.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxstorage2","name":"wilxstorage2","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-16T19:43:30.0571507Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-16T19:43:30.0571507Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-16T19:43:29.9946790Z","primaryEndpoints":{"blob":"https://wilxstorage2.blob.core.windows.net/","queue":"https://wilxstorage2.queue.core.windows.net/","table":"https://wilxstorage2.table.core.windows.net/","file":"https://wilxstorage2.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorage2-secondary.blob.core.windows.net/","queue":"https://wilxstorage2-secondary.queue.core.windows.net/","table":"https://wilxstorage2-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_ZRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/foostore103","name":"foostore103","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1991330Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1991330Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-05-25T23:52:18.1234838Z","primaryEndpoints":{"blob":"https://foostore103.blob.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_ZRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/foostore102","name":"foostore102","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1835342Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1835342Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-05-25T19:32:49.5192125Z","primaryEndpoints":{"blob":"https://foostore102.blob.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgcy7ox5qk3ftoqfvnj2gsphlw7o3kwgyxw7zuvep5lgezszs2ik2wsar4amtsck7mw/providers/Microsoft.Storage/storageAccounts/clitestwtqzdriopzuaexpa2","name":"clitestwtqzdriopzuaexpa2","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:06.2918736Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:06.2918736Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:48:06.2137287Z","primaryEndpoints":{"blob":"https://clitestwtqzdriopzuaexpa2.blob.core.windows.net/","queue":"https://clitestwtqzdriopzuaexpa2.queue.core.windows.net/","table":"https://clitestwtqzdriopzuaexpa2.table.core.windows.net/","file":"https://clitestwtqzdriopzuaexpa2.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitest345","name":"zitest345","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.8313291Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.8313291Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-07T21:55:13.9394493Z","primaryEndpoints":{"blob":"https://zitest345.blob.core.windows.net/","queue":"https://zitest345.queue.core.windows.net/","table":"https://zitest345.table.core.windows.net/","file":"https://zitest345.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitest","name":"zitest","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.7688032Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.7688032Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-05-03T20:07:05.353746Z","primaryEndpoints":{"blob":"https://zitest.blob.core.windows.net/","queue":"https://zitest.queue.core.windows.net/","table":"https://zitest.table.core.windows.net/","file":"https://zitest.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitest1012","name":"zitest1012","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.8001033Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:59.8001033Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2017-07-07T02:12:27.684591Z","primaryEndpoints":{"blob":"https://zitest1012.blob.core.windows.net/","queue":"https://zitest1012.queue.core.windows.net/","table":"https://zitest1012.table.core.windows.net/","file":"https://zitest1012.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgvnc44s5iiyknx6iehpbmjsf7y6xsqhrqvyb5opb2yr5wagkqftcqlbbpfkralo2id/providers/Microsoft.Storage/storageAccounts/clitesttc4beb6y7zcdc7zly","name":"clitesttc4beb6y7zcdc7zly","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1522571Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1522571Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:16:26.3626209Z","primaryEndpoints":{"blob":"https://clitesttc4beb6y7zcdc7zly.blob.core.windows.net/","queue":"https://clitesttc4beb6y7zcdc7zly.queue.core.windows.net/","table":"https://clitesttc4beb6y7zcdc7zly.table.core.windows.net/","file":"https://clitesttc4beb6y7zcdc7zly.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lmazuel-docker-machine/providers/Microsoft.Storage/storageAccounts/vhdsn51j1sdv8scmv98fmq8q","name":"vhdsn51j1sdv8scmv98fmq8q","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.3085287Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.3085287Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-03T21:43:45.5227216Z","primaryEndpoints":{"blob":"https://vhdsn51j1sdv8scmv98fmq8q.blob.core.windows.net/","queue":"https://vhdsn51j1sdv8scmv98fmq8q.queue.core.windows.net/","table":"https://vhdsn51j1sdv8scmv98fmq8q.table.core.windows.net/","file":"https://vhdsn51j1sdv8scmv98fmq8q.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgpr2r634eggrjey2jx7izbldaygmfpo4oz23evpt6gldownza2h3gwzfam5h7nffwd/providers/Microsoft.Storage/storageAccounts/clitestbo4aozjkl4cp5ceex","name":"clitestbo4aozjkl4cp5ceex","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:21.6512920Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:21.6512920Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:48:21.5575410Z","primaryEndpoints":{"blob":"https://clitestbo4aozjkl4cp5ceex.blob.core.windows.net/","queue":"https://clitestbo4aozjkl4cp5ceex.queue.core.windows.net/","table":"https://clitestbo4aozjkl4cp5ceex.table.core.windows.net/","file":"https://clitestbo4aozjkl4cp5ceex.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy984","name":"foozy984","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2460333Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2460333Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-11T18:22:12.9346214Z","primaryEndpoints":{"blob":"https://foozy984.blob.core.windows.net/","queue":"https://foozy984.queue.core.windows.net/","table":"https://foozy984.table.core.windows.net/","file":"https://foozy984.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgzlponhuihq2f3r2ncatzpvyupukdm6ixm63jq2whzuvbuchjhov4vejrj4uspf7ju/providers/Microsoft.Storage/storageAccounts/clitestracm62rkgrryoiiig","name":"clitestracm62rkgrryoiiig","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T16:57:00.9900481Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T16:57:00.9900481Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T16:57:00.9119456Z","primaryEndpoints":{"blob":"https://clitestracm62rkgrryoiiig.blob.core.windows.net/","queue":"https://clitestracm62rkgrryoiiig.queue.core.windows.net/","table":"https://clitestracm62rkgrryoiiig.table.core.windows.net/","file":"https://clitestracm62rkgrryoiiig.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/testacc209","name":"testacc209","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.3156846Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.3156846Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-01-26T19:04:16.5466637Z","primaryEndpoints":{"blob":"https://testacc209.blob.core.windows.net/","queue":"https://testacc209.queue.core.windows.net/","table":"https://testacc209.table.core.windows.net/","file":"https://testacc209.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cloud-shell-storage-westus/providers/Microsoft.Storage/storageAccounts/cs400977cdb163fx435fx9c3","name":"cs400977cdb163fx435fx9c3","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"ms-resource-usage":"azure-cloud-shell"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-10-31T20:15:56.3292318Z","primaryEndpoints":{"blob":"https://cs400977cdb163fx435fx9c3.blob.core.windows.net/","queue":"https://cs400977cdb163fx435fx9c3.queue.core.windows.net/","table":"https://cs400977cdb163fx435fx9c3.table.core.windows.net/","file":"https://cs400977cdb163fx435fx9c3.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgwgjgodisz2vcsd55l3bixhutc5fbnyeyjuyatvgcv5k7sfzmxd6q2w4krnuq53zb7/providers/Microsoft.Storage/storageAccounts/clitestwwftaylvfj7kendae","name":"clitestwwftaylvfj7kendae","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:22:09.5983536Z","primaryEndpoints":{"blob":"https://clitestwwftaylvfj7kendae.blob.core.windows.net/","queue":"https://clitestwwftaylvfj7kendae.queue.core.windows.net/","table":"https://clitestwwftaylvfj7kendae.table.core.windows.net/","file":"https://clitestwwftaylvfj7kendae.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ziptxtdepl51/providers/Microsoft.Storage/storageAccounts/36y3ij42opovcstandardsa","name":"36y3ij42opovcstandardsa","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1054140Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1054140Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-15T01:53:43.4548265Z","primaryEndpoints":{"blob":"https://36y3ij42opovcstandardsa.blob.core.windows.net/","queue":"https://36y3ij42opovcstandardsa.queue.core.windows.net/","table":"https://36y3ij42opovcstandardsa.table.core.windows.net/","file":"https://36y3ij42opovcstandardsa.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitestb21","name":"zitestb21","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0656866Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0656866Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-08-23T20:10:50.2990885Z","primaryEndpoints":{"blob":"https://zitestb21.blob.core.windows.net/","queue":"https://zitestb21.queue.core.windows.net/","table":"https://zitestb21.table.core.windows.net/","file":"https://zitestb21.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy891","name":"foozy891","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2147571Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2147571Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-08T00:35:23.7925542Z","primaryEndpoints":{"blob":"https://foozy891.blob.core.windows.net/","queue":"https://foozy891.queue.core.windows.net/","table":"https://foozy891.table.core.windows.net/","file":"https://foozy891.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgh73m2h6rniak5bbqyrad43luxpotdofmlndof5secsxxee53kwocysqnklf4bn7yd/providers/Microsoft.Storage/storageAccounts/clitesttohpa6d65i7atctbm","name":"clitesttohpa6d65i7atctbm","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1678828Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:05:15.5574981Z","primaryEndpoints":{"blob":"https://clitesttohpa6d65i7atctbm.blob.core.windows.net/","queue":"https://clitesttohpa6d65i7atctbm.queue.core.windows.net/","table":"https://clitesttohpa6d65i7atctbm.table.core.windows.net/","file":"https://clitesttohpa6d65i7atctbm.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgzgkjvgqueh6ylbuj5ktuxx6m6njxoabzpow65vpyumzmtjctna2jgz5lg2ggslj7v/providers/Microsoft.Storage/storageAccounts/clitestncgrg5ytsvot5spgf","name":"clitestncgrg5ytsvot5spgf","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:27.7307380Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:27.7307380Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:27.5276141Z","primaryEndpoints":{"blob":"https://clitestncgrg5ytsvot5spgf.blob.core.windows.net/","queue":"https://clitestncgrg5ytsvot5spgf.queue.core.windows.net/","table":"https://clitestncgrg5ytsvot5spgf.table.core.windows.net/","file":"https://clitestncgrg5ytsvot5spgf.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:18.3231444Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:18.3231444Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:48:18.2450195Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ZiTest/providers/Microsoft.Storage/storageAccounts/ztesty3456","name":"ztesty3456","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-13T01:01:13.5308331Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-13T01:01:13.5308331Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-01-13T01:01:13.4995571Z","primaryEndpoints":{"blob":"https://ztesty3456.blob.core.windows.net/","queue":"https://ztesty3456.queue.core.windows.net/","table":"https://ztesty3456.table.core.windows.net/","file":"https://ztesty3456.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003","name":"clitest000003","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:37.4795170Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:37.4795170Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:48:37.3857709Z","primaryEndpoints":{"blob":"https://clitest000003.blob.core.windows.net/","queue":"https://clitest000003.queue.core.windows.net/","table":"https://clitest000003.table.core.windows.net/","file":"https://clitest000003.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/some-unique-rg-name-second/providers/Microsoft.Storage/storageAccounts/tianosatest79","name":"tianosatest79","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:46.6281789Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:46.6281789Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-05-24T23:16:33.9028352Z","primaryEndpoints":{"blob":"https://tianosatest79.blob.core.windows.net/","queue":"https://tianosatest79.queue.core.windows.net/","table":"https://tianosatest79.table.core.windows.net/","file":"https://tianosatest79.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy894","name":"foozy894","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2303818Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.2303818Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-08T00:39:03.09634Z","primaryEndpoints":{"blob":"https://foozy894.blob.core.windows.net/","queue":"https://foozy894.queue.core.windows.net/","table":"https://foozy894.table.core.windows.net/","file":"https://foozy894.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg7175/providers/Microsoft.Storage/storageAccounts/testacc7447","name":"testacc7447","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4719947Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4719947Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-21T19:13:51.907911Z","primaryEndpoints":{"blob":"https://testacc7447.blob.core.windows.net/","queue":"https://testacc7447.queue.core.windows.net/","table":"https://testacc7447.table.core.windows.net/","file":"https://testacc7447.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitesta21","name":"zitesta21","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0344305Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0344305Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-08-23T20:01:18.8418933Z","primaryEndpoints":{"blob":"https://zitesta21.blob.core.windows.net/","queue":"https://zitesta21.queue.core.windows.net/","table":"https://zitesta21.table.core.windows.net/","file":"https://zitesta21.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgcmxzjqe2ev2tarnzledhk4m7mk5dsnxznyqtyvx7dixjnjgqs4h5dh37jqoyzj5l5/providers/Microsoft.Storage/storageAccounts/cliteste7bmlfupz34m23jnc","name":"cliteste7bmlfupz34m23jnc","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1366608Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1366608Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-12-11T00:17:56.913505Z","primaryEndpoints":{"blob":"https://cliteste7bmlfupz34m23jnc.blob.core.windows.net/","queue":"https://cliteste7bmlfupz34m23jnc.queue.core.windows.net/","table":"https://cliteste7bmlfupz34m23jnc.table.core.windows.net/","file":"https://cliteste7bmlfupz34m23jnc.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg9639/providers/Microsoft.Storage/storageAccounts/testacc3070","name":"testacc3070","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.3469905Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.3469905Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-21T18:42:53.9505428Z","primaryEndpoints":{"blob":"https://testacc3070.blob.core.windows.net/","queue":"https://testacc3070.queue.core.windows.net/","table":"https://testacc3070.table.core.windows.net/","file":"https://testacc3070.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/zitesty21","name":"zitesty21","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0969536Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:11:00.0969536Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-08-23T19:55:37.1159138Z","primaryEndpoints":{"blob":"https://zitesty21.blob.core.windows.net/","queue":"https://zitesty21.queue.core.windows.net/","table":"https://zitesty21.table.core.windows.net/","file":"https://zitesty21.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg3787/providers/Microsoft.Storage/storageAccounts/testacc5739","name":"testacc5739","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4406899Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4406899Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-21T02:06:37.3496304Z","primaryEndpoints":{"blob":"https://testacc5739.blob.core.windows.net/","queue":"https://testacc5739.queue.core.windows.net/","table":"https://testacc5739.table.core.windows.net/","file":"https://testacc5739.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg8761/providers/Microsoft.Storage/storageAccounts/testacc3915","name":"testacc3915","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4094279Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-27T09:10:45.4094279Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-21T01:35:41.2354283Z","primaryEndpoints":{"blob":"https://testacc3915.blob.core.windows.net/","queue":"https://testacc3915.queue.core.windows.net/","table":"https://testacc3915.table.core.windows.net/","file":"https://testacc3915.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foozap002/providers/Microsoft.Storage/storageAccounts/foozy89","name":"foozy89","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{"key1":"value1","key2":"value2"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1991330Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1991330Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-07-07T22:15:52.1441975Z","primaryEndpoints":{"blob":"https://foozy89.blob.core.windows.net/","queue":"https://foozy89.queue.core.windows.net/","table":"https://foozy89.table.core.windows.net/","file":"https://foozy89.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxgroupdiag169","name":"wilxgroupdiag169","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-29T22:34:01.9561177Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-29T22:34:01.9561177Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-29T22:34:01.8935895Z","primaryEndpoints":{"blob":"https://wilxgroupdiag169.blob.core.windows.net/","queue":"https://wilxgroupdiag169.queue.core.windows.net/","table":"https://wilxgroupdiag169.table.core.windows.net/","file":"https://wilxgroupdiag169.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Premium_LRS","tier":"Premium"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxgroupdisks899","name":"wilxgroupdisks899","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-11T23:26:25.3653337Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-11T23:26:25.3653337Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-11T23:26:25.2872072Z","primaryEndpoints":{"blob":"https://wilxgroupdisks899.blob.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg6sqzt5phdo5viklk7dquteui74rn3vn2tioolq5dsdnz2znxn6fdwaa47uyu2i4eg/providers/Microsoft.Storage/storageAccounts/clitestgjx5vdkyf74377ieg","name":"clitestgjx5vdkyf74377ieg","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1366608Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:59.1366608Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-11-26T06:09:48.4001597Z","primaryEndpoints":{"blob":"https://clitestgjx5vdkyf74377ieg.blob.core.windows.net/","queue":"https://clitestgjx5vdkyf74377ieg.queue.core.windows.net/","table":"https://clitestgjx5vdkyf74377ieg.table.core.windows.net/","file":"https://clitestgjx5vdkyf74377ieg.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup/providers/Microsoft.Storage/storageAccounts/wilxstorage","name":"wilxstorage","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-15T17:47:45.4399402Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-15T17:47:45.4399402Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-15T17:47:45.3930700Z","primaryEndpoints":{"blob":"https://wilxstorage.blob.core.windows.net/","queue":"https://wilxstorage.queue.core.windows.net/","table":"https://wilxstorage.table.core.windows.net/","file":"https://wilxstorage.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorage-secondary.blob.core.windows.net/","queue":"https://wilxstorage-secondary.queue.core.windows.net/","table":"https://wilxstorage-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zitest/providers/Microsoft.Storage/storageAccounts/foostore12978","name":"foostore12978","type":"Microsoft.Storage/storageAccounts","location":"westeurope","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-22T22:18:07.1937355Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-22T22:18:07.1937355Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2016-04-29T06:55:06.4412159Z","primaryEndpoints":{"blob":"https://foostore12978.blob.core.windows.net/","queue":"https://foostore12978.queue.core.windows.net/","table":"https://foostore12978.table.core.windows.net/","file":"https://foostore12978.file.core.windows.net/"},"primaryLocation":"westeurope","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"BlobStorage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/t-chwong/providers/Microsoft.Storage/storageAccounts/tchwong","name":"tchwong","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-01T18:07:07.4006066Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-01T18:07:07.4006066Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-03-01T18:07:07.3381076Z","primaryEndpoints":{"blob":"https://tchwong.blob.core.windows.net/","table":"https://tchwong.table.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitestlab1/providers/Microsoft.Storage/storageAccounts/acliautomationlab8902","name":"acliautomationlab8902","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{"hidden-DevTestLabs-LabUId":"ca9ec547-32c5-422d-b3d2-25906ed71959"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T16:51:47.2662871Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T16:51:47.2662871Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T16:51:47.2194106Z","primaryEndpoints":{"blob":"https://acliautomationlab8902.blob.core.windows.net/","queue":"https://acliautomationlab8902.queue.core.windows.net/","table":"https://acliautomationlab8902.table.core.windows.net/","file":"https://acliautomationlab8902.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"identity":{"principalId":"ebc8557b-5159-4db6-8b04-699759875130","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgls6pde2luhubksnkjxebnrqthsdi6dcfpxcrhlmgnvdkkimk6b2usub6ehq3ocrsm/providers/Microsoft.Storage/storageAccounts/clitesttrevle6ezqkjtfdl3","name":"clitesttrevle6ezqkjtfdl3","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-14T22:32:56.5552622Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-14T22:32:56.5552622Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-14T22:32:56.5084099Z","primaryEndpoints":{"blob":"https://clitesttrevle6ezqkjtfdl3.blob.core.windows.net/","queue":"https://clitesttrevle6ezqkjtfdl3.queue.core.windows.net/","table":"https://clitesttrevle6ezqkjtfdl3.table.core.windows.net/","file":"https://clitesttrevle6ezqkjtfdl3.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/lmazuel-testfunction-msi/providers/Microsoft.Storage/storageAccounts/lmazueltestfuncbbd8","name":"lmazueltestfuncbbd8","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1691771Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1691771Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-10-11T19:03:26.3781645Z","primaryEndpoints":{"blob":"https://lmazueltestfuncbbd8.blob.core.windows.net/","queue":"https://lmazueltestfuncbbd8.queue.core.windows.net/","table":"https://lmazueltestfuncbbd8.table.core.windows.net/","file":"https://lmazueltestfuncbbd8.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cloud-shell-storage-southcentralus/providers/Microsoft.Storage/storageAccounts/cs700977cdb163fx435fx9c3","name":"cs700977cdb163fx435fx9c3","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{"ms-resource-usage":"azure-cloud-shell"},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1691771Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1691771Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-08-09T21:59:02.7061936Z","primaryEndpoints":{"blob":"https://cs700977cdb163fx435fx9c3.blob.core.windows.net/","queue":"https://cs700977cdb163fx435fx9c3.queue.core.windows.net/","table":"https://cs700977cdb163fx435fx9c3.table.core.windows.net/","file":"https://cs700977cdb163fx435fx9c3.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/t-chwong/providers/Microsoft.Storage/storageAccounts/tchwongdiag300","name":"tchwongdiag300","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-20T18:15:54.9483325Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-20T18:15:54.9483325Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-20T18:15:54.8858351Z","primaryEndpoints":{"blob":"https://tchwongdiag300.blob.core.windows.net/","queue":"https://tchwongdiag300.queue.core.windows.net/","table":"https://tchwongdiag300.table.core.windows.net/","file":"https://tchwongdiag300.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}},{"sku":{"name":"Standard_GRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefunctions-southcentralus/providers/Microsoft.Storage/storageAccounts/azurefunctions2e2e624d","name":"azurefunctions2e2e624d","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1535349Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-01-08T22:33:58.1535349Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2017-09-22T21:04:32.5702152Z","primaryEndpoints":{"blob":"https://azurefunctions2e2e624d.blob.core.windows.net/","queue":"https://azurefunctions2e2e624d.queue.core.windows.net/","table":"https://azurefunctions2e2e624d.table.core.windows.net/","file":"https://azurefunctions2e2e624d.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available","secondaryLocation":"northcentralus","statusOfSecondary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"StorageV2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup2/providers/Microsoft.Storage/storageAccounts/wilxstorage0","name":"wilxstorage0","type":"Microsoft.Storage/storageAccounts","location":"westus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-13T01:05:28.4648959Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-13T01:05:28.4648959Z"}},"keySource":"Microsoft.Storage"},"accessTier":"Hot","provisioningState":"Succeeded","creationTime":"2018-04-13T01:05:28.4023820Z","primaryEndpoints":{"blob":"https://wilxstorage0.blob.core.windows.net/","queue":"https://wilxstorage0.queue.core.windows.net/","table":"https://wilxstorage0.table.core.windows.net/","file":"https://wilxstorage0.file.core.windows.net/"},"primaryLocation":"westus2","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgmr6jo34yofyafj3n6gjbhrgmrd6pwgguthc2u235qfle6y6ztyzrlkuqn544s7cop/providers/Microsoft.Storage/storageAccounts/clitestnlmd52jlcmr4ce7b4","name":"clitestnlmd52jlcmr4ce7b4","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T20:14:07.3500611Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T20:14:07.3500611Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T20:14:07.3188286Z","primaryEndpoints":{"blob":"https://clitestnlmd52jlcmr4ce7b4.blob.core.windows.net/","queue":"https://clitestnlmd52jlcmr4ce7b4.queue.core.windows.net/","table":"https://clitestnlmd52jlcmr4ce7b4.table.core.windows.net/","file":"https://clitestnlmd52jlcmr4ce7b4.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup3/providers/Microsoft.Storage/storageAccounts/wilxstorageworm","name":"wilxstorageworm","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-13T22:36:53.1534839Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-13T22:36:53.1534839Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-13T22:36:53.0909769Z","primaryEndpoints":{"blob":"https://wilxstorageworm.blob.core.windows.net/","queue":"https://wilxstorageworm.queue.core.windows.net/","table":"https://wilxstorageworm.table.core.windows.net/","file":"https://wilxstorageworm.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available","secondaryLocation":"centraluseuap","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorageworm-secondary.blob.core.windows.net/","queue":"https://wilxstorageworm-secondary.queue.core.windows.net/","table":"https://wilxstorageworm-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg326oxnqqn33y3n42vz6x5xol5rvvw3z4o6tladwwtkmcntnsxhhxxtddtrxwm2edj/providers/Microsoft.Storage/storageAccounts/clitestjwzkdsfuou3niutbd","name":"clitestjwzkdsfuou3niutbd","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T20:07:33.1021018Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T20:07:33.1021018Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T20:07:33.0552270Z","primaryEndpoints":{"blob":"https://clitestjwzkdsfuou3niutbd.blob.core.windows.net/","queue":"https://clitestjwzkdsfuou3niutbd.queue.core.windows.net/","table":"https://clitestjwzkdsfuou3niutbd.table.core.windows.net/","file":"https://clitestjwzkdsfuou3niutbd.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgldagdmcl4pklmwzmr3wftx2kidhw7johz6d7tl6m7raetzzfhpqhrfffu5vwqtfxo/providers/Microsoft.Storage/storageAccounts/clitestt6pqb7xneswrh2sp6","name":"clitestt6pqb7xneswrh2sp6","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T17:51:14.8730435Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T17:51:14.8730435Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T17:51:14.8105336Z","primaryEndpoints":{"blob":"https://clitestt6pqb7xneswrh2sp6.blob.core.windows.net/","queue":"https://clitestt6pqb7xneswrh2sp6.queue.core.windows.net/","table":"https://clitestt6pqb7xneswrh2sp6.table.core.windows.net/","file":"https://clitestt6pqb7xneswrh2sp6.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgf3er5m4irbxsxhyil42jxq3t5ehzphmdzn2gortdlrzyw4i6tlgswx2xrcgldp6oh/providers/Microsoft.Storage/storageAccounts/clitestpabilv4yd6qxvguml","name":"clitestpabilv4yd6qxvguml","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T19:20:22.2758006Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T19:20:22.2758006Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T19:20:22.2445526Z","primaryEndpoints":{"blob":"https://clitestpabilv4yd6qxvguml.blob.core.windows.net/","queue":"https://clitestpabilv4yd6qxvguml.queue.core.windows.net/","table":"https://clitestpabilv4yd6qxvguml.table.core.windows.net/","file":"https://clitestpabilv4yd6qxvguml.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgwxiadyatfxsixayqfinia7ybjwo5cfoyw65qpuna3alx3x2diwukx4tkcpwir2mbq/providers/Microsoft.Storage/storageAccounts/clitesta2lvllqz23rgasyf7","name":"clitesta2lvllqz23rgasyf7","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T17:57:25.6818153Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T17:57:25.6818153Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T17:57:25.6193002Z","primaryEndpoints":{"blob":"https://clitesta2lvllqz23rgasyf7.blob.core.windows.net/","queue":"https://clitesta2lvllqz23rgasyf7.queue.core.windows.net/","table":"https://clitesta2lvllqz23rgasyf7.table.core.windows.net/","file":"https://clitesta2lvllqz23rgasyf7.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgoo2qxqtbb56w7uujqzhodrozdh7fxg5wxscql4ndybxkardgqzqvheltadic2zoxf/providers/Microsoft.Storage/storageAccounts/clitestfyixx74gs3loj3isf","name":"clitestfyixx74gs3loj3isf","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T20:34:26.6293927Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T20:34:26.6293927Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T20:34:26.5668681Z","primaryEndpoints":{"blob":"https://clitestfyixx74gs3loj3isf.blob.core.windows.net/","queue":"https://clitestfyixx74gs3loj3isf.queue.core.windows.net/","table":"https://clitestfyixx74gs3loj3isf.table.core.windows.net/","file":"https://clitestfyixx74gs3loj3isf.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgd5ygu6mbq43qw57ncgznekmhwaqlrowjc6dggyk2h6cfwioigvtt3bg7ayqckcwvk/providers/Microsoft.Storage/storageAccounts/clitestixsogcl5p5af5w2p3","name":"clitestixsogcl5p5af5w2p3","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T18:00:02.2397791Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T18:00:02.2397791Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T18:00:02.2087326Z","primaryEndpoints":{"blob":"https://clitestixsogcl5p5af5w2p3.blob.core.windows.net/","queue":"https://clitestixsogcl5p5af5w2p3.queue.core.windows.net/","table":"https://clitestixsogcl5p5af5w2p3.table.core.windows.net/","file":"https://clitestixsogcl5p5af5w2p3.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/wilxgroup3/providers/Microsoft.Storage/storageAccounts/wilxstorageblah","name":"wilxstorageblah","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-17T20:06:51.4259719Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-17T20:06:51.4259719Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-17T20:06:51.3790974Z","primaryEndpoints":{"blob":"https://wilxstorageblah.blob.core.windows.net/","queue":"https://wilxstorageblah.queue.core.windows.net/","table":"https://wilxstorageblah.table.core.windows.net/","file":"https://wilxstorageblah.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available","secondaryLocation":"centraluseuap","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://wilxstorageblah-secondary.blob.core.windows.net/","queue":"https://wilxstorageblah-secondary.queue.core.windows.net/","table":"https://wilxstorageblah-secondary.table.core.windows.net/"}}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgeyg7p46zydk24opv23uowejjybhvp2nqcyqpnmknbs7o3w5c3tocuuygkogbvxz5f/providers/Microsoft.Storage/storageAccounts/clitestcrdofae6jvibomf2w","name":"clitestcrdofae6jvibomf2w","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-20T01:19:55.8214506Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-20T01:19:55.8214506Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-20T01:19:55.7120798Z","primaryEndpoints":{"blob":"https://clitestcrdofae6jvibomf2w.blob.core.windows.net/","queue":"https://clitestcrdofae6jvibomf2w.queue.core.windows.net/","table":"https://clitestcrdofae6jvibomf2w.table.core.windows.net/","file":"https://clitestcrdofae6jvibomf2w.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}},{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rgeblmtd6pv6car44ga6qwvicwjyuxydhhkaharam4nad6uekgqgm2uiisw7v4a3czx/providers/Microsoft.Storage/storageAccounts/clitestcdx4bwlcvgviotc2p","name":"clitestcdx4bwlcvgviotc2p","type":"Microsoft.Storage/storageAccounts","location":"eastus2euap","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-19T22:26:49.0369320Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-19T22:26:49.0369320Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-19T22:26:48.9744081Z","primaryEndpoints":{"blob":"https://clitestcdx4bwlcvgviotc2p.blob.core.windows.net/","queue":"https://clitestcdx4bwlcvgviotc2p.queue.core.windows.net/","table":"https://clitestcdx4bwlcvgviotc2p.table.core.windows.net/","file":"https://clitestcdx4bwlcvgviotc2p.file.core.windows.net/"},"primaryLocation":"eastus2euap","statusOfPrimary":"available"}}]}'}
headers:
cache-control: [no-cache]
- content-length: ['102942']
+ content-length: ['90663']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:12:33 GMT']
+ date: ['Tue, 01 May 2018 21:48:56 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
vary: [Accept-Encoding]
- x-ms-original-request-ids: [7bde2112-007f-4b81-8695-b12c1845475c, 9ac45548-9f9a-4086-87f1-edf0ce8c55f1,
- a535daab-2df2-4364-a409-dfd6f97573ff]
+ x-content-type-options: [nosniff]
+ x-ms-original-request-ids: [84952941-ed5a-414e-b505-85a49764de4e, 775c6a87-b6b4-44fa-8471-51bd67c524e9,
+ 3aff7d4f-2004-49b9-bb1d-ad3757db59f3, 337cb911-05a4-4566-a36c-4dc902966df3,
+ 11991e36-7a48-4abb-86d5-8b5d87913636, f36c456a-beed-4002-a66b-f8d1dacadc0c,
+ b8b72007-5ec6-4d2b-92e6-bb9b9161bfca]
status: {code: 200, message: OK}
- request:
body: null
@@ -266,8 +250,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -276,11 +260,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:12:34 GMT']
+ date: ['Tue, 01 May 2018 21:48:57 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdQTEFKTVJSRk5aV0tKM0ZDVjZLWTc0QVlHQlNONTI1V1pVWnw5Qzg5OUMyOUY2NjJGOUUzLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdLSURPNTRVNTVEV0hQUU9ITUNFM0YyVUI0M0JFU1NWRVBIV3w4MzA4NzY5OEU3NjQ5MkMxLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_logging_operations.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_logging_operations.yaml
index 118979aee44..2876eda243f 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_logging_operations.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_logging_operations.yaml
@@ -1,43 +1,45 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "eastus2", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-02T00:05:52Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['111']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2018-05-02T00:05:52Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['385']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:12:35 GMT']
+ date: ['Wed, 02 May 2018 00:05:54 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
- body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
+ body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "eastus2",
"properties": {"supportsHttpsTrafficOnly": false}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [storage account create]
Connection: [keep-alive]
- Content-Length: ['125']
+ Content-Length: ['126']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:12:36 GMT']
+ date: ['Wed, 02 May 2018 00:05:57 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/bcaf28f7-9d0d-4d86-a13f-7bff77542cd9?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/eastus2/asyncoperations/aa00d0bc-b1ea-49ae-894b-206785dde9a1?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/bcaf28f7-9d0d-4d86-a13f-7bff77542cd9?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/eastus2/asyncoperations/aa00d0bc-b1ea-49ae-894b-206785dde9a1?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"eastus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-02T00:05:57.4340385Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-02T00:05:57.4340385Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-02T00:05:57.1840317Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"eastus2","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:12:54 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/bcaf28f7-9d0d-4d86-a13f-7bff77542cd9?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/bcaf28f7-9d0d-4d86-a13f-7bff77542cd9?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:36.6221437Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:12:36.6221437Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:12:36.5596728Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
- headers:
- cache-control: [no-cache]
- content-length: ['1231']
+ content-length: ['1233']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:13:11 GMT']
+ date: ['Wed, 02 May 2018 00:06:15 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"6qR6dKj7g7RTJoDWdCk7rW0nYYiL9eDdBVhouJi6thVrYSX2EOx+10CulCihWLGD3eq8MIs9JZyyaarTcYg8tQ==","permissions":"FULL"},{"keyName":"key2","value":"nlU0j3NKXYpGzHYeqKVlkbEIBTj5TmjObc+Zxu7uiILrjATh6/oEdvhlPaIPFr7hZTGRYLh0jEIRlO6gMtJsDA==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"q0gHRpLyuUQQzq7YTxniF8sTj5wYCVg2zd2wsw68/nQNmKsEy22aUpIXGwircNRzbczHGYxIEQQ50pp4Jj9EqA==","permissions":"FULL"},{"keyName":"key2","value":"xITc2KcgaEZnIO9H6VzVCTIYWWnOyz1KEVTP8SJMsGxyVfYLmsiSim6UFovFH6hdtIo8j9fiCSMxNLI1tRr6FQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:13:12 GMT']
+ date: ['Wed, 02 May 2018 00:06:15 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"6qR6dKj7g7RTJoDWdCk7rW0nYYiL9eDdBVhouJi6thVrYSX2EOx+10CulCihWLGD3eq8MIs9JZyyaarTcYg8tQ==","permissions":"FULL"},{"keyName":"key2","value":"nlU0j3NKXYpGzHYeqKVlkbEIBTj5TmjObc+Zxu7uiILrjATh6/oEdvhlPaIPFr7hZTGRYLh0jEIRlO6gMtJsDA==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"q0gHRpLyuUQQzq7YTxniF8sTj5wYCVg2zd2wsw68/nQNmKsEy22aUpIXGwircNRzbczHGYxIEQQ50pp4Jj9EqA==","permissions":"FULL"},{"keyName":"key2","value":"xITc2KcgaEZnIO9H6VzVCTIYWWnOyz1KEVTP8SJMsGxyVfYLmsiSim6UFovFH6hdtIo8j9fiCSMxNLI1tRr6FQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:13:12 GMT']
+ date: ['Wed, 02 May 2018 00:06:17 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,26 +147,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1187']
- status: {code: 200, message: OK}
-- request:
- body: null
- headers:
- Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:13:13 GMT']
- x-ms-version: ['2017-07-29']
- method: GET
- uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
- response:
- body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalsefalse"}
- headers:
- content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:13:13 GMT']
- server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
- transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
@@ -196,8 +156,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:13:13 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:06:17 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/?restype=service&comp=properties
@@ -206,7 +166,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:13:12 GMT']
+ date: ['Wed, 02 May 2018 00:06:17 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -215,9 +175,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:13:13 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:06:18 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
response:
@@ -226,58 +187,60 @@ interactions:
headers:
cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:13:13 GMT']
+ date: ['Wed, 02 May 2018 00:06:18 GMT']
server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
- body: '
-
- 1.0FalseTrueFalseTrue1'
+ body: null
headers:
Connection: [keep-alive]
- Content-Length: ['264']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:13:13 GMT']
- x-ms-version: ['2017-07-29']
- method: PUT
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:06:18 GMT']
+ x-ms-version: ['2017-11-09']
+ method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
- body: {string: ''}
+ body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalsefalse"}
headers:
- date: ['Thu, 08 Feb 2018 18:13:13 GMT']
+ content-type: [application/xml]
+ date: ['Wed, 02 May 2018 00:06:18 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
- status: {code: 202, message: Accepted}
+ x-ms-version: ['2017-11-09']
+ status: {code: 200, message: OK}
- request:
- body: null
+ body: '
+
+ 1.0FalseTrueFalseTrue1'
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:13:14 GMT']
- x-ms-version: ['2017-07-29']
- method: GET
+ Content-Length: ['264']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:06:19 GMT']
+ x-ms-version: ['2017-11-09']
+ method: PUT
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
- body: {string: "\uFEFF1.0truefalsefalsetrue11.0truetruetrue71.0falsefalsefalse"}
+ body: {string: ''}
headers:
- content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:13:14 GMT']
+ date: ['Wed, 02 May 2018 00:06:19 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
- status: {code: 200, message: OK}
+ x-ms-version: ['2017-11-09']
+ status: {code: 202, message: Accepted}
- request:
body: null
headers:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:13:14 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:06:19 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/?restype=service&comp=properties
@@ -286,7 +249,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:13:15 GMT']
+ date: ['Wed, 02 May 2018 00:06:19 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -295,9 +258,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:13:14 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:06:20 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
response:
@@ -306,10 +270,30 @@ interactions:
headers:
cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:13:15 GMT']
+ date: ['Wed, 02 May 2018 00:06:20 GMT']
server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
+ status: {code: 200, message: OK}
+- request:
+ body: null
+ headers:
+ Connection: [keep-alive]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:06:20 GMT']
+ x-ms-version: ['2017-11-09']
+ method: GET
+ uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
+ response:
+ body: {string: "\uFEFF1.0truefalsefalsetrue11.0truetruetrue71.0falsefalsefalse"}
+ headers:
+ content-type: [application/xml]
+ date: ['Wed, 02 May 2018 00:06:20 GMT']
+ server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
+ transfer-encoding: [chunked]
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -321,8 +305,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -331,11 +315,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:13:15 GMT']
+ date: ['Wed, 02 May 2018 00:06:21 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkc3QjVYUFhBSFhUWUpaWUNFM1ZaUk5OR0dGSlpHMzNLR0pCRHxCMEQ2MzJDMDMxRUY0NkQyLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdPRFNKWDczU01TV0k0SUpKT1ZET0k1VlRTR1c0R0dBN1JHSHw2MThEM0Q0MTQxNDFGNDU1LUVBU1RVUzIiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czIifQ?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1184']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_metrics_operations.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_metrics_operations.yaml
index 71b96b29311..bb88126d078 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_metrics_operations.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_metrics_operations.yaml
@@ -1,43 +1,45 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "eastus2", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-02T00:09:48Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['111']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2018-05-02T00:09:48Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['385']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:32:30 GMT']
+ date: ['Wed, 02 May 2018 00:09:50 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1193']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
- body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
+ body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "eastus2",
"properties": {"supportsHttpsTrafficOnly": false}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [storage account create]
Connection: [keep-alive]
- Content-Length: ['125']
+ Content-Length: ['126']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:32:32 GMT']
+ date: ['Wed, 02 May 2018 00:09:53 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b6bb4bdd-6dff-4ff0-9efa-47843f4032ea?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/eastus2/asyncoperations/61792499-c148-4e4b-ba7f-e624bd4b166c?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1176']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b6bb4bdd-6dff-4ff0-9efa-47843f4032ea?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/eastus2/asyncoperations/61792499-c148-4e4b-ba7f-e624bd4b166c?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"eastus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-02T00:09:53.4202268Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-02T00:09:53.4202268Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-02T00:09:53.3420553Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"eastus2","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:32:49 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b6bb4bdd-6dff-4ff0-9efa-47843f4032ea?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b6bb4bdd-6dff-4ff0-9efa-47843f4032ea?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:32:31.8011350Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:32:31.8011350Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:32:31.7698664Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
- headers:
- cache-control: [no-cache]
- content-length: ['1231']
+ content-length: ['1233']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:33:06 GMT']
+ date: ['Wed, 02 May 2018 00:10:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"RObavWU3Txtf+Kmxx6TExOxD8NvcCpDbw28MhX5A66oABUnf9+bOpp1YfckeeB+oPo8dUQvOelCgjhWPG+A64w==","permissions":"FULL"},{"keyName":"key2","value":"8wEWZv+WfhDBuf3mEzsAGcDW3xphAz93YmgwnoHqf3q0CXHi+9OR01OELlNK+fPJrDtRwaqzteG2/oMP3JUbqw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"hQ8wjwvE8IPuEwJ01IPlXzxztd97kS3MtQMX++TD7XHWxiPVtjrdP65vrhjxndeFupFot5U1sZf7F4qPl6FZGw==","permissions":"FULL"},{"keyName":"key2","value":"7VoTC+AOT5FOtt5k9iF3NXkJxiC6FMGz259BkwXGWGXKjuaaK+QRbnHaRFW27040zpQ9c2p6wml64pwE28G0Mg==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:33:20 GMT']
+ date: ['Wed, 02 May 2018 00:10:11 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1193']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -147,8 +125,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:20 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:12 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/?restype=service&comp=properties
@@ -157,7 +135,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:20 GMT']
+ date: ['Wed, 02 May 2018 00:10:12 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -166,9 +144,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:20 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:12 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
response:
@@ -177,17 +156,18 @@ interactions:
headers:
cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:20 GMT']
+ date: ['Wed, 02 May 2018 00:10:13 GMT']
server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:21 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:13 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
@@ -196,7 +176,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:21 GMT']
+ date: ['Wed, 02 May 2018 00:10:13 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -205,9 +185,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:21 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:13 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -215,10 +196,10 @@ interactions:
\ />false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:21 GMT']
+ date: ['Wed, 02 May 2018 00:10:14 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -227,15 +208,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['446']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:21 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:14 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:33:22 GMT']
+ date: ['Wed, 02 May 2018 00:10:14 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -246,8 +228,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:22 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:15 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/?restype=service&comp=properties
@@ -256,7 +238,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:22 GMT']
+ date: ['Wed, 02 May 2018 00:10:14 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -265,9 +247,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:22 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:15 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
response:
@@ -276,17 +259,18 @@ interactions:
headers:
cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:22 GMT']
+ date: ['Wed, 02 May 2018 00:10:15 GMT']
server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:22 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:16 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
@@ -295,7 +279,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:22 GMT']
+ date: ['Wed, 02 May 2018 00:10:16 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -304,9 +288,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:22 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 00:10:16 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -314,10 +299,10 @@ interactions:
\ />false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:22 GMT']
+ date: ['Wed, 02 May 2018 00:10:16 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -329,8 +314,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -339,11 +324,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 19:33:23 GMT']
+ date: ['Wed, 02 May 2018 00:10:17 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdaTFNKV0tHNUY1TEIzWjMyN0lWM01BNE5QSTNWSlBXSU1MWXw2N0Q3RkUzNjI2MDQzRTE5LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdJNFpCTkNaR1dPQkFURElPQ1FNQVlQTDdJR0NGQVlMVFdSWHw1REVGMjcwQkY2NzE4NTAzLUVBU1RVUzIiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czIifQ?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1185']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_renew_account_key.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_renew_account_key.yaml
index 399477a56a1..33b3a2fd15d 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_renew_account_key.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_renew_account_key.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:49:59Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:49:59Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:13:56 GMT']
+ date: ['Tue, 01 May 2018 21:50:00 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:13:58 GMT']
+ date: ['Tue, 01 May 2018 21:50:01 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/281ec227-7120-49d0-9c81-2c56b619ddda?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/2f1d275e-a16c-442b-988d-d3d6a4bdec29?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1183']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/281ec227-7120-49d0-9c81-2c56b619ddda?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/2f1d275e-a16c-442b-988d-d3d6a4bdec29?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:13:58.2789270Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:13:58.2789270Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:13:58.2320462Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:01.6687806Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:01.6687806Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:01.5750003Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:14:15 GMT']
+ date: ['Tue, 01 May 2018 21:50:18 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -94,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"3xm3m4nifDmOu5kPW4T5fs4JiFH88CHx64PJoT7BzbnA7UFM4Z3hp4FgpovR2JDQScNvz7Lj2pFD/OEGiOt29w==","permissions":"FULL"},{"keyName":"key2","value":"ToGf4g1TF0nk0H5fAkk1wfusicg6Ldu0RRMqdaBbt0bCcbqhtrmO7OvghZOk9fTHvTBJFq6xF9J8z54Ds7CFnQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"MsV6XNzsFn8Dl96ueZ/lOXAqx/BU7BWUUBpA93zqEFornsiyr249WEi5zUxunfFpw7moIE2NRbpbXO5Mh29ubQ==","permissions":"FULL"},{"keyName":"key2","value":"VhbqdaROJJJw09wrtPp7g/RU3v0zXjWpk809y/Qw8jYmZF2mVEcS23RzeH8/aK6pAT4nGJ8VttgrdAmB6NOYFQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:14:16 GMT']
+ date: ['Tue, 01 May 2018 21:50:20 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -112,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
@@ -124,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"3xm3m4nifDmOu5kPW4T5fs4JiFH88CHx64PJoT7BzbnA7UFM4Z3hp4FgpovR2JDQScNvz7Lj2pFD/OEGiOt29w==","permissions":"FULL"},{"keyName":"key2","value":"ToGf4g1TF0nk0H5fAkk1wfusicg6Ldu0RRMqdaBbt0bCcbqhtrmO7OvghZOk9fTHvTBJFq6xF9J8z54Ds7CFnQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"MsV6XNzsFn8Dl96ueZ/lOXAqx/BU7BWUUBpA93zqEFornsiyr249WEi5zUxunfFpw7moIE2NRbpbXO5Mh29ubQ==","permissions":"FULL"},{"keyName":"key2","value":"VhbqdaROJJJw09wrtPp7g/RU3v0zXjWpk809y/Qw8jYmZF2mVEcS23RzeH8/aK6pAT4nGJ8VttgrdAmB6NOYFQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:14:17 GMT']
+ date: ['Tue, 01 May 2018 21:50:20 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -142,7 +147,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1178']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: '{"keyName": "key1"}'
@@ -154,17 +160,17 @@ interactions:
Content-Length: ['19']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/regenerateKey?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"zsSjGR13zJSd5H/ltEdVg3yQ0Vls02RxTSo8FVeO/N6DALFNtY5BEwMeTPsOInMyVcW44a+0fDuhw69f2I+KJA==","permissions":"FULL"},{"keyName":"key2","value":"ToGf4g1TF0nk0H5fAkk1wfusicg6Ldu0RRMqdaBbt0bCcbqhtrmO7OvghZOk9fTHvTBJFq6xF9J8z54Ds7CFnQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"z04E7jvrYBT1q/AX5nMFdlG50HB/EFdL1leVDPlMVGpIWeWVGY4RNpFNDedsj2jEAM7dRZDcMMKpIoK4S3RlpQ==","permissions":"FULL"},{"keyName":"key2","value":"VhbqdaROJJJw09wrtPp7g/RU3v0zXjWpk809y/Qw8jYmZF2mVEcS23RzeH8/aK6pAT4nGJ8VttgrdAmB6NOYFQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:14:18 GMT']
+ date: ['Tue, 01 May 2018 21:50:21 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -172,7 +178,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1185']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: '{"keyName": "key2"}'
@@ -184,17 +191,17 @@ interactions:
Content-Length: ['19']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/regenerateKey?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"zsSjGR13zJSd5H/ltEdVg3yQ0Vls02RxTSo8FVeO/N6DALFNtY5BEwMeTPsOInMyVcW44a+0fDuhw69f2I+KJA==","permissions":"FULL"},{"keyName":"key2","value":"m6NUobJdfogdBMTZ/QPBic/8kl3YRg2VHXCn1knr+vf3wug2En0roOFcX79V4r049TjeC9bgTyIfc25evysfmg==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"z04E7jvrYBT1q/AX5nMFdlG50HB/EFdL1leVDPlMVGpIWeWVGY4RNpFNDedsj2jEAM7dRZDcMMKpIoK4S3RlpQ==","permissions":"FULL"},{"keyName":"key2","value":"Wx2HXjV5wMAlNoiXVBAxeFceQezAM2KPkkoIPtA8iBNWJuBVOgGbx2KgPKCJ0JFDeSzdCxRl5DoAtULhUmYYGQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:14:18 GMT']
+ date: ['Tue, 01 May 2018 21:50:21 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -202,7 +209,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1175']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
@@ -214,8 +222,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -224,11 +232,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:14:18 GMT']
+ date: ['Tue, 01 May 2018 21:50:21 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkcyRVFJV1lCMklZVEVCVDdCTUNWNktSSTY2QkxOTVhXNVlZRHw1MUIyRDA4MjVEMURBN0QwLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkcyU1E3R0Q2N1JNMjdDWjNMQ0pZRkFNUUo0MlBVVk1HUDYzSXxFODI1Q0Q5NkZGQkQyREQ5LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1182']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1194']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_show_usage.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_show_usage.yaml
index fad67c18501..c279d7f78a6 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_show_usage.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_show_usage.yaml
@@ -8,25 +8,26 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/usages?api-version=2017-10-01
response:
body: {string: "{\r\n \"value\": [\r\n {\r\n \"unit\": \"Count\",\r\n\
- \ \"currentValue\": 24,\r\n \"limit\": 250,\r\n \"name\": {\r\
+ \ \"currentValue\": 32,\r\n \"limit\": 250,\r\n \"name\": {\r\
\n \"value\": \"StorageAccounts\",\r\n \"localizedValue\": \"\
Storage Accounts\"\r\n }\r\n }\r\n ]\r\n}"}
headers:
cache-control: [no-cache]
content-length: ['218']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:14:19 GMT']
+ date: ['Tue, 01 May 2018 21:50:22 GMT']
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0]
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_account_service_endpoints.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_account_service_endpoints.yaml
index 6fe04e5a254..66a8ac84564 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_account_service_endpoints.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_account_service_endpoints.yaml
@@ -1,7 +1,7 @@
interactions:
- request:
body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
- "date": "2018-04-04T18:19:44Z"}}'
+ "date": "2018-05-01T21:50:23Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
@@ -9,24 +9,24 @@ interactions:
Connection: [keep-alive]
Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_storage_service_endpoints000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001","name":"cli_test_storage_service_endpoints000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-04-04T18:19:44Z"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001","name":"cli_test_storage_service_endpoints000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:50:23Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:19:46 GMT']
+ date: ['Tue, 01 May 2018 21:50:23 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1197']
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -38,8 +38,8 @@ interactions:
Connection: [keep-alive]
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -49,15 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:19:46 GMT']
+ date: ['Tue, 01 May 2018 21:50:25 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/9a04cc40-3dd0-4e90-a686-c099c71787ca?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/7fa7210c-232e-41fc-95a4-2c74404a9d16?monitor=true&api-version=2017-10-01']
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-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1197']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -67,18 +67,18 @@ interactions:
CommandName: [storage account create]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/9a04cc40-3dd0-4e90-a686-c099c71787ca?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/7fa7210c-232e-41fc-95a4-2c74404a9d16?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:04 GMT']
+ date: ['Tue, 01 May 2018 21:50:41 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -97,18 +97,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"vdsU97P3F2fUyGLcN8CGKwJdmI0/qApTFXNyFqtmjlNqUU6NUHYzO7XCDI9hNQ+xD2Pesvq5V6NNGBpuNOLZ4A==","permissions":"FULL"},{"keyName":"key2","value":"onGSdrdU4VyZ9l7mlBKYb95zgcMENkmvs/jJKkaV5XPIoR7dRJ5IfHwwQtmPUiQVruFgvdqt5OALKBFHYcLD7w==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"qWOSwO1BVzgMfrWqXaYHDfEZuzviUAd9vNxnv+kxHY/sQvIbDhcByrFMSbeBBEbkdz+55p6bUPJmXSdjdNNtVg==","permissions":"FULL"},{"keyName":"key2","value":"Dpx3hse6j7dQQ3EWvIbIU5c0it8ICT5oNyVuJ+HJ0En485eXvJGZpJ6yYrz30YmpajDslBBxYyrfpJ17NAxJ/w==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:05 GMT']
+ date: ['Tue, 01 May 2018 21:50:42 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -117,7 +117,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -127,19 +127,19 @@ interactions:
CommandName: [storage account create]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_storage_service_endpoints000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001","name":"cli_test_storage_service_endpoints000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-04-04T18:19:44Z"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001","name":"cli_test_storage_service_endpoints000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:50:23Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:05 GMT']
+ date: ['Tue, 01 May 2018 21:50:44 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
@@ -157,18 +157,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['190']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Metrics","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Metrics","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1478']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:07 GMT']
+ date: ['Tue, 01 May 2018 21:50:44 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -187,18 +187,18 @@ interactions:
CommandName: [storage account update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Metrics","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Metrics","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1478']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:07 GMT']
+ date: ['Tue, 01 May 2018 21:50:44 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -220,18 +220,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['322']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1479']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:08 GMT']
+ date: ['Tue, 01 May 2018 21:50:45 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -240,7 +240,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1195']
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
@@ -250,18 +250,18 @@ interactions:
CommandName: [storage account update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1479']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:09 GMT']
+ date: ['Tue, 01 May 2018 21:50:46 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -283,18 +283,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['321']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1478']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:10 GMT']
+ date: ['Tue, 01 May 2018 21:50:46 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -303,7 +303,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -313,19 +313,19 @@ interactions:
CommandName: [network vnet create]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_storage_service_endpoints000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001","name":"cli_test_storage_service_endpoints000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-04-04T18:19:44Z"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001","name":"cli_test_storage_service_endpoints000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:50:23Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:10 GMT']
+ date: ['Tue, 01 May 2018 21:50:51 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
@@ -343,33 +343,33 @@ interactions:
Connection: [keep-alive]
Content-Length: ['205']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 networkmanagementclient/2.0.0rc2 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1?api-version=2018-02-01
response:
body: {string: "{\r\n \"name\": \"vnet1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1\"\
- ,\r\n \"etag\": \"W/\\\"5d72da09-4ebd-475b-8531-2ee87d015f8e\\\"\",\r\n \
+ ,\r\n \"etag\": \"W/\\\"7caece64-81d6-43d8-9b18-7fc8aff7b06b\\\"\",\r\n \
\ \"type\": \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"westus\"\
,\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\":\
- \ \"Updating\",\r\n \"resourceGuid\": \"7d82c69e-97c9-4b3a-a990-9c56412f1b85\"\
+ \ \"Updating\",\r\n \"resourceGuid\": \"16adc12b-15c9-4456-9483-71ae34e5883e\"\
,\r\n \"addressSpace\": {\r\n \"addressPrefixes\": [\r\n \"\
10.0.0.0/16\"\r\n ]\r\n },\r\n \"dhcpOptions\": {\r\n \"dnsServers\"\
: []\r\n },\r\n \"subnets\": [\r\n {\r\n \"name\": \"subnet1\"\
,\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\
- ,\r\n \"etag\": \"W/\\\"5d72da09-4ebd-475b-8531-2ee87d015f8e\\\"\"\
+ ,\r\n \"etag\": \"W/\\\"7caece64-81d6-43d8-9b18-7fc8aff7b06b\\\"\"\
,\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\"\
,\r\n \"addressPrefix\": \"10.0.0.0/24\"\r\n }\r\n }\r\
\n ],\r\n \"virtualNetworkPeerings\": [],\r\n \"enableDdosProtection\"\
: false,\r\n \"enableVmProtection\": false\r\n }\r\n}"}
headers:
- azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/9cc37ec6-0395-43a5-be35-9d10956b20f3?api-version=2018-02-01']
+ azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/7dbb1e4a-e2e2-41ec-b99f-495eb60f654f?api-version=2018-02-01']
cache-control: [no-cache]
content-length: ['1230']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:11 GMT']
+ date: ['Tue, 01 May 2018 21:50:51 GMT']
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0]
@@ -384,18 +384,18 @@ interactions:
Accept-Encoding: ['gzip, deflate']
CommandName: [network vnet create]
Connection: [keep-alive]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 networkmanagementclient/2.0.0rc2 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/9cc37ec6-0395-43a5-be35-9d10956b20f3?api-version=2018-02-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/7dbb1e4a-e2e2-41ec-b99f-495eb60f654f?api-version=2018-02-01
response:
body: {string: "{\r\n \"status\": \"InProgress\"\r\n}"}
headers:
cache-control: [no-cache]
content-length: ['30']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:15 GMT']
+ date: ['Tue, 01 May 2018 21:50:54 GMT']
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0]
@@ -411,18 +411,18 @@ interactions:
Accept-Encoding: ['gzip, deflate']
CommandName: [network vnet create]
Connection: [keep-alive]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 networkmanagementclient/2.0.0rc2 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/9cc37ec6-0395-43a5-be35-9d10956b20f3?api-version=2018-02-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/7dbb1e4a-e2e2-41ec-b99f-495eb60f654f?api-version=2018-02-01
response:
body: {string: "{\r\n \"status\": \"Succeeded\"\r\n}"}
headers:
cache-control: [no-cache]
content-length: ['29']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:25 GMT']
+ date: ['Tue, 01 May 2018 21:51:05 GMT']
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0]
@@ -438,22 +438,22 @@ interactions:
Accept-Encoding: ['gzip, deflate']
CommandName: [network vnet create]
Connection: [keep-alive]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 networkmanagementclient/2.0.0rc2 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1?api-version=2018-02-01
response:
body: {string: "{\r\n \"name\": \"vnet1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1\"\
- ,\r\n \"etag\": \"W/\\\"fcbfa7a6-5dd9-4213-9ec6-7fac99135368\\\"\",\r\n \
+ ,\r\n \"etag\": \"W/\\\"31985a96-6d04-4122-b48e-9f096715aaa7\\\"\",\r\n \
\ \"type\": \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"westus\"\
,\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\":\
- \ \"Succeeded\",\r\n \"resourceGuid\": \"7d82c69e-97c9-4b3a-a990-9c56412f1b85\"\
+ \ \"Succeeded\",\r\n \"resourceGuid\": \"16adc12b-15c9-4456-9483-71ae34e5883e\"\
,\r\n \"addressSpace\": {\r\n \"addressPrefixes\": [\r\n \"\
10.0.0.0/16\"\r\n ]\r\n },\r\n \"dhcpOptions\": {\r\n \"dnsServers\"\
: []\r\n },\r\n \"subnets\": [\r\n {\r\n \"name\": \"subnet1\"\
,\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\
- ,\r\n \"etag\": \"W/\\\"fcbfa7a6-5dd9-4213-9ec6-7fac99135368\\\"\"\
+ ,\r\n \"etag\": \"W/\\\"31985a96-6d04-4122-b48e-9f096715aaa7\\\"\"\
,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\
,\r\n \"addressPrefix\": \"10.0.0.0/24\"\r\n }\r\n }\r\
\n ],\r\n \"virtualNetworkPeerings\": [],\r\n \"enableDdosProtection\"\
@@ -462,8 +462,8 @@ interactions:
cache-control: [no-cache]
content-length: ['1232']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:26 GMT']
- etag: [W/"fcbfa7a6-5dd9-4213-9ec6-7fac99135368"]
+ date: ['Tue, 01 May 2018 21:51:05 GMT']
+ etag: [W/"31985a96-6d04-4122-b48e-9f096715aaa7"]
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0]
@@ -480,23 +480,23 @@ interactions:
CommandName: [network vnet subnet update]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 networkmanagementclient/2.0.0rc2 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1?api-version=2018-02-01
response:
body: {string: "{\r\n \"name\": \"subnet1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\
- ,\r\n \"etag\": \"W/\\\"fcbfa7a6-5dd9-4213-9ec6-7fac99135368\\\"\",\r\n \
+ ,\r\n \"etag\": \"W/\\\"31985a96-6d04-4122-b48e-9f096715aaa7\\\"\",\r\n \
\ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"\
addressPrefix\": \"10.0.0.0/24\"\r\n }\r\n}"}
headers:
cache-control: [no-cache]
content-length: ['403']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:26 GMT']
- etag: [W/"fcbfa7a6-5dd9-4213-9ec6-7fac99135368"]
+ date: ['Tue, 01 May 2018 21:51:06 GMT']
+ etag: [W/"31985a96-6d04-4122-b48e-9f096715aaa7"]
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0]
@@ -509,7 +509,7 @@ interactions:
body: 'b''{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1",
"properties": {"addressPrefix": "10.0.0.0/24", "serviceEndpoints": [{"service":
"Microsoft.Storage"}], "provisioningState": "Succeeded"}, "name": "subnet1",
- "etag": "W/\\"fcbfa7a6-5dd9-4213-9ec6-7fac99135368\\""}'''
+ "etag": "W/\\"31985a96-6d04-4122-b48e-9f096715aaa7\\""}'''
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
@@ -517,26 +517,26 @@ interactions:
Connection: [keep-alive]
Content-Length: ['429']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 networkmanagementclient/2.0.0rc2 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1?api-version=2018-02-01
response:
body: {string: "{\r\n \"name\": \"subnet1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\
- ,\r\n \"etag\": \"W/\\\"1d5c59cf-a1a9-4e4c-9fb9-45b13c1638ea\\\"\",\r\n \
+ ,\r\n \"etag\": \"W/\\\"a69be374-b963-45f6-ab1d-9c9f8176f949\\\"\",\r\n \
\ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"\
addressPrefix\": \"10.0.0.0/24\",\r\n \"serviceEndpoints\": [\r\n \
\ {\r\n \"provisioningState\": \"Updating\",\r\n \"service\"\
: \"Microsoft.Storage\",\r\n \"locations\": [\r\n \"westus\"\
,\r\n \"eastus\"\r\n ]\r\n }\r\n ]\r\n }\r\n}"}
headers:
- azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a418b8fe-519a-48eb-b336-a1bb9b7209cb?api-version=2018-02-01']
+ azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5f42439d-cc62-4a42-9309-477d67c97ece?api-version=2018-02-01']
cache-control: [no-cache]
content-length: ['614']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:27 GMT']
+ date: ['Tue, 01 May 2018 21:51:07 GMT']
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0]
@@ -544,7 +544,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1197']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -553,18 +553,18 @@ interactions:
Accept-Encoding: ['gzip, deflate']
CommandName: [network vnet subnet update]
Connection: [keep-alive]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 networkmanagementclient/2.0.0rc2 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/a418b8fe-519a-48eb-b336-a1bb9b7209cb?api-version=2018-02-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/5f42439d-cc62-4a42-9309-477d67c97ece?api-version=2018-02-01
response:
body: {string: "{\r\n \"status\": \"Succeeded\"\r\n}"}
headers:
cache-control: [no-cache]
content-length: ['29']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:31 GMT']
+ date: ['Tue, 01 May 2018 21:51:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0]
@@ -580,14 +580,14 @@ interactions:
Accept-Encoding: ['gzip, deflate']
CommandName: [network vnet subnet update]
Connection: [keep-alive]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 networkmanagementclient/2.0.0rc2 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1?api-version=2018-02-01
response:
body: {string: "{\r\n \"name\": \"subnet1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\
- ,\r\n \"etag\": \"W/\\\"b5052a24-23e5-45b1-b1c1-799fb50ec51f\\\"\",\r\n \
+ ,\r\n \"etag\": \"W/\\\"4d7eebd5-7a63-4525-a927-a1b25fb98a40\\\"\",\r\n \
\ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"\
addressPrefix\": \"10.0.0.0/24\",\r\n \"serviceEndpoints\": [\r\n \
\ {\r\n \"provisioningState\": \"Succeeded\",\r\n \"service\"\
@@ -597,8 +597,8 @@ interactions:
cache-control: [no-cache]
content-length: ['616']
content-type: [application/json; charset=utf-8]
- date: ['Wed, 04 Apr 2018 18:20:31 GMT']
- etag: [W/"b5052a24-23e5-45b1-b1c1-799fb50ec51f"]
+ date: ['Tue, 01 May 2018 21:51:11 GMT']
+ etag: [W/"4d7eebd5-7a63-4525-a927-a1b25fb98a40"]
expires: ['-1']
pragma: [no-cache]
server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0]
@@ -615,18 +615,18 @@ interactions:
CommandName: [storage account network-rule add]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1478']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:32 GMT']
+ date: ['Tue, 01 May 2018 21:51:11 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -647,18 +647,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['196']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.1.2.3","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.1.2.3","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1515']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:31 GMT']
+ date: ['Tue, 01 May 2018 21:51:12 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -677,18 +677,18 @@ interactions:
CommandName: [storage account network-rule add]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.1.2.3","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.1.2.3","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1515']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:32 GMT']
+ date: ['Tue, 01 May 2018 21:51:12 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -709,18 +709,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['241']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1556']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:33 GMT']
+ date: ['Tue, 01 May 2018 21:51:12 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -739,18 +739,18 @@ interactions:
CommandName: [storage account network-rule add]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1556']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:34 GMT']
+ date: ['Tue, 01 May 2018 21:51:13 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -772,18 +772,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['478']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1810']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:36 GMT']
+ date: ['Tue, 01 May 2018 21:51:15 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -792,7 +792,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-ms-ratelimit-remaining-subscription-writes: ['1192']
status: {code: 200, message: OK}
- request:
body: null
@@ -802,18 +802,18 @@ interactions:
CommandName: [storage account network-rule list]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1810']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:35 GMT']
+ date: ['Tue, 01 May 2018 21:51:16 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -831,18 +831,18 @@ interactions:
CommandName: [storage account network-rule remove]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.1.2.3","action":"Allow"},{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1810']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:36 GMT']
+ date: ['Tue, 01 May 2018 21:51:16 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -864,18 +864,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['458']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1772']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:39 GMT']
+ date: ['Tue, 01 May 2018 21:51:18 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -884,7 +884,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1197']
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -894,18 +894,18 @@ interactions:
CommandName: [storage account network-rule remove]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1","action":"Allow","state":"Succeeded"}],"ipRules":[{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1772']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:39 GMT']
+ date: ['Tue, 01 May 2018 21:51:19 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -926,18 +926,18 @@ interactions:
Connection: [keep-alive]
Content-Length: ['199']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1518']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:41 GMT']
+ date: ['Tue, 01 May 2018 21:51:21 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -946,7 +946,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1197']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -956,18 +956,18 @@ interactions:
CommandName: [storage account network-rule list]
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-04T18:19:47.6247946Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-04T18:19:47.5622932Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_storage_service_endpoints000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"Logging","virtualNetworkRules":[],"ipRules":[{"value":"25.2.0.0/24","action":"Allow"}],"defaultAction":"Deny"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:25.3720587Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:24.9657749Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1518']
content-type: [application/json]
- date: ['Wed, 04 Apr 2018 18:20:42 GMT']
+ date: ['Tue, 01 May 2018 21:51:20 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -986,9 +986,9 @@ interactions:
Connection: [keep-alive]
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.1 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.27
+ User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_storage_service_endpoints000001?api-version=2017-05-10
@@ -997,12 +997,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Wed, 04 Apr 2018 18:20:42 GMT']
+ date: ['Tue, 01 May 2018 21:51:21 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTEk6NUZURVNUOjVGU1RPUkFHRTo1RlNFUlZJQ0U6NUZFTkRQT0lOVFNERFBKRHxERDg2QTZFMTk2MTlCQjhBLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTEk6NUZURVNUOjVGU1RPUkFHRTo1RlNFUlZJQ0U6NUZFTkRQT0lOVFM1NlQ1Rnw5RkIwNUI4RDM3Q0JGQzA0LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1196']
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_append.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_append.yaml
index 3dfe04c18d7..cafd625adc2 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_append.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_append.yaml
@@ -1,31 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:25Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.29]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:25Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Fri, 09 Mar 2018 21:24:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:27 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -38,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.29]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -48,15 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Fri, 09 Mar 2018 21:24:26 GMT']
+ date: ['Tue, 01 May 2018 21:45:27 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/c7130dc0-8742-4df0-b96f-9c735167b847?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/1d74ead7-75d6-478d-bad1-b1e1b3b27c02?monitor=true&api-version=2017-10-01']
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-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -67,45 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.29]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/c7130dc0-8742-4df0-b96f-9c735167b847?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/1d74ead7-75d6-478d-bad1-b1e1b3b27c02?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Fri, 09 Mar 2018 21:24:43 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/c7130dc0-8742-4df0-b96f-9c735167b847?monitor=true&api-version=2017-10-01']
- 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-content-type-options: [nosniff]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.29]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/c7130dc0-8742-4df0-b96f-9c735167b847?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-03-09T21:24:25.9673412Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-03-09T21:24:25.9673412Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-03-09T21:24:25.9517391Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:28.2151132Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:28.2151132Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:28.1369842Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Fri, 09 Mar 2018 21:25:01 GMT']
+ date: ['Tue, 01 May 2018 21:45:45 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -125,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.29]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"wEpDeAcuqU8xPj0pKJGM1vQRqB/ldhPmOs/XzewVFIn3lFbKPofz7gNE4aILYdt29eEQ/1mk4TGOsNFpAX9oXQ==","permissions":"FULL"},{"keyName":"key2","value":"Iz3qoDlAi+yDuI7dfeirLiDpqmCfbz9WxvQRpNKFYtyvB7+1gr6sWh5umI73Uag12CdGATMDdrKwz+zQxsALlA==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"OR+prta1aaKGZRHhg8YyrdKAgKgs2Nph57dO78Qs1lMWof4bnJoyXh6m6NN4D3Z93t8NlJjM7HM5wnU/woxOJA==","permissions":"FULL"},{"keyName":"key2","value":"wCuvmxZmKrxy4BAXAsvmP20XSN9gzJbQ+Apju3acibG8qHH05iSYKBdWgsuujA3A89huL5evdQ9NaPh+0icDgg==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Fri, 09 Mar 2018 21:25:02 GMT']
+ date: ['Tue, 01 May 2018 21:45:46 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -144,7 +117,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -156,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.29]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"wEpDeAcuqU8xPj0pKJGM1vQRqB/ldhPmOs/XzewVFIn3lFbKPofz7gNE4aILYdt29eEQ/1mk4TGOsNFpAX9oXQ==","permissions":"FULL"},{"keyName":"key2","value":"Iz3qoDlAi+yDuI7dfeirLiDpqmCfbz9WxvQRpNKFYtyvB7+1gr6sWh5umI73Uag12CdGATMDdrKwz+zQxsALlA==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"OR+prta1aaKGZRHhg8YyrdKAgKgs2Nph57dO78Qs1lMWof4bnJoyXh6m6NN4D3Z93t8NlJjM7HM5wnU/woxOJA==","permissions":"FULL"},{"keyName":"key2","value":"wCuvmxZmKrxy4BAXAsvmP20XSN9gzJbQ+Apju3acibG8qHH05iSYKBdWgsuujA3A89huL5evdQ9NaPh+0icDgg==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Fri, 09 Mar 2018 21:25:03 GMT']
+ date: ['Tue, 01 May 2018 21:45:47 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -175,45 +148,47 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1197']
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.29]
- x-ms-date: ['Fri, 09 Mar 2018 21:25:03 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:47 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Fri, 09 Mar 2018 21:25:03 GMT']
- etag: ['"0x8D586043929E914"']
- last-modified: ['Fri, 09 Mar 2018 21:25:03 GMT']
+ date: ['Tue, 01 May 2018 21:45:47 GMT']
+ etag: ['"0x8D5AFACE694E4D5"']
+ last-modified: ['Tue, 01 May 2018 21:45:48 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.29]
- x-ms-date: ['Fri, 09 Mar 2018 21:25:04 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:48 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
body: {string: ''}
headers:
- date: ['Fri, 09 Mar 2018 21:25:04 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-error-code: [BlobNotFound]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 404, message: The specified blob does not exist.}
- request:
body: null
@@ -221,22 +196,23 @@ interactions:
Connection: [keep-alive]
Content-Length: ['0']
If-None-Match: ['*']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.29]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-type: [AppendBlob]
- x-ms-date: ['Fri, 09 Mar 2018 21:25:04 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:45:48 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
body: {string: ''}
headers:
- date: ['Fri, 09 Mar 2018 21:25:04 GMT']
- etag: ['"0x8D58604397B2DAA"']
- last-modified: ['Fri, 09 Mar 2018 21:25:04 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE6F34F3E"']
+ last-modified: ['Tue, 01 May 2018 21:45:48 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
@@ -269,56 +245,60 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['1024']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.29]
- x-ms-date: ['Fri, 09 Mar 2018 21:25:04 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:48 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=appendblock
response:
body: {string: ''}
headers:
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
- date: ['Fri, 09 Mar 2018 21:25:15 GMT']
- etag: ['"0x8D586043B54F45F"']
- last-modified: ['Fri, 09 Mar 2018 21:25:07 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE70BE4D6"']
+ last-modified: ['Tue, 01 May 2018 21:45:48 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-blob-append-offset: ['0']
x-ms-blob-committed-block-count: ['1']
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.29]
- x-ms-date: ['Fri, 09 Mar 2018 21:25:15 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=list
response:
body: {string: "\uFEFFblob000004Fri,\
- \ 09 Mar 2018 21:25:07 GMT0x8D586043B54F45F1024application/octet-streamblob000004Tue,\
+ \ 01 May 2018 21:45:48 GMTTue, 01 May 2018\
+ \ 21:45:48 GMT0x8D5AFACE70BE4D61024application/octet-streamAppendBlobunlockedavailabletrue"}
headers:
content-type: [application/xml]
- date: ['Fri, 09 Mar 2018 21:25:15 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.29]
- x-ms-date: ['Fri, 09 Mar 2018 21:25:16 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
@@ -327,35 +307,37 @@ interactions:
accept-ranges: [bytes]
content-length: ['1024']
content-type: [application/octet-stream]
- date: ['Fri, 09 Mar 2018 21:25:15 GMT']
- etag: ['"0x8D586043B54F45F"']
- last-modified: ['Fri, 09 Mar 2018 21:25:07 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE70BE4D6"']
+ last-modified: ['Tue, 01 May 2018 21:45:48 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-committed-block-count: ['1']
x-ms-blob-type: [AppendBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:45:48 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
If-None-Match: ['*']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.29]
- x-ms-date: ['Fri, 09 Mar 2018 21:25:16 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
body: {string: ''}
headers:
- date: ['Fri, 09 Mar 2018 21:25:15 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-error-code: [UnsatisfiableCondition]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 400, message: The request includes an unsatisfiable condition for
this operation.}
- request:
@@ -368,8 +350,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.29]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -378,12 +360,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Fri, 09 Mar 2018 21:25:16 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdINExUUTdQSTRGVlVOT1RKQkxKSk41WVJNV1lOTUtQRUhIVHxBQkVDQjkwMkY4MDgxMjBFLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdHNElBRE5USEpZS1BYUkdVRDVHWEpVNVJGUVpUSEI2VVZRRnxCREYyNzBFMURBMTdCQzU1LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_container_operations.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_container_operations.yaml
index 8886f8ddd90..91d3a2cc339 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_container_operations.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_container_operations.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:50Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:50Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:27:55 GMT']
+ date: ['Tue, 01 May 2018 21:45:51 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:27:56 GMT']
+ date: ['Tue, 01 May 2018 21:45:51 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/105b3112-2a48-4f45-938b-c6f14b1f4f1b?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/f01be2eb-5354-4e4e-bd41-56dbac4522b9?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1179']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/105b3112-2a48-4f45-938b-c6f14b1f4f1b?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/f01be2eb-5354-4e4e-bd41-56dbac4522b9?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:27:56.5462190Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:27:56.5462190Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:27:56.4993728Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:52.3404756Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:52.3404756Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:52.2623291Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:28:13 GMT']
+ date: ['Tue, 01 May 2018 21:46:09 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -94,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"/vl3rDqMusKbUOpktCjgYxJZcNezTrC0kMYWlIOzYpzaeg+/woRF1r/TKgKee5NiVEOG2a8KBMLWNHGAiDSzLA==","permissions":"FULL"},{"keyName":"key2","value":"B9VYtuhOeAwP4+fM6R77nXna5PeHhH8lIJrVUu0XlBc+hZGKxZYeiMwP1t1VSQ6JZ0WmjxQjVmBo3E8nB+HvAg==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"tNwbYiizG3C+s/lu9T78/0AhW8nLLgRJG9m1Ap2TnU8J3JOvX41/i2onux/JvyydlmGocEzRz2/qZRrC1Qv+dA==","permissions":"FULL"},{"keyName":"key2","value":"+KZpz6le/ThUHtweZGUzIqkMrZ4uDjXi4lhL96dGjj2KSN5dJ9S29HGjxBLV3NvvdWVs9K2+zSzwoTZhV5seEQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:28:15 GMT']
+ date: ['Tue, 01 May 2018 21:46:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -112,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -124,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"/vl3rDqMusKbUOpktCjgYxJZcNezTrC0kMYWlIOzYpzaeg+/woRF1r/TKgKee5NiVEOG2a8KBMLWNHGAiDSzLA==","permissions":"FULL"},{"keyName":"key2","value":"B9VYtuhOeAwP4+fM6R77nXna5PeHhH8lIJrVUu0XlBc+hZGKxZYeiMwP1t1VSQ6JZ0WmjxQjVmBo3E8nB+HvAg==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"tNwbYiizG3C+s/lu9T78/0AhW8nLLgRJG9m1Ap2TnU8J3JOvX41/i2onux/JvyydlmGocEzRz2/qZRrC1Qv+dA==","permissions":"FULL"},{"keyName":"key2","value":"+KZpz6le/ThUHtweZGUzIqkMrZ4uDjXi4lhL96dGjj2KSN5dJ9S29HGjxBLV3NvvdWVs9K2+zSzwoTZhV5seEQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:28:16 GMT']
+ date: ['Tue, 01 May 2018 21:46:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -142,56 +147,62 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1195']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:17 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:11 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:17 GMT']
- etag: ['"0x8D56F2A1AFB6456"']
- last-modified: ['Thu, 08 Feb 2018 19:28:17 GMT']
+ date: ['Tue, 01 May 2018 21:46:11 GMT']
+ etag: ['"0x8D5AFACF4C9254E"']
+ last-modified: ['Tue, 01 May 2018 21:46:11 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:17 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:12 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:16 GMT']
- etag: ['"0x8D56F2A1AFB6456"']
- last-modified: ['Thu, 08 Feb 2018 19:28:17 GMT']
+ date: ['Tue, 01 May 2018 21:46:11 GMT']
+ etag: ['"0x8D5AFACF4C9254E"']
+ last-modified: ['Tue, 01 May 2018 21:46:11 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
+ x-ms-has-immutability-policy: ['false']
+ x-ms-has-legal-hold: ['false']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:17 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:12 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
@@ -199,12 +210,12 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:28:17 GMT']
- etag: ['"0x8D56F2A1AFB6456"']
- last-modified: ['Thu, 08 Feb 2018 19:28:17 GMT']
+ date: ['Tue, 01 May 2018 21:46:12 GMT']
+ etag: ['"0x8D5AFACF4C9254E"']
+ last-modified: ['Tue, 01 May 2018 21:46:11 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -213,29 +224,31 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['60']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-public-access: [blob]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:17 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:46:12 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:17 GMT']
- etag: ['"0x8D56F2A1B7F5F8A"']
- last-modified: ['Thu, 08 Feb 2018 19:28:18 GMT']
+ date: ['Tue, 01 May 2018 21:46:12 GMT']
+ etag: ['"0x8D5AFACF54CCAB9"']
+ last-modified: ['Tue, 01 May 2018 21:46:12 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:18 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:12 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
@@ -243,21 +256,22 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:28:17 GMT']
- etag: ['"0x8D56F2A1B7F5F8A"']
- last-modified: ['Thu, 08 Feb 2018 19:28:18 GMT']
+ date: ['Tue, 01 May 2018 21:46:12 GMT']
+ etag: ['"0x8D5AFACF54CCAB9"']
+ last-modified: ['Tue, 01 May 2018 21:46:12 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-blob-public-access: [blob]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:18 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:13 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
@@ -265,13 +279,13 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:28:18 GMT']
- etag: ['"0x8D56F2A1B7F5F8A"']
- last-modified: ['Thu, 08 Feb 2018 19:28:18 GMT']
+ date: ['Tue, 01 May 2018 21:46:13 GMT']
+ etag: ['"0x8D5AFACF54CCAB9"']
+ last-modified: ['Tue, 01 May 2018 21:46:12 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-blob-public-access: [blob]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -280,28 +294,30 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['60']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:18 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:13 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:18 GMT']
- etag: ['"0x8D56F2A1BF24F99"']
- last-modified: ['Thu, 08 Feb 2018 19:28:19 GMT']
+ date: ['Tue, 01 May 2018 21:46:13 GMT']
+ etag: ['"0x8D5AFACF5CFD675"']
+ last-modified: ['Tue, 01 May 2018 21:46:13 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:18 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:13 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
@@ -309,136 +325,144 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:28:18 GMT']
- etag: ['"0x8D56F2A1BF24F99"']
- last-modified: ['Thu, 08 Feb 2018 19:28:19 GMT']
+ date: ['Tue, 01 May 2018 21:46:13 GMT']
+ etag: ['"0x8D5AFACF5CFD675"']
+ last-modified: ['Tue, 01 May 2018 21:46:13 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:19 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:14 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:18 GMT']
- etag: ['"0x8D56F2A1BF24F99"']
- last-modified: ['Thu, 08 Feb 2018 19:28:19 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF5CFD675"']
+ last-modified: ['Tue, 01 May 2018 21:46:13 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
+ x-ms-has-immutability-policy: ['false']
+ x-ms-has-legal-hold: ['false']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:19 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:14 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?comp=list
response:
body: {string: "\uFEFFcont000003Thu,\
- \ 08 Feb 2018 19:28:19 GMT\"0x8D56F2A1BF24F99\"unlockedavailablecont000003Tue,\
+ \ 01 May 2018 21:46:13 GMT\"0x8D5AFACF5CFD675\"unlockedavailablefalsefalse"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:28:19 GMT']
+ date: ['Tue, 01 May 2018 21:46:13 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:19 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:14 GMT']
x-ms-meta-foo: [bar]
x-ms-meta-moo: [bak]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:19 GMT']
- etag: ['"0x8D56F2A1C9B218F"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF699E775"']
+ last-modified: ['Tue, 01 May 2018 21:46:14 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:20 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:15 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:19 GMT']
- etag: ['"0x8D56F2A1C9B218F"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF699E775"']
+ last-modified: ['Tue, 01 May 2018 21:46:14 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-meta-foo: [bar]
x-ms-meta-moo: [bak]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:20 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:15 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:20 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:20 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:15 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:20 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:15 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -446,241 +470,260 @@ interactions:
Connection: [keep-alive]
Content-Length: ['0']
If-Modified-Since: ['Fri, 01 Apr 2016 12:00:00 GMT']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
x-ms-lease-action: [acquire]
x-ms-lease-duration: ['60']
x-ms-proposed-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:21 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:21 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:20 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
+ x-ms-has-immutability-policy: ['false']
+ x-ms-has-legal-hold: ['false']
x-ms-lease-duration: [fixed]
x-ms-lease-state: [leased]
x-ms-lease-status: [locked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:21 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
x-ms-lease-action: [change]
x-ms-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd]
x-ms-proposed-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:21 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:21 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
x-ms-lease-action: [renew]
x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:21 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:22 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:21 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
+ x-ms-has-immutability-policy: ['false']
+ x-ms-has-legal-hold: ['false']
x-ms-lease-duration: [fixed]
x-ms-lease-state: [leased]
x-ms-lease-status: [locked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:22 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
x-ms-lease-action: [break]
x-ms-lease-break-period: ['30']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:21 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-lease-time: ['30']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:22 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:22 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
+ x-ms-has-immutability-policy: ['false']
+ x-ms-has-legal-hold: ['false']
x-ms-lease-state: [breaking]
x-ms-lease-status: [locked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:22 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
x-ms-lease-action: [release]
x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:22 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:23 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:23 GMT']
- etag: ['"0x8D56F2A1CF88C0E"']
- last-modified: ['Thu, 08 Feb 2018 19:28:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF7003C44"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
+ x-ms-has-immutability-policy: ['false']
+ x-ms-has-legal-hold: ['false']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:23 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:19 GMT']
+ x-ms-version: ['2017-11-09']
method: DELETE
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:28:23 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:28:23 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:19 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: "\uFEFFContainerNotFound
The\
- \ specified container does not exist.\nRequestId:f7082c34-001e-011b-4612-a1c00c000000\n\
- Time:2018-02-08T19:28:24.2397015Z"}
+ \ specified container does not exist.\nRequestId:5c2b7908-701e-00c3-3695-e16d4b000000\n\
+ Time:2018-05-01T21:46:19.8336002Z"}
headers:
content-length: ['225']
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:28:23 GMT']
+ date: ['Tue, 01 May 2018 21:46:19 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-error-code: [ContainerNotFound]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 404, message: The specified container does not exist.}
- request:
body: null
@@ -692,8 +735,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -702,11 +745,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 19:28:25 GMT']
+ date: ['Tue, 01 May 2018 21:46:19 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdRT0pVVjNCWEFQQ1hCVFUyUTM1NklFNkpQUjZNRTY0UzVYMnwzOUJBNTVEQjAzREYxNEI4LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdDT0JHNDZEQ1lUQUNPN0xIUjVNU05INUJZVDVIVVo0TVlFTXw3RjQwRkM0MjMzMkFEMTZFLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_incremental_copy.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_incremental_copy.yaml
index 1f37f37ef73..4b0663e1833 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_incremental_copy.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_incremental_copy.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: !!python/unicode '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: !!python/unicode '{"location": "westus", "tags": {"date": "2018-05-02T19:43:58Z",
+ "product": "azurecli", "cause": "automation"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: !!python/unicode '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: !!python/unicode '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"date":"2018-05-02T19:43:58Z","product":"azurecli","cause":"automation"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 23:20:42 GMT']
+ date: ['Wed, 02 May 2018 19:44:00 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 201, message: Created}
- request:
body: !!python/unicode '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location":
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 23:20:44 GMT']
+ date: ['Wed, 02 May 2018 19:44:02 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/9fbedf8b-29f6-45f5-aef6-fd2df092382a?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/8c8b53d2-a910-435a-b60d-0b2544b5660a?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/9fbedf8b-29f6-45f5-aef6-fd2df092382a?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/8c8b53d2-a910-435a-b60d-0b2544b5660a?monitor=true&api-version=2017-10-01
response:
- body: {string: !!python/unicode '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T23:20:44.9190016Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T23:20:44.9190016Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T23:20:44.8720832Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: !!python/unicode '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-02T19:44:02.2748953Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-02T19:44:02.2748953Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-02T19:44:02.1967762Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 23:21:01 GMT']
+ date: ['Wed, 02 May 2018 19:44:19 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -94,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: !!python/unicode '{"keys":[{"keyName":"key1","value":"JuXvx0QEEaaBll22+oe0inVihHiW5hncEvtYdETzq+XQIvNyA9yuLhqoYtj0GgjZJqJ4v0Pax16sOIVXbKPXvQ==","permissions":"FULL"},{"keyName":"key2","value":"tYL4AWvj2wAG/i2Sc7LneS6hFZWjLEmGmpNmGQxpZWPimfcZIfuQ8IGQWPypD2BKgvPSo2ULfondTELG5szyHA==","permissions":"FULL"}]}'}
+ body: {string: !!python/unicode '{"keys":[{"keyName":"key1","value":"iSfpGgcvmAbaFtFdDnqIH/nRi3FlqID5Wd8ax8tU6Gue8ABZR/XzDgshrU1tDIN1TyrFUCCojRtSqPeQ0ERRjA==","permissions":"FULL"},{"keyName":"key2","value":"cWZxyLZpSwQ4DZ3xiqmqiYz7a4IirTs2HPdD5o2pIcnUwehOxk216iFFsicoQxSkNwBEZE4J3ry11uy5ImTlZg==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 23:21:03 GMT']
+ date: ['Wed, 02 May 2018 19:44:20 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -112,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1196']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1192']
status: {code: 200, message: OK}
- request:
body: !!python/unicode '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location":
@@ -125,7 +130,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003?api-version=2017-10-01
@@ -135,14 +140,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 23:21:05 GMT']
+ date: ['Wed, 02 May 2018 19:44:22 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/7d756e20-2d7a-40aa-9a1f-b2d84de0965f?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/435892af-a98b-4a72-8888-0a351e667294?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1192']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -153,17 +159,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/7d756e20-2d7a-40aa-9a1f-b2d84de0965f?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/435892af-a98b-4a72-8888-0a351e667294?monitor=true&api-version=2017-10-01
response:
- body: {string: !!python/unicode '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003","name":"clitest000003","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T23:21:05.7095326Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T23:21:05.7095326Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T23:21:05.6620484Z","primaryEndpoints":{"blob":"https://clitest000003.blob.core.windows.net/","queue":"https://clitest000003.queue.core.windows.net/","table":"https://clitest000003.table.core.windows.net/","file":"https://clitest000003.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: !!python/unicode '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003","name":"clitest000003","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-02T19:44:22.3795443Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-02T19:44:22.3795443Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-02T19:44:22.1919822Z","primaryEndpoints":{"blob":"https://clitest000003.blob.core.windows.net/","queue":"https://clitest000003.queue.core.windows.net/","table":"https://clitest000003.table.core.windows.net/","file":"https://clitest000003.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 23:21:22 GMT']
+ date: ['Wed, 02 May 2018 19:44:39 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -171,6 +177,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -182,17 +189,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003/listKeys?api-version=2017-10-01
response:
- body: {string: !!python/unicode '{"keys":[{"keyName":"key1","value":"zF1d4ftumF5bxsApZkg41yOnKKINCivrVPP7564IMIOSfQ1AIq+kuJVJqjA+EoFxfLKVP7u2IyVXhAB/VkUqsw==","permissions":"FULL"},{"keyName":"key2","value":"ZeabPhhyrA41/DYbjhPL1obhmamA/Xkx0grOUAKsKaW+HZPcHRVh718BqCll/zFdBnOjlp59QvjH0wluSuEQ5w==","permissions":"FULL"}]}'}
+ body: {string: !!python/unicode '{"keys":[{"keyName":"key1","value":"BbTbkKSkBtL4LovzPMZd4F7X9iwXL4+WAColh/j94Bf1IWXAPmgbvmATih3hqhkAy7sEb/Oq3xvJMNNp95SCnA==","permissions":"FULL"},{"keyName":"key2","value":"R/miHYtsnRkKsoE34tblzJ+OCPb6YKB/EaJk+f4nKwe1PLTceyKx0WBC8onWzTEbKG9cKOQP8zvxIu3z1YJmzQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 23:21:24 GMT']
+ date: ['Wed, 02 May 2018 19:44:40 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -200,7 +207,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1193']
status: {code: 200, message: OK}
- request:
body: null
@@ -212,17 +220,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: !!python/unicode '{"keys":[{"keyName":"key1","value":"JuXvx0QEEaaBll22+oe0inVihHiW5hncEvtYdETzq+XQIvNyA9yuLhqoYtj0GgjZJqJ4v0Pax16sOIVXbKPXvQ==","permissions":"FULL"},{"keyName":"key2","value":"tYL4AWvj2wAG/i2Sc7LneS6hFZWjLEmGmpNmGQxpZWPimfcZIfuQ8IGQWPypD2BKgvPSo2ULfondTELG5szyHA==","permissions":"FULL"}]}'}
+ body: {string: !!python/unicode '{"keys":[{"keyName":"key1","value":"iSfpGgcvmAbaFtFdDnqIH/nRi3FlqID5Wd8ax8tU6Gue8ABZR/XzDgshrU1tDIN1TyrFUCCojRtSqPeQ0ERRjA==","permissions":"FULL"},{"keyName":"key2","value":"cWZxyLZpSwQ4DZ3xiqmqiYz7a4IirTs2HPdD5o2pIcnUwehOxk216iFFsicoQxSkNwBEZE4J3ry11uy5ImTlZg==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 23:21:25 GMT']
+ date: ['Wed, 02 May 2018 19:44:41 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -230,50 +238,53 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1194']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 2.7.13; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 23:21:26 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 2.7.13; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 19:44:42 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004?restype=container
response:
body: {string: !!python/unicode ''}
headers:
- date: ['Thu, 08 Feb 2018 23:21:26 GMT']
- etag: ['"0x8D56F4AAD24AC5A"']
- last-modified: ['Thu, 08 Feb 2018 23:21:26 GMT']
+ date: ['Wed, 02 May 2018 19:44:41 GMT']
+ etag: ['"0x8D5B06526655E80"']
+ last-modified: ['Wed, 02 May 2018 19:44:42 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 2.7.13; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 2.7.13; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-content-length: ['16384']
x-ms-blob-type: [PageBlob]
- x-ms-date: ['Thu, 08 Feb 2018 23:21:26 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Wed, 02 May 2018 19:44:42 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004/src
response:
body: {string: !!python/unicode ''}
headers:
- date: ['Thu, 08 Feb 2018 23:21:26 GMT']
- etag: ['"0x8D56F4AAD693EED"']
- last-modified: ['Thu, 08 Feb 2018 23:21:27 GMT']
+ date: ['Wed, 02 May 2018 19:44:42 GMT']
+ etag: ['"0x8D5B06526AC4FA7"']
+ last-modified: ['Wed, 02 May 2018 19:44:42 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: !!python/unicode "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
@@ -711,46 +722,48 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['16384']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 2.7.13; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 23:21:26 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 2.7.13; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 19:44:43 GMT']
x-ms-page-write: [update]
x-ms-range: [bytes=0-16383]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004/src?comp=page
response:
body: {string: !!python/unicode ''}
headers:
content-md5: [zjOP5omXeKrPwoQU8tlJiw==]
- date: ['Thu, 08 Feb 2018 23:21:26 GMT']
- etag: ['"0x8D56F4AAD7B6BB5"']
- last-modified: ['Thu, 08 Feb 2018 23:21:27 GMT']
+ date: ['Wed, 02 May 2018 19:44:42 GMT']
+ etag: ['"0x8D5B06526BC7F53"']
+ last-modified: ['Wed, 02 May 2018 19:44:43 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-blob-sequence-number: ['0']
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 2.7.13; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 23:21:27 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 2.7.13; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 19:44:43 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004/src?comp=snapshot
response:
body: {string: !!python/unicode ''}
headers:
- date: ['Thu, 08 Feb 2018 23:21:27 GMT']
- etag: ['"0x8D56F4AAD7B6BB5"']
- last-modified: ['Thu, 08 Feb 2018 23:21:27 GMT']
+ date: ['Wed, 02 May 2018 19:44:42 GMT']
+ etag: ['"0x8D5B06526BC7F53"']
+ last-modified: ['Wed, 02 May 2018 19:44:43 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-snapshot: ['2018-02-08T23:21:27.5176463Z']
- x-ms-version: ['2017-07-29']
+ x-ms-snapshot: ['2018-05-02T19:44:43.5039308Z']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
@@ -762,17 +775,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000003/listKeys?api-version=2017-10-01
response:
- body: {string: !!python/unicode '{"keys":[{"keyName":"key1","value":"zF1d4ftumF5bxsApZkg41yOnKKINCivrVPP7564IMIOSfQ1AIq+kuJVJqjA+EoFxfLKVP7u2IyVXhAB/VkUqsw==","permissions":"FULL"},{"keyName":"key2","value":"ZeabPhhyrA41/DYbjhPL1obhmamA/Xkx0grOUAKsKaW+HZPcHRVh718BqCll/zFdBnOjlp59QvjH0wluSuEQ5w==","permissions":"FULL"}]}'}
+ body: {string: !!python/unicode '{"keys":[{"keyName":"key1","value":"BbTbkKSkBtL4LovzPMZd4F7X9iwXL4+WAColh/j94Bf1IWXAPmgbvmATih3hqhkAy7sEb/Oq3xvJMNNp95SCnA==","permissions":"FULL"},{"keyName":"key2","value":"R/miHYtsnRkKsoE34tblzJ+OCPb6YKB/EaJk+f4nKwe1PLTceyKx0WBC8onWzTEbKG9cKOQP8zvxIu3z1YJmzQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 23:21:28 GMT']
+ date: ['Wed, 02 May 2018 19:44:43 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -780,50 +793,53 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 2.7.13; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 23:21:28 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 2.7.13; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Wed, 02 May 2018 19:44:44 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000003.blob.core.windows.net/cont000005?restype=container
response:
body: {string: !!python/unicode ''}
headers:
- date: ['Thu, 08 Feb 2018 23:21:28 GMT']
- etag: ['"0x8D56F4AAE5990C9"']
- last-modified: ['Thu, 08 Feb 2018 23:21:28 GMT']
+ date: ['Wed, 02 May 2018 19:44:43 GMT']
+ etag: ['"0x8D5B0652781BC35"']
+ last-modified: ['Wed, 02 May 2018 19:44:44 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 2.7.13; Windows 10) AZURECLI/2.0.27]
- x-ms-copy-source: ['https://clitestbi3jx6nbygi3a5yo6.blob.core.windows.net/contmdanozytk5cue3v4ki2d/src?sr=b&spr=https&sp=r&sv=2017-07-29&sig=R38Ehi6HoCDJbkYZyOP8kUL%2Byu6yLOfOg2VJuX1uzXU%3D&se=2018-02-09T23%3A21%3A28Z&snapshot=2018-02-08T23:21:27.5176463Z']
- x-ms-date: ['Thu, 08 Feb 2018 23:21:28 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 2.7.13; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-copy-source: ['https://clitestcnlkcrkpqx7wradry.blob.core.windows.net/cont4dqskpfdpndkgy5iw6fd/src?sr=b&spr=https&sp=r&sv=2017-11-09&sig=5mmvYLaxdFL5z12ATWgHzBlFlJnC9Qpqa/lMUPb%2B4NI%3D&se=2018-05-03T19%3A44%3A44Z&snapshot=2018-05-02T19:44:43.5039308Z']
+ x-ms-date: ['Wed, 02 May 2018 19:44:44 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000003.blob.core.windows.net/cont000005/backup?comp=incrementalcopy
response:
body: {string: !!python/unicode ''}
headers:
- date: ['Thu, 08 Feb 2018 23:21:28 GMT']
- etag: ['"0x8D56F4AAEB098D4"']
- last-modified: ['Thu, 08 Feb 2018 23:21:29 GMT']
+ date: ['Wed, 02 May 2018 19:44:44 GMT']
+ etag: ['"0x8D5B06527BA7155"']
+ last-modified: ['Wed, 02 May 2018 19:44:44 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-copy-id: [4aa9c065-ecb3-4532-9ba1-bb5ec37c6251]
+ x-ms-copy-id: [0193b26a-a085-4797-95bf-f03b9605f8c7]
x-ms-copy-status: [pending]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -835,8 +851,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/2.7.13 (Windows-10-10.0.16299) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -845,11 +861,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 23:21:30 GMT']
+ date: ['Wed, 02 May 2018 19:44:45 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkc2NFg1QUNMNTRVSkVCSUpUNFdVQllWRkEyQ0hHNE5CWk9FQXwxNDFBNzBEMTYyRTEwNEIzLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdCUFJMSkU3VEVLUjZZTFZYQ0w0S05QNEQ0NlFHWlE1NUpIQnwyQURDQjYwM0MxMUM4REU2LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_lease_operations.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_lease_operations.yaml
index dd175cb4827..d0626fb797c 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_lease_operations.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_lease_operations.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:47:04Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:47:04Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:39:29 GMT']
+ date: ['Tue, 01 May 2018 21:47:04 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:39:31 GMT']
+ date: ['Tue, 01 May 2018 21:47:06 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/043b4021-7381-4720-a9a7-9e8e1421ea16?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/cbfde942-a7fb-421f-983d-6a16db124841?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1179']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/043b4021-7381-4720-a9a7-9e8e1421ea16?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/cbfde942-a7fb-421f-983d-6a16db124841?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:39:48 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/043b4021-7381-4720-a9a7-9e8e1421ea16?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/043b4021-7381-4720-a9a7-9e8e1421ea16?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:39:31.0044104Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:39:31.0044104Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:39:30.9106510Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:06.3725603Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:06.3725603Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:47:06.2788294Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:40:05 GMT']
+ date: ['Tue, 01 May 2018 21:47:23 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"niTXyxI/+JfgaExQkTsfhNwkdH/4rQn/cPjT81lQt4elnnZPpm630VkZATpCDGkdyewzPJZ3G0MwMg+n2ClhZw==","permissions":"FULL"},{"keyName":"key2","value":"qx7dotSrrBPrSWBPXwNt7hcXRb+ewbeOIJoeTuWyfrYu3nYKAWHsoOElMkL0R/hvX8g1OnoknS3WW+DdnXZP0g==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"a2oR83Z/uzGUCw1MP02lNmSbg9cX8GsgbMxkK3wZhuOrAeAQ8x/tgv7OBBV0Q0OrN5pOH45NG9MWk80NWijE0Q==","permissions":"FULL"},{"keyName":"key2","value":"cuZ45EUzKnpz59rlFdZD8hnSNfWwGASMcR+O8wdCSz/PHQPUXaMQIQ22jN6v/9CJuJRuVwgaaB/urSq9V8LMNw==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:40:05 GMT']
+ date: ['Tue, 01 May 2018 21:47:24 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1195']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"niTXyxI/+JfgaExQkTsfhNwkdH/4rQn/cPjT81lQt4elnnZPpm630VkZATpCDGkdyewzPJZ3G0MwMg+n2ClhZw==","permissions":"FULL"},{"keyName":"key2","value":"qx7dotSrrBPrSWBPXwNt7hcXRb+ewbeOIJoeTuWyfrYu3nYKAWHsoOElMkL0R/hvX8g1OnoknS3WW+DdnXZP0g==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"a2oR83Z/uzGUCw1MP02lNmSbg9cX8GsgbMxkK3wZhuOrAeAQ8x/tgv7OBBV0Q0OrN5pOH45NG9MWk80NWijE0Q==","permissions":"FULL"},{"keyName":"key2","value":"cuZ45EUzKnpz59rlFdZD8hnSNfWwGASMcR+O8wdCSz/PHQPUXaMQIQ22jN6v/9CJuJRuVwgaaB/urSq9V8LMNw==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:40:07 GMT']
+ date: ['Tue, 01 May 2018 21:47:24 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,27 +147,29 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1181']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:07 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:26 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:40:07 GMT']
- etag: ['"0x8D56F2BC26AC82D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:07 GMT']
+ date: ['Tue, 01 May 2018 21:47:26 GMT']
+ etag: ['"0x8D5AFAD2133C5EB"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
@@ -3645,23 +3625,24 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['131072']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-type: [BlockBlob]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:08 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:47:26 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
body: {string: ''}
headers:
content-md5: [DfvoqkwgtS4bi/PLbL3xkw==]
- date: ['Thu, 08 Feb 2018 19:40:07 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:26 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
@@ -3669,32 +3650,34 @@ interactions:
Connection: [keep-alive]
Content-Length: ['0']
If-Modified-Since: ['Fri, 01 Apr 2016 12:00:00 GMT']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:27 GMT']
x-ms-lease-action: [acquire]
x-ms-lease-duration: ['60']
x-ms-proposed-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:40:08 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:26 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:08 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:27 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
@@ -3704,71 +3687,75 @@ interactions:
content-length: ['131072']
content-md5: [DfvoqkwgtS4bi/PLbL3xkw==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:40:08 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:27 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:47:26 GMT']
x-ms-lease-duration: [fixed]
x-ms-lease-state: [leased]
x-ms-lease-status: [locked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:09 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:27 GMT']
x-ms-lease-action: [change]
x-ms-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd]
x-ms-proposed-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:40:09 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:27 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:09 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:28 GMT']
x-ms-lease-action: [renew]
x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:40:09 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:28 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:09 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:28 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
@@ -3778,47 +3765,50 @@ interactions:
content-length: ['131072']
content-md5: [DfvoqkwgtS4bi/PLbL3xkw==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:40:09 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:28 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:47:26 GMT']
x-ms-lease-duration: [fixed]
x-ms-lease-state: [leased]
x-ms-lease-status: [locked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:10 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:29 GMT']
x-ms-lease-action: [break]
x-ms-lease-break-period: ['30']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:40:09 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:28 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-lease-time: ['30']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:10 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:29 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
@@ -3828,45 +3818,48 @@ interactions:
content-length: ['131072']
content-md5: [DfvoqkwgtS4bi/PLbL3xkw==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:40:10 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:29 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:47:26 GMT']
x-ms-lease-state: [breaking]
x-ms-lease-status: [locked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:10 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:29 GMT']
x-ms-lease-action: [release]
x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=lease
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:40:10 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:29 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:40:10 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:30 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
@@ -3876,15 +3869,16 @@ interactions:
content-length: ['131072']
content-md5: [DfvoqkwgtS4bi/PLbL3xkw==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:40:10 GMT']
- etag: ['"0x8D56F2BC2E31F5D"']
- last-modified: ['Thu, 08 Feb 2018 19:40:08 GMT']
+ date: ['Tue, 01 May 2018 21:47:30 GMT']
+ etag: ['"0x8D5AFAD217D442A"']
+ last-modified: ['Tue, 01 May 2018 21:47:26 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:47:26 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -3896,8 +3890,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -3906,11 +3900,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 19:40:11 GMT']
+ date: ['Tue, 01 May 2018 21:47:30 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkc0RFBTVllNUUdDT0tESkpHWlVSUTRQQ0xYVVo2WDZSVVVGR3w1MkQzMEVDMTAwOEZEMUM2LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdHNUhINUNaQ1RXVkpZSVJLN1FLS1BMRUpJQ1hGU0VTUlhDWXw3MDdCNzVBMTgzNkQ4OTMwLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_metadata_operations.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_metadata_operations.yaml
index 9d9a266348f..b4946d282be 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_metadata_operations.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_metadata_operations.yaml
@@ -1,29 +1,31 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:47:31Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:47:31Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:30:19 GMT']
+ date: ['Tue, 01 May 2018 21:47:31 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
+ x-content-type-options: [nosniff]
x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 201, message: Created}
- request:
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:30:20 GMT']
+ date: ['Tue, 01 May 2018 21:47:32 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/9bdf8afb-45f2-4eae-8c2e-127d904c823c?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/64395363-7da9-4c6c-bff7-ea6fe1e42ee2?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/9bdf8afb-45f2-4eae-8c2e-127d904c823c?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/64395363-7da9-4c6c-bff7-ea6fe1e42ee2?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:30:38 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/9bdf8afb-45f2-4eae-8c2e-127d904c823c?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/9bdf8afb-45f2-4eae-8c2e-127d904c823c?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:30:21.3217252Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:30:21.3217252Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:30:21.2748558Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:33.1932492Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:33.1932492Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:47:33.1307619Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:30:55 GMT']
+ date: ['Tue, 01 May 2018 21:47:50 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"RntPvIdHqnncSsSTTcA9HLXyMw4pXCC/hvRmtvAeVa5/rd5LGzNU8zzkZcZdSEuDW7bklfgqquuIEisaS7rnew==","permissions":"FULL"},{"keyName":"key2","value":"3s1GedWU/+AWOHbj0S1hVZWMlK13GB1erhh3GSF9voUL2LUnt9+dB1v0R/Bscyp62haHhCqEYkjVGMqtvEoGoQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"WPdT48donsWUf4jsRPxmfhBfRjJy+j+RiW6LdYy4XoaFZ6OIV+aMY3jgtZuQ6YZmaI0ZOI8X0KnrGH7CU/JE5A==","permissions":"FULL"},{"keyName":"key2","value":"Rh/W4ble3jsp5UvOUD/d5m39F98+0JQNaopSferYCwfD2Yz66+RYncStEKYVGSg3ri96z/vCgY9xCfV3idefdA==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:30:56 GMT']
+ date: ['Tue, 01 May 2018 21:47:51 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1193']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"RntPvIdHqnncSsSTTcA9HLXyMw4pXCC/hvRmtvAeVa5/rd5LGzNU8zzkZcZdSEuDW7bklfgqquuIEisaS7rnew==","permissions":"FULL"},{"keyName":"key2","value":"3s1GedWU/+AWOHbj0S1hVZWMlK13GB1erhh3GSF9voUL2LUnt9+dB1v0R/Bscyp62haHhCqEYkjVGMqtvEoGoQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"WPdT48donsWUf4jsRPxmfhBfRjJy+j+RiW6LdYy4XoaFZ6OIV+aMY3jgtZuQ6YZmaI0ZOI8X0KnrGH7CU/JE5A==","permissions":"FULL"},{"keyName":"key2","value":"Rh/W4ble3jsp5UvOUD/d5m39F98+0JQNaopSferYCwfD2Yz66+RYncStEKYVGSg3ri96z/vCgY9xCfV3idefdA==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:30:57 GMT']
+ date: ['Tue, 01 May 2018 21:47:51 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,6 +147,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 200, message: OK}
- request:
@@ -176,20 +155,21 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:30:58 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:52 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:30:58 GMT']
- etag: ['"0x8D56F2A7B3A85DD"']
- last-modified: ['Thu, 08 Feb 2018 19:30:58 GMT']
+ date: ['Tue, 01 May 2018 21:47:52 GMT']
+ etag: ['"0x8D5AFAD31035F92"']
+ last-modified: ['Tue, 01 May 2018 21:47:52 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: "# --------------------------------------------------------------------------------------------\r\
@@ -283,18 +263,41 @@ interactions:
\ 'The expected number of block put requests is {} but the actual '\r\
\n 'number is {}.'.format(block_count, len(put_blocks)))\r\
\n\r\n @ResourceGroupPreparer()\r\n @StorageAccountPreparer()\r\n def\
- \ test_storage_blob_lease_operations(self, resource_group, storage_account):\r\
- \n account_info = self.get_account_info(resource_group, storage_account)\r\
- \n local_file = self.create_temp_file(128)\r\n c = self.create_container(account_info)\r\
- \n b = self.create_random_name('blob', 24)\r\n proposed_lease_id\
- \ = 'abcdabcd-abcd-abcd-abcd-abcdabcdabcd'\r\n new_lease_id = 'dcbadcba-dcba-dcba-dcba-dcbadcbadcba'\r\
- \n date = '2016-04-01t12:00z'\r\n\r\n self.storage_cmd('storage\
- \ blob upload -c {} -n {} -f \"{}\"', account_info, c, b, local_file)\r\n\r\n\
- \ # test lease operations\r\n self.storage_cmd('storage blob lease\
- \ acquire --lease-duration 60 -b {} -c {} '\r\n '--if-modified-since\
- \ {} --proposed-lease-id {}', account_info, b, c, date,\r\n \
- \ proposed_lease_id)\r\n self.storage_cmd('storage blob show\
- \ -n {} -c {}', account_info, b, c) \\\r\n .assert_with_checks(JMESPathCheck('properties.lease.duration',\
+ \ test_storage_blob_socket_timeout(self, resource_group, storage_account):\r\
+ \n local_dir = self.create_temp_dir()\r\n local_file = self.create_temp_file(1)\r\
+ \n blob_name = self.create_random_name(prefix='blob', length=24)\r\n\
+ \ account_info = self.get_account_info(resource_group, storage_account)\r\
+ \n\r\n container = self.create_container(account_info)\r\n\r\n \
+ \ from azure.common import AzureException\r\n with self.assertRaises(AzureException):\r\
+ \n self.storage_cmd('storage blob upload -c {} -f \"{}\" -n {} --type\
+ \ block --socket-timeout -11',\r\n account_info,\
+ \ container, local_file, blob_name)\r\n\r\n self.storage_cmd('storage\
+ \ blob exists -n {} -c {}', account_info, blob_name, container) \\\r\n \
+ \ .assert_with_checks(JMESPathCheck('exists', False))\r\n\r\n self.storage_cmd('storage\
+ \ blob upload -c {} -f \"{}\" -n {} --type block --socket-timeout 10',\r\n \
+ \ account_info, container, local_file, blob_name)\r\n\
+ \ self.storage_cmd('storage blob exists -n {} -c {}', account_info, blob_name,\
+ \ container) \\\r\n .assert_with_checks(JMESPathCheck('exists', True))\r\
+ \n\r\n self.storage_cmd('storage blob show -n {} -c {}', account_info,\
+ \ blob_name, container) \\\r\n .assert_with_checks(JMESPathCheck('name',\
+ \ blob_name))\r\n\r\n downloaded = os.path.join(local_dir, 'test.file')\r\
+ \n\r\n self.storage_cmd('storage blob download -n {} -c {} --file \"\
+ {}\" --socket-timeout 10',\r\n account_info, blob_name,\
+ \ container, downloaded)\r\n self.assertTrue(os.path.isfile(downloaded),\
+ \ 'The file is not downloaded.')\r\n\r\n @ResourceGroupPreparer()\r\n \
+ \ @StorageAccountPreparer()\r\n def test_storage_blob_lease_operations(self,\
+ \ resource_group, storage_account):\r\n account_info = self.get_account_info(resource_group,\
+ \ storage_account)\r\n local_file = self.create_temp_file(128)\r\n \
+ \ c = self.create_container(account_info)\r\n b = self.create_random_name('blob',\
+ \ 24)\r\n proposed_lease_id = 'abcdabcd-abcd-abcd-abcd-abcdabcdabcd'\r\
+ \n new_lease_id = 'dcbadcba-dcba-dcba-dcba-dcbadcbadcba'\r\n date\
+ \ = '2016-04-01t12:00z'\r\n\r\n self.storage_cmd('storage blob upload\
+ \ -c {} -n {} -f \"{}\"', account_info, c, b, local_file)\r\n\r\n # test\
+ \ lease operations\r\n self.storage_cmd('storage blob lease acquire --lease-duration\
+ \ 60 -b {} -c {} '\r\n '--if-modified-since {} --proposed-lease-id\
+ \ {}', account_info, b, c, date,\r\n proposed_lease_id)\r\
+ \n self.storage_cmd('storage blob show -n {} -c {}', account_info, b,\
+ \ c) \\\r\n .assert_with_checks(JMESPathCheck('properties.lease.duration',\
\ 'fixed'),\r\n JMESPathCheck('properties.lease.state',\
\ 'leased'),\r\n JMESPathCheck('properties.lease.status',\
\ 'locked'))\r\n self.storage_cmd('storage blob lease change -b {} -c\
@@ -398,20 +401,20 @@ interactions:
\ account_info, c) \\\r\n .assert_with_checks(JMESPathCheck('deleted',\
\ True))\r\n self.storage_cmd('storage container exists -n {}', account_info,\
\ c) \\\r\n .assert_with_checks(JMESPathCheck('exists', False))\r\
- \n\r\n @api_version_constraint(ResourceType.MGMT_STORAGE, min_api='2017-07-29')\r\
- \n @ResourceGroupPreparer()\r\n @StorageAccountPreparer()\r\n def test_storage_blob_soft_delete(self,\
- \ resource_group, storage_account):\r\n account_info = self.get_account_info(resource_group,\
- \ storage_account)\r\n container = self.create_container(account_info)\r\
- \n\r\n # create a blob\r\n local_file = self.create_temp_file(1)\r\
- \n blob_name = self.create_random_name(prefix='blob', length=24)\r\n\r\
- \n self.storage_cmd('storage blob upload -c {} -f \"{}\" -n {} --type\
- \ block', account_info,\r\n container, local_file, blob_name)\r\
- \n self.assertEqual(len(self.storage_cmd('storage blob list -c {}',\r\
- \n account_info, container).get_output_in_json()),\
- \ 1)\r\n\r\n # set delete-policy to enable soft-delete\r\n self.storage_cmd('storage\
- \ blob service-properties delete-policy update --enable true --days-retained\
- \ 2',\r\n account_info)\r\n self.storage_cmd('storage\
- \ blob service-properties delete-policy show',\r\n account_info).assert_with_checks(JMESPathCheck('enabled',\
+ \n\r\n @ResourceGroupPreparer()\r\n @StorageAccountPreparer()\r\n def\
+ \ test_storage_blob_soft_delete(self, resource_group, storage_account):\r\n\
+ \ account_info = self.get_account_info(resource_group, storage_account)\r\
+ \n container = self.create_container(account_info)\r\n\r\n # create\
+ \ a blob\r\n local_file = self.create_temp_file(1)\r\n blob_name\
+ \ = self.create_random_name(prefix='blob', length=24)\r\n\r\n self.storage_cmd('storage\
+ \ blob upload -c {} -f \"{}\" -n {} --type block', account_info,\r\n \
+ \ container, local_file, blob_name)\r\n self.assertEqual(len(self.storage_cmd('storage\
+ \ blob list -c {}',\r\n account_info,\
+ \ container).get_output_in_json()), 1)\r\n\r\n # set delete-policy to\
+ \ enable soft-delete\r\n self.storage_cmd('storage blob service-properties\
+ \ delete-policy update --enable true --days-retained 2',\r\n \
+ \ account_info)\r\n self.storage_cmd('storage blob service-properties\
+ \ delete-policy show',\r\n account_info).assert_with_checks(JMESPathCheck('enabled',\
\ True),\r\n JMESPathCheck('days',\
\ 2))\r\n\r\n # soft-delete and check\r\n self.storage_cmd('storage\
\ blob delete -c {} -n {}', account_info, container, blob_name)\r\n self.assertEqual(len(self.storage_cmd('storage\
@@ -422,113 +425,132 @@ interactions:
\ and check\r\n self.storage_cmd('storage blob undelete -c {} -n {}',\
\ account_info, container, blob_name)\r\n self.assertEqual(len(self.storage_cmd('storage\
\ blob list -c {}',\r\n account_info,\
- \ container).get_output_in_json()), 1)\r\n\r\n\r\nif __name__ == '__main__':\r\
- \n unittest.main()\r\n"
+ \ container).get_output_in_json()), 1)\r\n\r\n @ResourceGroupPreparer()\r\
+ \n @StorageAccountPreparer()\r\n def test_storage_blob_append(self, resource_group,\
+ \ storage_account):\r\n account_info = self.get_account_info(resource_group,\
+ \ storage_account)\r\n container = self.create_container(account_info)\r\
+ \n\r\n # create an append blob\r\n local_file = self.create_temp_file(1)\r\
+ \n blob_name = self.create_random_name(prefix='blob', length=24)\r\n\r\
+ \n self.storage_cmd('storage blob upload -c {} -f \"{}\" -n {} --type\
+ \ append --if-none-match *', account_info,\r\n container,\
+ \ local_file, blob_name)\r\n self.assertEqual(len(self.storage_cmd('storage\
+ \ blob list -c {}',\r\n account_info,\
+ \ container).get_output_in_json()), 1)\r\n\r\n # append if-none-match\
+ \ should throw exception\r\n with self.assertRaises(Exception):\r\n \
+ \ self.storage_cmd('storage blob upload -c {} -f \"{}\" -n {} --type\
+ \ append --if-none-match *', account_info,\r\n container,\
+ \ local_file, blob_name)\r\n\r\n\r\nif __name__ == '__main__':\r\n unittest.main()\r\
+ \n"
headers:
Connection: [keep-alive]
- Content-Length: ['18787']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ Content-Length: ['21487']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-content-type: [text/plain]
x-ms-blob-type: [BlockBlob]
- x-ms-date: ['Thu, 08 Feb 2018 19:30:59 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:47:53 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
body: {string: ''}
headers:
- content-md5: [Zd3Jo95xLQtZkAAKeMC8Qg==]
- date: ['Thu, 08 Feb 2018 19:30:58 GMT']
- etag: ['"0x8D56F2A7B831D98"']
- last-modified: ['Thu, 08 Feb 2018 19:30:59 GMT']
+ content-md5: [+WFZhdwHyV1SHyRq6onVEw==]
+ date: ['Tue, 01 May 2018 21:47:52 GMT']
+ etag: ['"0x8D5AFAD313B7741"']
+ last-modified: ['Tue, 01 May 2018 21:47:53 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:30:59 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:53 GMT']
x-ms-meta-a: [b]
x-ms-meta-c: [d]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:30:59 GMT']
- etag: ['"0x8D56F2A7BB8E0C7"']
- last-modified: ['Thu, 08 Feb 2018 19:30:59 GMT']
+ date: ['Tue, 01 May 2018 21:47:53 GMT']
+ etag: ['"0x8D5AFAD316D8CF1"']
+ last-modified: ['Tue, 01 May 2018 21:47:53 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:30:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:53 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:30:59 GMT']
- etag: ['"0x8D56F2A7BB8E0C7"']
- last-modified: ['Thu, 08 Feb 2018 19:30:59 GMT']
+ date: ['Tue, 01 May 2018 21:47:53 GMT']
+ etag: ['"0x8D5AFAD316D8CF1"']
+ last-modified: ['Tue, 01 May 2018 21:47:53 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-meta-a: [b]
x-ms-meta-c: [d]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:30:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:54 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:30:59 GMT']
- etag: ['"0x8D56F2A7C0C9393"']
- last-modified: ['Thu, 08 Feb 2018 19:31:00 GMT']
+ date: ['Tue, 01 May 2018 21:47:53 GMT']
+ etag: ['"0x8D5AFAD31E93C43"']
+ last-modified: ['Tue, 01 May 2018 21:47:54 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:31:00 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:47:54 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:30:59 GMT']
- etag: ['"0x8D56F2A7C0C9393"']
- last-modified: ['Thu, 08 Feb 2018 19:31:00 GMT']
+ date: ['Tue, 01 May 2018 21:47:54 GMT']
+ etag: ['"0x8D5AFAD31E93C43"']
+ last-modified: ['Tue, 01 May 2018 21:47:54 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -540,8 +562,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -550,11 +572,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 19:31:01 GMT']
+ date: ['Tue, 01 May 2018 21:47:55 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdURDdINEZBNE9LQ08zWDNQVFlIT0VRM0hDWjRQNFFLVU1FWXxBODFDMkU3OUI2RTc5MUVFLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdDUk9TNTMzSEFOQ0xUS1pGTVlSQ0JFTkhIQjVRV1ZDNEMyT3wwQThBNzAyQ0U0NDI5MjdDLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1193']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_snapshot_operations.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_snapshot_operations.yaml
index 0443596f004..2c09694d194 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_snapshot_operations.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_snapshot_operations.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:47:55Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:47:55Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:36:48 GMT']
+ date: ['Tue, 01 May 2018 21:47:55 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:36:51 GMT']
+ date: ['Tue, 01 May 2018 21:47:56 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/8c001b7c-bfa7-4a80-8770-7da057285bad?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b798e646-f8cb-4417-a58e-b42fe7eba2e6?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/8c001b7c-bfa7-4a80-8770-7da057285bad?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b798e646-f8cb-4417-a58e-b42fe7eba2e6?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:36:50.9747872Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:36:50.9747872Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:36:50.9435347Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:57.5877755Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:47:57.5877755Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:47:57.5252776Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:37:08 GMT']
+ date: ['Tue, 01 May 2018 21:48:14 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -94,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"McfbAUdjb/RVU3qTjdgIr6UxAgXkMcj2KPAtEWqUQ2yQfoeMPXoAB5Hg5pO6RSx8y+q/wjoR3imnQ+xJ9oWEtQ==","permissions":"FULL"},{"keyName":"key2","value":"zK4P0jitAgSCMZMaTk1+HcdaPsVfGyRWgYitU+iVpc1tU5WQelAorllGKbB5Yrmc//1j48r7CF3Ac4GvRPgKAQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"mSQyYeFjSWcHh4OQ0cI+sM0ltIbw37uXGCXXseczOS1s6fnU78/mmq/MELZC/f/YIcITEXjXC/lnvCVu3H01QQ==","permissions":"FULL"},{"keyName":"key2","value":"oMyycaVQzQ9qbelMiFVT3v6nbIKeVoByVl4W0XnQd7vesMUvINKjuIuDm/nebGLsaBnXkpeahoCjXgznWDJKiw==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:37:09 GMT']
+ date: ['Tue, 01 May 2018 21:48:16 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -112,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1196']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -124,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"McfbAUdjb/RVU3qTjdgIr6UxAgXkMcj2KPAtEWqUQ2yQfoeMPXoAB5Hg5pO6RSx8y+q/wjoR3imnQ+xJ9oWEtQ==","permissions":"FULL"},{"keyName":"key2","value":"zK4P0jitAgSCMZMaTk1+HcdaPsVfGyRWgYitU+iVpc1tU5WQelAorllGKbB5Yrmc//1j48r7CF3Ac4GvRPgKAQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"mSQyYeFjSWcHh4OQ0cI+sM0ltIbw37uXGCXXseczOS1s6fnU78/mmq/MELZC/f/YIcITEXjXC/lnvCVu3H01QQ==","permissions":"FULL"},{"keyName":"key2","value":"oMyycaVQzQ9qbelMiFVT3v6nbIKeVoByVl4W0XnQd7vesMUvINKjuIuDm/nebGLsaBnXkpeahoCjXgznWDJKiw==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:37:09 GMT']
+ date: ['Tue, 01 May 2018 21:48:16 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -142,27 +147,29 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:37:10 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:48:16 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:37:11 GMT']
- etag: ['"0x8D56F2B59104B06"']
- last-modified: ['Thu, 08 Feb 2018 19:37:11 GMT']
+ date: ['Tue, 01 May 2018 21:48:16 GMT']
+ etag: ['"0x8D5AFAD3F79B2C1"']
+ last-modified: ['Tue, 01 May 2018 21:48:17 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
@@ -3618,54 +3625,57 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['131072']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-type: [BlockBlob]
- x-ms-date: ['Thu, 08 Feb 2018 19:37:11 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:48:17 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
body: {string: ''}
headers:
content-md5: [DfvoqkwgtS4bi/PLbL3xkw==]
- date: ['Thu, 08 Feb 2018 19:37:11 GMT']
- etag: ['"0x8D56F2B597CEACA"']
- last-modified: ['Thu, 08 Feb 2018 19:37:11 GMT']
+ date: ['Tue, 01 May 2018 21:48:17 GMT']
+ etag: ['"0x8D5AFAD3FE3ED21"']
+ last-modified: ['Tue, 01 May 2018 21:48:17 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:37:11 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:48:18 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=snapshot
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:37:11 GMT']
- etag: ['"0x8D56F2B597CEACA"']
- last-modified: ['Thu, 08 Feb 2018 19:37:11 GMT']
+ date: ['Tue, 01 May 2018 21:48:18 GMT']
+ etag: ['"0x8D5AFAD3FE3ED21"']
+ last-modified: ['Tue, 01 May 2018 21:48:17 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-snapshot: ['2018-02-08T19:37:12.1381903Z']
- x-ms-version: ['2017-07-29']
+ x-ms-snapshot: ['2018-05-01T21:48:18.2590880Z']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:37:11 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:48:18 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
- uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?snapshot=2018-02-08T19%3A37%3A12.1381903Z
+ uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?snapshot=2018-05-01T21%3A48%3A18.2590880Z
response:
body: {string: ''}
headers:
@@ -3673,13 +3683,14 @@ interactions:
content-length: ['131072']
content-md5: [DfvoqkwgtS4bi/PLbL3xkw==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:37:11 GMT']
- etag: ['"0x8D56F2B597CEACA"']
- last-modified: ['Thu, 08 Feb 2018 19:37:11 GMT']
+ date: ['Tue, 01 May 2018 21:48:18 GMT']
+ etag: ['"0x8D5AFAD3FE3ED21"']
+ last-modified: ['Tue, 01 May 2018 21:48:17 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:48:17 GMT']
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -3691,8 +3702,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -3701,11 +3712,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 19:37:13 GMT']
+ date: ['Tue, 01 May 2018 21:48:18 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdVTFA3NEpKVExQVDY1VFlLR0hHSjdVTUxIWTRFTkZOUUpLVnw3MzJCNTA2Q0IwNkNDNTAzLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdIRjIzR0VVVUw1RzQ2VURVM0QyNVA2QjdNNVlTMjNPVjZCWnxCMUJEREZDMTAzQzU1RjFELVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_socket_timeout.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_socket_timeout.yaml
index e034fa49472..47579417e79 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_socket_timeout.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_socket_timeout.yaml
@@ -1,7 +1,7 @@
interactions:
- request:
body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
- "date": "2018-04-07T00:12:55Z"}}'
+ "date": "2018-05-01T21:48:19Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
@@ -11,17 +11,17 @@ interactions:
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-04-07T00:12:55Z"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:48:19Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Sat, 07 Apr 2018 00:12:56 GMT']
+ date: ['Tue, 01 May 2018 21:48:20 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
@@ -39,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -49,9 +49,9 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Sat, 07 Apr 2018 00:12:59 GMT']
+ date: ['Tue, 01 May 2018 21:48:21 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/01ef5cc2-8d4e-4b36-8ed8-add136c6770d?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/0d0558c2-d824-467c-9cc3-557bcfe84843?monitor=true&api-version=2017-10-01']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
Microsoft-HTTPAPI/2.0']
@@ -66,17 +66,19 @@ interactions:
Accept-Encoding: ['gzip, deflate']
CommandName: [storage account create]
Connection: [keep-alive]
+ Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
+ accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/01ef5cc2-8d4e-4b36-8ed8-add136c6770d?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/0d0558c2-d824-467c-9cc3-557bcfe84843?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-04-07T00:12:59.1840796Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-04-07T00:12:59.1840796Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-04-07T00:12:59.1215645Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:21.6512920Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:48:21.6512920Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:48:21.5575410Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Sat, 07 Apr 2018 00:13:15 GMT']
+ date: ['Tue, 01 May 2018 21:48:38 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -96,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"IYa076sCz4c4q+O0s/HVuP1Yh0JdguJw1DDQWsyxs1ZPYLIRp8hgDjIuZOjlyYDXD1u/7IkYN6DFI7Sv1jF3FA==","permissions":"FULL"},{"keyName":"key2","value":"GIs/71nI67FUFUXvMl1Abd8NAqZmbA80g+gbeKZ02h16GIdvWqmUvSIK3um8pDZXMnOK4vZJez69b2R+Z7akSw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"2DyFqrFaHyg5gZoURRCMdrDd60j0YCpC/d8s77k5bvTbZvMovR3FgH26PujOoSNEEcFVRVH41UpwrYRmdXMbGg==","permissions":"FULL"},{"keyName":"key2","value":"SF8vB+fEvoYI6CrC+HuAdO43ctX7R7p5k3DzRmT5L3LnnnAtmnD0Nuc5fTiWMNifZBlSOqMPpvn27qvYvyJZkQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Sat, 07 Apr 2018 00:13:17 GMT']
+ date: ['Tue, 01 May 2018 21:48:39 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -115,7 +117,7 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -127,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.31]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"IYa076sCz4c4q+O0s/HVuP1Yh0JdguJw1DDQWsyxs1ZPYLIRp8hgDjIuZOjlyYDXD1u/7IkYN6DFI7Sv1jF3FA==","permissions":"FULL"},{"keyName":"key2","value":"GIs/71nI67FUFUXvMl1Abd8NAqZmbA80g+gbeKZ02h16GIdvWqmUvSIK3um8pDZXMnOK4vZJez69b2R+Z7akSw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"2DyFqrFaHyg5gZoURRCMdrDd60j0YCpC/d8s77k5bvTbZvMovR3FgH26PujOoSNEEcFVRVH41UpwrYRmdXMbGg==","permissions":"FULL"},{"keyName":"key2","value":"SF8vB+fEvoYI6CrC+HuAdO43ctX7R7p5k3DzRmT5L3LnnnAtmnD0Nuc5fTiWMNifZBlSOqMPpvn27qvYvyJZkQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Sat, 07 Apr 2018 00:13:17 GMT']
+ date: ['Tue, 01 May 2018 21:48:40 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -146,45 +148,47 @@ interactions:
transfer-encoding: [chunked]
vary: [Accept-Encoding]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1198']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.31]
- x-ms-date: ['Sat, 07 Apr 2018 00:13:18 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:48:41 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004?restype=container
response:
body: {string: ''}
headers:
- date: ['Sat, 07 Apr 2018 00:13:18 GMT']
- etag: ['"0x8D59C1C5DE25CCF"']
- last-modified: ['Sat, 07 Apr 2018 00:13:19 GMT']
+ date: ['Tue, 01 May 2018 21:48:40 GMT']
+ etag: ['"0x8D5AFAD4DCDD1D8"']
+ last-modified: ['Tue, 01 May 2018 21:48:41 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.31]
- x-ms-date: ['Sat, 07 Apr 2018 00:14:18 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:49:37 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
body: {string: ''}
headers:
- date: ['Sat, 07 Apr 2018 00:14:18 GMT']
+ date: ['Tue, 01 May 2018 21:49:37 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-error-code: [BlobNotFound]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 404, message: The specified blob does not exist.}
- request:
body: "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
@@ -217,31 +221,33 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['1024']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.31]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-type: [BlockBlob]
- x-ms-date: ['Sat, 07 Apr 2018 00:14:19 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:49:38 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
body: {string: ''}
headers:
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
- date: ['Sat, 07 Apr 2018 00:14:18 GMT']
- etag: ['"0x8D59C1C81B17816"']
- last-modified: ['Sat, 07 Apr 2018 00:14:19 GMT']
+ date: ['Tue, 01 May 2018 21:49:37 GMT']
+ etag: ['"0x8D5AFAD6FD24C68"']
+ last-modified: ['Tue, 01 May 2018 21:49:38 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.31]
- x-ms-date: ['Sat, 07 Apr 2018 00:14:19 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:49:38 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -251,23 +257,25 @@ interactions:
content-length: ['1024']
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
content-type: [application/octet-stream]
- date: ['Sat, 07 Apr 2018 00:14:19 GMT']
- etag: ['"0x8D59C1C81B17816"']
- last-modified: ['Sat, 07 Apr 2018 00:14:19 GMT']
+ date: ['Tue, 01 May 2018 21:49:38 GMT']
+ etag: ['"0x8D5AFAD6FD24C68"']
+ last-modified: ['Tue, 01 May 2018 21:49:38 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:49:38 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.31]
- x-ms-date: ['Sat, 07 Apr 2018 00:14:19 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:49:38 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -277,24 +285,26 @@ interactions:
content-length: ['1024']
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
content-type: [application/octet-stream]
- date: ['Sat, 07 Apr 2018 00:14:19 GMT']
- etag: ['"0x8D59C1C81B17816"']
- last-modified: ['Sat, 07 Apr 2018 00:14:19 GMT']
+ date: ['Tue, 01 May 2018 21:49:38 GMT']
+ etag: ['"0x8D5AFAD6FD24C68"']
+ last-modified: ['Tue, 01 May 2018 21:49:38 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:49:38 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.31]
- x-ms-date: ['Sat, 07 Apr 2018 00:14:20 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:49:39 GMT']
x-ms-range: [bytes=0-33554431]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -331,16 +341,17 @@ interactions:
content-length: ['1024']
content-range: [bytes 0-1023/1024]
content-type: [application/octet-stream]
- date: ['Sat, 07 Apr 2018 00:14:20 GMT']
- etag: ['"0x8D59C1C81B17816"']
- last-modified: ['Sat, 07 Apr 2018 00:14:19 GMT']
+ date: ['Tue, 01 May 2018 21:49:38 GMT']
+ etag: ['"0x8D5AFAD6FD24C68"']
+ last-modified: ['Tue, 01 May 2018 21:49:38 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:49:38 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 206, message: Partial Content}
- request:
body: null
@@ -353,7 +364,7 @@ interactions:
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.31]
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -362,12 +373,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Sat, 07 Apr 2018 00:14:21 GMT']
+ date: ['Tue, 01 May 2018 21:49:39 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdLWjRPMzNBUlFYTTNYUUFJTjYzVjVXRlpISkdEMlNOUFdLWHwyMkU5QzM0MjVBQ0Q1N0U4LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdQUjJSNjM0RUdHUkpFWTJKWDdJWkJMREFZR01GUE80T1oyM3w2QTZCNkNBRDM4RTNBNDEyLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
x-content-type-options: [nosniff]
- x-ms-ratelimit-remaining-subscription-writes: ['1199']
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_soft_delete.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_soft_delete.yaml
index 59e6c9f00f4..6bf6731b419 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_soft_delete.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_soft_delete.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:49:39Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:49:39Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:31:29 GMT']
+ date: ['Tue, 01 May 2018 21:49:40 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:31:31 GMT']
+ date: ['Tue, 01 May 2018 21:49:41 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a8daa5ce-f344-45ea-a9bc-fb5c1a16a9f3?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/67812c24-890c-48ed-9849-0005e7354367?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1195']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a8daa5ce-f344-45ea-a9bc-fb5c1a16a9f3?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/67812c24-890c-48ed-9849-0005e7354367?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:31:49 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a8daa5ce-f344-45ea-a9bc-fb5c1a16a9f3?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a8daa5ce-f344-45ea-a9bc-fb5c1a16a9f3?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:31:31.9097589Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:31:31.9097589Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:31:31.8628627Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:49:41.9342494Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:49:41.9342494Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:49:41.8561236Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:32:06 GMT']
+ date: ['Tue, 01 May 2018 21:49:59 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"zoX/BuIQQNp6F1/u0onvdZw324M3I+0M1oSUMzhItBY3H6lpHnGPylVYqdglQVRGps8GliIcvgjKIgbaK8hyow==","permissions":"FULL"},{"keyName":"key2","value":"XbkNiuQaxUMRqNldTN8uwn71GuiAhngso8QuVxOiHdXEfY/MPTQLh2GZ23brHygh7Lp++ZEmQidBWC537+GOyw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"qf+rZABzdZKtF9qE66GwfTkLDDn1zrL1gdhmcDMILeI52dsGc9+YJ9MCg+qtQ8vW4pa4Zr3uE8A2hZaB2ZaM/Q==","permissions":"FULL"},{"keyName":"key2","value":"zCQl9+O2FWIJFZvwRAIlcJwUe/j+wBKWmmCrCuKFVPjaiMHcMnJGeKGpKJbOgG90VP1DO1pdFAp2qCNqLC9kOQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:32:07 GMT']
+ date: ['Tue, 01 May 2018 21:50:00 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"zoX/BuIQQNp6F1/u0onvdZw324M3I+0M1oSUMzhItBY3H6lpHnGPylVYqdglQVRGps8GliIcvgjKIgbaK8hyow==","permissions":"FULL"},{"keyName":"key2","value":"XbkNiuQaxUMRqNldTN8uwn71GuiAhngso8QuVxOiHdXEfY/MPTQLh2GZ23brHygh7Lp++ZEmQidBWC537+GOyw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"qf+rZABzdZKtF9qE66GwfTkLDDn1zrL1gdhmcDMILeI52dsGc9+YJ9MCg+qtQ8vW4pa4Zr3uE8A2hZaB2ZaM/Q==","permissions":"FULL"},{"keyName":"key2","value":"zCQl9+O2FWIJFZvwRAIlcJwUe/j+wBKWmmCrCuKFVPjaiMHcMnJGeKGpKJbOgG90VP1DO1pdFAp2qCNqLC9kOQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:32:10 GMT']
+ date: ['Tue, 01 May 2018 21:50:00 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,27 +147,29 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1192']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:11 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:01 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:32:11 GMT']
- etag: ['"0x8D56F2AA6BC34C0"']
- last-modified: ['Thu, 08 Feb 2018 19:32:11 GMT']
+ date: ['Tue, 01 May 2018 21:50:01 GMT']
+ etag: ['"0x8D5AFAD7DD3A5C1"']
+ last-modified: ['Tue, 01 May 2018 21:50:01 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
@@ -222,55 +202,59 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['1024']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-type: [BlockBlob]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:11 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:50:02 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
body: {string: ''}
headers:
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
- date: ['Thu, 08 Feb 2018 19:32:12 GMT']
- etag: ['"0x8D56F2AA6F1F969"']
- last-modified: ['Thu, 08 Feb 2018 19:32:12 GMT']
+ date: ['Tue, 01 May 2018 21:50:01 GMT']
+ etag: ['"0x8D5AFAD7E48DFBF"']
+ last-modified: ['Tue, 01 May 2018 21:50:02 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:12 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:02 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=list
response:
body: {string: "\uFEFFblob000004Thu,\
- \ 08 Feb 2018 19:32:12 GMT0x8D56F2AA6F1F9691024application/octet-streamblob000004Tue,\
+ \ 01 May 2018 21:50:02 GMTTue, 01 May 2018\
+ \ 21:50:02 GMT0x8D5AFAD7E48DFBF1024application/octet-streamDzQ7CTESaiDxM9Z8KwGKOw==BlockBlobunlockedavailabletrue"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:32:11 GMT']
+ date: ['Tue, 01 May 2018 21:50:02 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:12 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:03 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -278,10 +262,10 @@ interactions:
\ />false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:32:12 GMT']
+ date: ['Tue, 01 May 2018 21:50:02 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -290,26 +274,28 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['176']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:12 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:03 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:32:12 GMT']
+ date: ['Tue, 01 May 2018 21:50:02 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:12 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:03 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -317,18 +303,19 @@ interactions:
\ />true2"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:32:12 GMT']
+ date: ['Tue, 01 May 2018 21:50:03 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:12 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:04 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -336,37 +323,39 @@ interactions:
\ />true2"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:32:12 GMT']
+ date: ['Tue, 01 May 2018 21:50:04 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:13 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:04 GMT']
+ x-ms-version: ['2017-11-09']
method: DELETE
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:32:13 GMT']
+ date: ['Tue, 01 May 2018 21:50:04 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-delete-type-permanent: ['false']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:13 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:05 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=list
response:
@@ -375,77 +364,82 @@ interactions:
cont000003\">"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:32:13 GMT']
+ date: ['Tue, 01 May 2018 21:50:05 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:13 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:05 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=list&include=deleted
response:
body: {string: "\uFEFFblob000004trueThu,\
- \ 08 Feb 2018 19:32:12 GMT0x8D56F2AA6F1F9691024application/octet-streamblob000004trueTue,\
+ \ 01 May 2018 21:50:02 GMTTue, 01 May 2018\
+ \ 21:50:02 GMT0x8D5AFAD7E48DFBF1024application/octet-streamDzQ7CTESaiDxM9Z8KwGKOw==BlockBlobtrueThu,\
- \ 08 Feb 2018 19:32:13 GMT1BlockBlobtrueTue,\
+ \ 01 May 2018 21:50:04 GMT1"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:32:13 GMT']
+ date: ['Tue, 01 May 2018 21:50:05 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:14 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:06 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003/blob000004?comp=undelete
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:32:14 GMT']
+ date: ['Tue, 01 May 2018 21:50:06 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:14 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:07 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=list
response:
body: {string: "\uFEFFblob000004Thu,\
- \ 08 Feb 2018 19:32:12 GMT0x8D56F2AA6F1F9691024application/octet-streamblob000004Tue,\
+ \ 01 May 2018 21:50:02 GMTTue, 01 May 2018\
+ \ 21:50:02 GMT0x8D5AFAD7E48DFBF1024application/octet-streamDzQ7CTESaiDxM9Z8KwGKOw==BlockBlobunlockedavailabletrue"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:32:14 GMT']
+ date: ['Tue, 01 May 2018 21:50:07 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -457,8 +451,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -467,11 +461,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 19:32:14 GMT']
+ date: ['Tue, 01 May 2018 21:50:07 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdZWkZJSVhSR0U0WE5ZVkhSUEpPSkdPSklBTUVSTjZUNlJDRHw1QTQzRENGQkEyMUNEMThCLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdaQkNSRUJLN09NQ0JGVVFMSTRSUVlMSEdNTkEyRUs3TjVYQ3xERkQ3RkIyMTUyNkQ2Q0EyLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1191']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_upload_midsize_file.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_upload_midsize_file.yaml
index c72843f052f..5085add5b0a 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_upload_midsize_file.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_upload_midsize_file.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:50:08Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:50:08Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:32:16 GMT']
+ date: ['Tue, 01 May 2018 21:50:08 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,41 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:32:17 GMT']
+ date: ['Tue, 01 May 2018 21:50:12 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/61ac7975-3916-4dc7-bdc6-10e4d05d0601?monitor=true&api-version=2017-10-01']
- 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-ms-ratelimit-remaining-subscription-writes: ['1189']
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/61ac7975-3916-4dc7-bdc6-10e4d05d0601?monitor=true&api-version=2017-10-01
- response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:32:35 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/61ac7975-3916-4dc7-bdc6-10e4d05d0601?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/d2cb0d08-1dbb-463a-8515-c7c3925f6e97?monitor=true&api-version=2017-10-01']
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-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1193']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -92,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/61ac7975-3916-4dc7-bdc6-10e4d05d0601?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/d2cb0d08-1dbb-463a-8515-c7c3925f6e97?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:32:17.8634316Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:32:17.8634316Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:32:17.8165491Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:12.9813351Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:12.9813351Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:12.9031978Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:32:51 GMT']
+ date: ['Tue, 01 May 2018 21:50:29 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"Ur7LsInvxGhacID5lpL8Aje1Xsl6NNAIfo+RtPWdpeoUmiGhBGkJ9/PQt+gJPFVWHwKo+g07PFyWj6LK6iFlXQ==","permissions":"FULL"},{"keyName":"key2","value":"B7HOmVbjDvHp8TGYKUHAiN7z6Ixx7j3M4w2n915R8pRynF9JwO5U07uFi0tWDfx+Olh3YgU0Oh5tv2UY6oZqSw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"wRXnasKn+uHsAFzJlB0u452e3gzhrQgPSPautk76CDMNoCxVMDPdh9Sg9oDCQFpskuOfm61yXzsTD1GcfLU4mA==","permissions":"FULL"},{"keyName":"key2","value":"IkNMTb0ze5MM6VxN5vSlqxb4NzFLjwyUgn6VZjmTpCOoDwC/lXxIsJTH52C9kDxJxxoogWxa1r2QEergHPJ8rw==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:32:53 GMT']
+ date: ['Tue, 01 May 2018 21:50:31 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1185']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1194']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"Ur7LsInvxGhacID5lpL8Aje1Xsl6NNAIfo+RtPWdpeoUmiGhBGkJ9/PQt+gJPFVWHwKo+g07PFyWj6LK6iFlXQ==","permissions":"FULL"},{"keyName":"key2","value":"B7HOmVbjDvHp8TGYKUHAiN7z6Ixx7j3M4w2n915R8pRynF9JwO5U07uFi0tWDfx+Olh3YgU0Oh5tv2UY6oZqSw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"wRXnasKn+uHsAFzJlB0u452e3gzhrQgPSPautk76CDMNoCxVMDPdh9Sg9oDCQFpskuOfm61yXzsTD1GcfLU4mA==","permissions":"FULL"},{"keyName":"key2","value":"IkNMTb0ze5MM6VxN5vSlqxb4NzFLjwyUgn6VZjmTpCOoDwC/lXxIsJTH52C9kDxJxxoogWxa1r2QEergHPJ8rw==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:32:57 GMT']
+ date: ['Tue, 01 May 2018 21:50:32 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,45 +147,48 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1193']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:57 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:32 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:32:58 GMT']
- etag: ['"0x8D56F2AC268C0EE"']
- last-modified: ['Thu, 08 Feb 2018 19:32:58 GMT']
+ date: ['Tue, 01 May 2018 21:50:32 GMT']
+ etag: ['"0x8D5AFAD90808EA6"']
+ last-modified: ['Tue, 01 May 2018 21:50:33 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:58 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:33 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:32:58 GMT']
+ date: ['Tue, 01 May 2018 21:50:33 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-error-code: [BlobNotFound]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 404, message: The specified blob does not exist.}
- request:
body: '!!! The request body has been omitted from the recording because its size
@@ -215,31 +196,33 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['4194304']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-type: [BlockBlob]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:58 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:50:33 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
body: {string: ''}
headers:
content-md5: [tc+p1sj+vWGPkawoQ9UKHA==]
- date: ['Thu, 08 Feb 2018 19:32:59 GMT']
- etag: ['"0x8D56F2AC2F8A79D"']
- last-modified: ['Thu, 08 Feb 2018 19:32:59 GMT']
+ date: ['Tue, 01 May 2018 21:50:35 GMT']
+ etag: ['"0x8D5AFAD91EC6872"']
+ last-modified: ['Tue, 01 May 2018 21:50:35 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:35 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -249,47 +232,51 @@ interactions:
content-length: ['4194304']
content-md5: [tc+p1sj+vWGPkawoQ9UKHA==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:32:58 GMT']
- etag: ['"0x8D56F2AC2F8A79D"']
- last-modified: ['Thu, 08 Feb 2018 19:32:59 GMT']
+ date: ['Tue, 01 May 2018 21:50:35 GMT']
+ etag: ['"0x8D5AFAD91EC6872"']
+ last-modified: ['Tue, 01 May 2018 21:50:35 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:50:35 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:36 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000004?restype=container&comp=list&maxresults=1
response:
body: {string: "\uFEFF1blob000003Thu,\
- \ 08 Feb 2018 19:32:59 GMT0x8D56F2AC2F8A79D4194304application/octet-stream1blob000003Tue,\
+ \ 01 May 2018 21:50:35 GMTTue, 01 May 2018\
+ \ 21:50:35 GMT0x8D5AFAD91EC68724194304application/octet-streamtc+p1sj+vWGPkawoQ9UKHA==BlockBlobunlockedavailabletrue"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:32:59 GMT']
+ date: ['Tue, 01 May 2018 21:50:36 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:32:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:36 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -299,23 +286,25 @@ interactions:
content-length: ['4194304']
content-md5: [tc+p1sj+vWGPkawoQ9UKHA==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:33:00 GMT']
- etag: ['"0x8D56F2AC2F8A79D"']
- last-modified: ['Thu, 08 Feb 2018 19:32:59 GMT']
+ date: ['Tue, 01 May 2018 21:50:36 GMT']
+ etag: ['"0x8D5AFAD91EC6872"']
+ last-modified: ['Tue, 01 May 2018 21:50:35 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:50:35 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:00 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:37 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -325,45 +314,48 @@ interactions:
content-length: ['4194304']
content-md5: [tc+p1sj+vWGPkawoQ9UKHA==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:33:00 GMT']
- etag: ['"0x8D56F2AC2F8A79D"']
- last-modified: ['Thu, 08 Feb 2018 19:32:59 GMT']
+ date: ['Tue, 01 May 2018 21:50:37 GMT']
+ etag: ['"0x8D5AFAD91EC6872"']
+ last-modified: ['Tue, 01 May 2018 21:50:35 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:50:35 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-content-md5: [tc+p1sj+vWGPkawoQ9UKHA==]
x-ms-blob-content-type: [application/test-content]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:00 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:50:38 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003?comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:33:00 GMT']
- etag: ['"0x8D56F2AC3F9C77F"']
- last-modified: ['Thu, 08 Feb 2018 19:33:01 GMT']
+ date: ['Tue, 01 May 2018 21:50:38 GMT']
+ etag: ['"0x8D5AFAD93C17DFB"']
+ last-modified: ['Tue, 01 May 2018 21:50:38 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:00 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:38 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -373,23 +365,25 @@ interactions:
content-length: ['4194304']
content-md5: [tc+p1sj+vWGPkawoQ9UKHA==]
content-type: [application/test-content]
- date: ['Thu, 08 Feb 2018 19:33:00 GMT']
- etag: ['"0x8D56F2AC3F9C77F"']
- last-modified: ['Thu, 08 Feb 2018 19:33:01 GMT']
+ date: ['Tue, 01 May 2018 21:50:38 GMT']
+ etag: ['"0x8D5AFAD93C17DFB"']
+ last-modified: ['Tue, 01 May 2018 21:50:38 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:50:35 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:01 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:39 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -397,19 +391,20 @@ interactions:
\ />false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:01 GMT']
+ date: ['Tue, 01 May 2018 21:50:39 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:01 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:39 GMT']
x-ms-range: [bytes=0-33554431]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -421,25 +416,27 @@ interactions:
content-length: ['4194304']
content-range: [bytes 0-4194303/4194304]
content-type: [application/test-content]
- date: ['Thu, 08 Feb 2018 19:33:01 GMT']
- etag: ['"0x8D56F2AC3F9C77F"']
- last-modified: ['Thu, 08 Feb 2018 19:33:01 GMT']
+ date: ['Tue, 01 May 2018 21:50:39 GMT']
+ etag: ['"0x8D5AFAD93C17DFB"']
+ last-modified: ['Tue, 01 May 2018 21:50:38 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-content-md5: [tc+p1sj+vWGPkawoQ9UKHA==]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:50:35 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 206, message: Partial Content}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:02 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:50:41 GMT']
x-ms-range: [bytes=10-499]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -462,16 +459,17 @@ interactions:
content-length: ['490']
content-range: [bytes 10-499/4194304]
content-type: [application/test-content]
- date: ['Thu, 08 Feb 2018 19:33:02 GMT']
- etag: ['"0x8D56F2AC3F9C77F"']
- last-modified: ['Thu, 08 Feb 2018 19:33:01 GMT']
+ date: ['Tue, 01 May 2018 21:50:41 GMT']
+ etag: ['"0x8D5AFAD93C17DFB"']
+ last-modified: ['Tue, 01 May 2018 21:50:38 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-content-md5: [tc+p1sj+vWGPkawoQ9UKHA==]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:50:35 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 206, message: Partial Content}
- request:
body: null
@@ -483,8 +481,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -493,11 +491,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 19:33:02 GMT']
+ date: ['Tue, 01 May 2018 21:50:42 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdWN01GTjdNVkE2SEtYQTM0UkpWSUVYMzZTQVhWNEc0R01ZVnxGRjFCNUY2Q0FCQTU5Mjc5LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdFVVZXVUlTRUUyWlVQSTdQUUJPWVpFWEVYUE9GSVdJVlJQTnw3ODBEOTlGNjg5OEREQzc5LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
+ x-content-type-options: [nosniff]
x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_upload_small_file.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_upload_small_file.yaml
index 6d5b1479ca2..09bb3a15605 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_upload_small_file.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_blob_upload_small_file.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:50:42Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:50:42Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:33:04 GMT']
+ date: ['Tue, 01 May 2018 21:50:43 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 19:33:04 GMT']
+ date: ['Tue, 01 May 2018 21:50:45 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b3813c61-d24a-4a6a-b393-8ae2012c775e?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a3e66f58-ff0e-4387-9e2e-de3b957ff650?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b3813c61-d24a-4a6a-b393-8ae2012c775e?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a3e66f58-ff0e-4387-9e2e-de3b957ff650?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T19:33:05.2234370Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T19:33:05.2234370Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T19:33:05.1765750Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:45.5284344Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:50:45.5284344Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:50:45.4346559Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:33:22 GMT']
+ date: ['Tue, 01 May 2018 21:51:02 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -94,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"LA5+NYEamcl0Wtl8VJccTfEAB0aUcHoZ1nPcRr2Mu66Sudk7EYA/cvQ/T+cekNBz9zSH2GbKUDykkbpRjpLIwg==","permissions":"FULL"},{"keyName":"key2","value":"MCsIoNqh2jhX4bFJqQdNUzKXfMFP7b8F/MAr94J22axeaL2NND9Rj2MLhe6ejC3oCN2oCyllWnRMfYn62rr0KQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"2mimZZUxn/JURj3ieoLKDLHvhOqq7YF+KiSObdcWZPpq6j95Bs+4quDv2VWy+IVb2L/mydR+7GwDEAV5z5n4SA==","permissions":"FULL"},{"keyName":"key2","value":"4haHUQSrifOctcUoGTnqmHGlstV78WSzvXT/iQ2XUOj9t1SmxXFZEepiDFABNa7BgJ+fDlWeSO/QEaZKWVet6w==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:33:23 GMT']
+ date: ['Tue, 01 May 2018 21:51:03 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -112,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1193']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -124,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"LA5+NYEamcl0Wtl8VJccTfEAB0aUcHoZ1nPcRr2Mu66Sudk7EYA/cvQ/T+cekNBz9zSH2GbKUDykkbpRjpLIwg==","permissions":"FULL"},{"keyName":"key2","value":"MCsIoNqh2jhX4bFJqQdNUzKXfMFP7b8F/MAr94J22axeaL2NND9Rj2MLhe6ejC3oCN2oCyllWnRMfYn62rr0KQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"2mimZZUxn/JURj3ieoLKDLHvhOqq7YF+KiSObdcWZPpq6j95Bs+4quDv2VWy+IVb2L/mydR+7GwDEAV5z5n4SA==","permissions":"FULL"},{"keyName":"key2","value":"4haHUQSrifOctcUoGTnqmHGlstV78WSzvXT/iQ2XUOj9t1SmxXFZEepiDFABNa7BgJ+fDlWeSO/QEaZKWVet6w==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 19:33:23 GMT']
+ date: ['Tue, 01 May 2018 21:51:04 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -142,45 +147,48 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:24 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:04 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:33:24 GMT']
- etag: ['"0x8D56F2AD2618067"']
- last-modified: ['Thu, 08 Feb 2018 19:33:25 GMT']
+ date: ['Tue, 01 May 2018 21:51:04 GMT']
+ etag: ['"0x8D5AFADA3A22AA1"']
+ last-modified: ['Tue, 01 May 2018 21:51:05 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:25 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:05 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:33:24 GMT']
+ date: ['Tue, 01 May 2018 21:51:05 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-error-code: [BlobNotFound]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 404, message: The specified blob does not exist.}
- request:
body: "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
@@ -213,31 +221,33 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['1024']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-type: [BlockBlob]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:25 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:51:05 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
body: {string: ''}
headers:
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
- date: ['Thu, 08 Feb 2018 19:33:24 GMT']
- etag: ['"0x8D56F2AD2B1805D"']
- last-modified: ['Thu, 08 Feb 2018 19:33:25 GMT']
+ date: ['Tue, 01 May 2018 21:51:05 GMT']
+ etag: ['"0x8D5AFADA4139239"']
+ last-modified: ['Tue, 01 May 2018 21:51:05 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:25 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:06 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -247,47 +257,51 @@ interactions:
content-length: ['1024']
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:33:25 GMT']
- etag: ['"0x8D56F2AD2B1805D"']
- last-modified: ['Thu, 08 Feb 2018 19:33:25 GMT']
+ date: ['Tue, 01 May 2018 21:51:06 GMT']
+ etag: ['"0x8D5AFADA4139239"']
+ last-modified: ['Tue, 01 May 2018 21:51:05 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:51:05 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:25 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:06 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000004?restype=container&comp=list&maxresults=1
response:
body: {string: "\uFEFF1blob000003Thu,\
- \ 08 Feb 2018 19:33:25 GMT0x8D56F2AD2B1805D1024application/octet-stream1blob000003Tue,\
+ \ 01 May 2018 21:51:05 GMTTue, 01 May 2018\
+ \ 21:51:05 GMT0x8D5AFADA41392391024application/octet-streamDzQ7CTESaiDxM9Z8KwGKOw==BlockBlobunlockedavailabletrue"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:25 GMT']
+ date: ['Tue, 01 May 2018 21:51:06 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:07 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -297,23 +311,25 @@ interactions:
content-length: ['1024']
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- etag: ['"0x8D56F2AD2B1805D"']
- last-modified: ['Thu, 08 Feb 2018 19:33:25 GMT']
+ date: ['Tue, 01 May 2018 21:51:07 GMT']
+ etag: ['"0x8D5AFADA4139239"']
+ last-modified: ['Tue, 01 May 2018 21:51:05 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:51:05 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:07 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -323,45 +339,48 @@ interactions:
content-length: ['1024']
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- etag: ['"0x8D56F2AD2B1805D"']
- last-modified: ['Thu, 08 Feb 2018 19:33:25 GMT']
+ date: ['Tue, 01 May 2018 21:51:07 GMT']
+ etag: ['"0x8D5AFADA4139239"']
+ last-modified: ['Tue, 01 May 2018 21:51:05 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:51:05 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
x-ms-blob-content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
x-ms-blob-content-type: [application/test-content]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- x-ms-version: ['2017-07-29']
+ x-ms-date: ['Tue, 01 May 2018 21:51:07 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003?comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- etag: ['"0x8D56F2AD393A1C2"']
- last-modified: ['Thu, 08 Feb 2018 19:33:27 GMT']
+ date: ['Tue, 01 May 2018 21:51:07 GMT']
+ etag: ['"0x8D5AFADA5644442"']
+ last-modified: ['Tue, 01 May 2018 21:51:08 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:08 GMT']
+ x-ms-version: ['2017-11-09']
method: HEAD
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -371,23 +390,25 @@ interactions:
content-length: ['1024']
content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
content-type: [application/test-content]
- date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- etag: ['"0x8D56F2AD393A1C2"']
- last-modified: ['Thu, 08 Feb 2018 19:33:27 GMT']
+ date: ['Tue, 01 May 2018 21:51:08 GMT']
+ etag: ['"0x8D5AFADA5644442"']
+ last-modified: ['Tue, 01 May 2018 21:51:08 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:51:05 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:27 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:08 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -395,19 +416,20 @@ interactions:
\ />false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 19:33:27 GMT']
+ date: ['Tue, 01 May 2018 21:51:08 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:27 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:09 GMT']
x-ms-range: [bytes=0-33554431]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -444,25 +466,27 @@ interactions:
content-length: ['1024']
content-range: [bytes 0-1023/1024]
content-type: [application/test-content]
- date: ['Thu, 08 Feb 2018 19:33:26 GMT']
- etag: ['"0x8D56F2AD393A1C2"']
- last-modified: ['Thu, 08 Feb 2018 19:33:27 GMT']
+ date: ['Tue, 01 May 2018 21:51:08 GMT']
+ etag: ['"0x8D5AFADA5644442"']
+ last-modified: ['Tue, 01 May 2018 21:51:08 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:51:05 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 206, message: Partial Content}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 19:33:27 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:51:09 GMT']
x-ms-range: [bytes=10-499]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000004/blob000003
response:
@@ -485,16 +509,17 @@ interactions:
content-length: ['490']
content-range: [bytes 10-499/1024]
content-type: [application/test-content]
- date: ['Thu, 08 Feb 2018 19:33:27 GMT']
- etag: ['"0x8D56F2AD393A1C2"']
- last-modified: ['Thu, 08 Feb 2018 19:33:27 GMT']
+ date: ['Tue, 01 May 2018 21:51:09 GMT']
+ etag: ['"0x8D5AFADA5644442"']
+ last-modified: ['Tue, 01 May 2018 21:51:08 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
x-ms-blob-content-md5: [DzQ7CTESaiDxM9Z8KwGKOw==]
x-ms-blob-type: [BlockBlob]
+ x-ms-creation-time: ['Tue, 01 May 2018 21:51:05 GMT']
x-ms-lease-state: [available]
x-ms-lease-status: [unlocked]
x-ms-server-encrypted: ['true']
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 206, message: Partial Content}
- request:
body: null
@@ -506,8 +531,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -516,11 +541,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 19:33:29 GMT']
+ date: ['Tue, 01 May 2018 21:51:09 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdBVU9JSzNLUVBQM0syNEEzTVQyTkdPRVFIT1A3WEJKWlJZQ3wxNEQwNTA2NTNGMEM0QUVELVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdZS1JHUzNaUFY3UE41SUFKS0lNNUZNRzVWS0o1SjVKMkRUUXxBNEYxNDk3QkEzRkE4NDg4LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1195']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_container_acl_scenarios.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_container_acl_scenarios.yaml
index eefde60ba52..4f5f4b5b364 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_container_acl_scenarios.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_container_acl_scenarios.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:23Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:23Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:35 GMT']
+ date: ['Tue, 01 May 2018 21:45:24 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1178']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:37 GMT']
+ date: ['Tue, 01 May 2018 21:45:26 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a3ff11a2-2cbd-45c8-8170-bbe8282176fb?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/80f70c06-ac48-4d85-8e66-91f2b48f0f93?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a3ff11a2-2cbd-45c8-8170-bbe8282176fb?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/80f70c06-ac48-4d85-8e66-91f2b48f0f93?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:37.4609831Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:37.4609831Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:09:37.4141297Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:26.3557297Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:26.3557297Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:26.0744949Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:09:54 GMT']
+ date: ['Tue, 01 May 2018 21:45:42 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -94,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"SJ0uzeZHe3ZgpAaauzxRImggR4O0xMAPa/YamrQOAR0fjbg2IBE7HHyTBEVsImHZhVZZBamKATZaBVXEzTSHiA==","permissions":"FULL"},{"keyName":"key2","value":"kvVhqfMatIwS8dSQCyrewNf/8uhaLuj/jeraDJwVMJUZ3AxxZxQx/JhkDErQTydQGAeT9xrdxEiZXQzX/evOlQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"5DQL2KGZRDhCaj6aCM7nJXgWhouvokVB/HJJ8Jfqjv1eu4L49vaRPLk5v2r6ow251rrlMDsRxd127E+PtxlZOA==","permissions":"FULL"},{"keyName":"key2","value":"pngx0eu+HKX1JODUx870j4a6jc/Cy3o/LJ7GR9pS+pKJfxEqj4FZ7LwBrU8MWSlM047seum0bN4nKKJQ8xnD/A==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:09:56 GMT']
+ date: ['Tue, 01 May 2018 21:45:44 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -112,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1177']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -124,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"SJ0uzeZHe3ZgpAaauzxRImggR4O0xMAPa/YamrQOAR0fjbg2IBE7HHyTBEVsImHZhVZZBamKATZaBVXEzTSHiA==","permissions":"FULL"},{"keyName":"key2","value":"kvVhqfMatIwS8dSQCyrewNf/8uhaLuj/jeraDJwVMJUZ3AxxZxQx/JhkDErQTydQGAeT9xrdxEiZXQzX/evOlQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"5DQL2KGZRDhCaj6aCM7nJXgWhouvokVB/HJJ8Jfqjv1eu4L49vaRPLk5v2r6ow251rrlMDsRxd127E+PtxlZOA==","permissions":"FULL"},{"keyName":"key2","value":"pngx0eu+HKX1JODUx870j4a6jc/Cy3o/LJ7GR9pS+pKJfxEqj4FZ7LwBrU8MWSlM047seum0bN4nKKJQ8xnD/A==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:09:57 GMT']
+ date: ['Tue, 01 May 2018 21:45:45 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -142,35 +147,38 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1189']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:57 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:45 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:09:57 GMT']
- etag: ['"0x8D56F1F29E8BE16"']
- last-modified: ['Thu, 08 Feb 2018 18:09:58 GMT']
+ date: ['Tue, 01 May 2018 21:45:45 GMT']
+ etag: ['"0x8D5AFACE55529E7"']
+ last-modified: ['Tue, 01 May 2018 21:45:45 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 201, message: Created}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:46 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
@@ -178,20 +186,21 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- etag: ['"0x8D56F1F29E8BE16"']
- last-modified: ['Thu, 08 Feb 2018 18:09:58 GMT']
+ date: ['Tue, 01 May 2018 21:45:46 GMT']
+ etag: ['"0x8D5AFACE55529E7"']
+ last-modified: ['Tue, 01 May 2018 21:45:45 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:46 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
@@ -199,12 +208,12 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- etag: ['"0x8D56F1F29E8BE16"']
- last-modified: ['Thu, 08 Feb 2018 18:09:58 GMT']
+ date: ['Tue, 01 May 2018 21:45:45 GMT']
+ etag: ['"0x8D5AFACE55529E7"']
+ last-modified: ['Tue, 01 May 2018 21:45:45 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -213,40 +222,42 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['184']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:46 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- etag: ['"0x8D56F1F2A469256"']
- last-modified: ['Thu, 08 Feb 2018 18:09:58 GMT']
+ date: ['Tue, 01 May 2018 21:45:45 GMT']
+ etag: ['"0x8D5AFACE5C4F7B7"']
+ last-modified: ['Tue, 01 May 2018 21:45:46 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:46 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1l"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- etag: ['"0x8D56F1F2A469256"']
- last-modified: ['Thu, 08 Feb 2018 18:09:58 GMT']
+ date: ['Tue, 01 May 2018 21:45:46 GMT']
+ etag: ['"0x8D5AFACE5C4F7B7"']
+ last-modified: ['Tue, 01 May 2018 21:45:46 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -255,40 +266,42 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['296']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:47 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- etag: ['"0x8D56F1F2A780BD5"']
- last-modified: ['Thu, 08 Feb 2018 18:09:58 GMT']
+ date: ['Tue, 01 May 2018 21:45:46 GMT']
+ etag: ['"0x8D5AFACE5FE617E"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:47 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Z"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- etag: ['"0x8D56F1F2A780BD5"']
- last-modified: ['Thu, 08 Feb 2018 18:09:58 GMT']
+ date: ['Tue, 01 May 2018 21:45:47 GMT']
+ etag: ['"0x8D5AFACE5FE617E"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -297,40 +310,42 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['413']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:47 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- etag: ['"0x8D56F1F2AA0D121"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:47 GMT']
+ etag: ['"0x8D5AFACE6327329"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:47 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Z"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- etag: ['"0x8D56F1F2AA0D121"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:47 GMT']
+ etag: ['"0x8D5AFACE6327329"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -339,140 +354,147 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['591']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:47 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- etag: ['"0x8D56F1F2AC8FA15"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:47 GMT']
+ etag: ['"0x8D5AFACE6713515"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:47 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- etag: ['"0x8D56F1F2AC8FA15"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE6713515"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:48 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- etag: ['"0x8D56F1F2AC8FA15"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE6713515"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:48 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- etag: ['"0x8D56F1F2AC8FA15"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE6713515"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:00 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- etag: ['"0x8D56F1F2AC8FA15"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE6713515"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:00 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:00 GMT']
- etag: ['"0x8D56F1F2AC8FA15"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
+ etag: ['"0x8D5AFACE6713515"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:00 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:00 GMT']
- etag: ['"0x8D56F1F2AC8FA15"']
- last-modified: ['Thu, 08 Feb 2018 18:09:59 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
+ etag: ['"0x8D5AFACE6713515"']
+ last-modified: ['Tue, 01 May 2018 21:45:47 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -481,60 +503,63 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['597']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:00 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:01 GMT']
- etag: ['"0x8D56F1F2BC2CB00"']
- last-modified: ['Thu, 08 Feb 2018 18:10:01 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
+ etag: ['"0x8D5AFACE7BF9BF0"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:01 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:50 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1rtest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:01 GMT']
- etag: ['"0x8D56F1F2BC2CB00"']
- last-modified: ['Thu, 08 Feb 2018 18:10:01 GMT']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
+ etag: ['"0x8D5AFACE7BF9BF0"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:01 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:50 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest1rtest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:00 GMT']
- etag: ['"0x8D56F1F2BC2CB00"']
- last-modified: ['Thu, 08 Feb 2018 18:10:01 GMT']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
+ etag: ['"0x8D5AFACE7BF9BF0"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -543,40 +568,42 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['491']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:01 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:50 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:00 GMT']
- etag: ['"0x8D56F1F2C1343FC"']
- last-modified: ['Thu, 08 Feb 2018 18:10:01 GMT']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
+ etag: ['"0x8D5AFACE83D1FCD"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:01 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:51 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/cont000003?restype=container&comp=acl
response:
body: {string: "\uFEFFtest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:01 GMT']
- etag: ['"0x8D56F1F2C1343FC"']
- last-modified: ['Thu, 08 Feb 2018 18:10:01 GMT']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
+ etag: ['"0x8D5AFACE83D1FCD"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -588,8 +615,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -598,11 +625,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:03 GMT']
+ date: ['Tue, 01 May 2018 21:45:51 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdSU0NFQzc2WU5BTzJQNFVGUFRQNU1PVVVENzNJUFRVNkpZTXwxQzlEQjczNzFBRDU1ODFELVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdJNVUyRldCUFFJNktDNllPMk9EWVNHRzJaSEtEN0hURVlTQ3xDMDZDRjhCODZGRTE2QzRFLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1191']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_cors_scenario.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_cors_scenario.yaml
index 21f13f6d8ef..2ae36375192 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_cors_scenario.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_cors_scenario.yaml
@@ -1,43 +1,45 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "eastus2", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T23:41:14Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['111']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T23:41:14Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['385']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:38 GMT']
+ date: ['Tue, 01 May 2018 23:41:16 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1189']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 201, message: Created}
- request:
- body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
+ body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "eastus2",
"properties": {"supportsHttpsTrafficOnly": false}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [storage account create]
Connection: [keep-alive]
- Content-Length: ['125']
+ Content-Length: ['126']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:39 GMT']
+ date: ['Tue, 01 May 2018 23:41:17 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a6dc502e-7696-4dbe-a9ef-d0e888461326?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/eastus2/asyncoperations/0bd47cbe-aad5-4127-bd83-2d324c4114ec?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1178']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a6dc502e-7696-4dbe-a9ef-d0e888461326?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/eastus2/asyncoperations/0bd47cbe-aad5-4127-bd83-2d324c4114ec?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:57 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a6dc502e-7696-4dbe-a9ef-d0e888461326?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/a6dc502e-7696-4dbe-a9ef-d0e888461326?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:39.8672416Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:39.8672416Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:09:39.8047876Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"eastus2","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T23:41:18.5011159Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T23:41:18.5011159Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T23:41:18.4229399Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"eastus2","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
- content-length: ['1231']
+ content-length: ['1233']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:13 GMT']
+ date: ['Tue, 01 May 2018 23:41:35 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"fUCEtNowYlfvLI6DZP3F0VdcVCD3VIea0d+c5hS5REi510SubTalfMysl5BAUeOlGahl33Ic4WDJcncutDJkZA==","permissions":"FULL"},{"keyName":"key2","value":"ZNUhM80FIWzo9jyGMRKJIhUHYeWlJvqNzQN4qDDCzMzooWkhSgdOBvX2hmK2k4R0sVb4Urz6xKaX2lQAQ3OpjA==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"HU0B1htVX7z5kftKvW2TmA6EX+E2Mhl8cGPG9HK1YU+tk1GfQoXsMZ9wZjTangh0ZhBTPvIq1yp2KcHqa/g3sA==","permissions":"FULL"},{"keyName":"key2","value":"skIKw3viQeZb+jr/4GGAivbeUVu+0atWwiPCICU4TZ1Y52ScQmheJpYNQwdMHjiqm6kYm/IbjKxc/95sCWwoeA==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:16 GMT']
+ date: ['Tue, 01 May 2018 23:41:36 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"fUCEtNowYlfvLI6DZP3F0VdcVCD3VIea0d+c5hS5REi510SubTalfMysl5BAUeOlGahl33Ic4WDJcncutDJkZA==","permissions":"FULL"},{"keyName":"key2","value":"ZNUhM80FIWzo9jyGMRKJIhUHYeWlJvqNzQN4qDDCzMzooWkhSgdOBvX2hmK2k4R0sVb4Urz6xKaX2lQAQ3OpjA==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"HU0B1htVX7z5kftKvW2TmA6EX+E2Mhl8cGPG9HK1YU+tk1GfQoXsMZ9wZjTangh0ZhBTPvIq1yp2KcHqa/g3sA==","permissions":"FULL"},{"keyName":"key2","value":"skIKw3viQeZb+jr/4GGAivbeUVu+0atWwiPCICU4TZ1Y52ScQmheJpYNQwdMHjiqm6kYm/IbjKxc/95sCWwoeA==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ date: ['Tue, 01 May 2018 23:41:37 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,26 +147,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1185']
- status: {code: 200, message: OK}
-- request:
- body: null
- headers:
- Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:19 GMT']
- x-ms-version: ['2017-07-29']
- method: GET
- uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
- response:
- body: {string: "\uFEFF1.0truetruetrue71.0falsefalse"}
- headers:
- content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:19 GMT']
- server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
- transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -196,8 +156,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:38 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/?restype=service&comp=properties
@@ -206,7 +166,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ date: ['Tue, 01 May 2018 23:41:38 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -215,19 +175,19 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:38 GMT']
x-ms-version: ['2017-07-29']
method: GET
- uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
response:
- body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalse1.0truetruetrue71.0falsefalse"}
headers:
- cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
- server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:38 GMT']
+ server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
status: {code: 200, message: OK}
@@ -235,9 +195,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:20 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:39 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -245,17 +206,39 @@ interactions:
\ />false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ date: ['Tue, 01 May 2018 23:41:39 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:39 GMT']
+ x-ms-version: ['2017-11-09']
+ method: GET
+ uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ response:
+ body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalse"}
+ headers:
+ cache-control: [no-cache]
+ content-type: [application/xml]
+ date: ['Tue, 01 May 2018 23:41:39 GMT']
+ server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ transfer-encoding: [chunked]
+ x-ms-version: ['2017-11-09']
+ status: {code: 200, message: OK}
+- request:
+ body: null
+ headers:
+ Connection: [keep-alive]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:40 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
@@ -264,7 +247,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ date: ['Tue, 01 May 2018 23:41:39 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -277,15 +260,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['287']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:40 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ date: ['Tue, 01 May 2018 23:41:40 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -294,21 +278,21 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:40 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
- uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalse"}
+ \ />false"}
headers:
- cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
- server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:40 GMT']
+ server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -318,37 +302,40 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['287']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:41 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
- uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
- server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:41 GMT']
+ server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:41 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
- uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
response:
body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalsefalse"}
+ \ />"}
headers:
+ cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:41 GMT']
+ server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -358,47 +345,28 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['287']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:41 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
- uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:42 GMT']
+ server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- x-ms-version: ['2017-07-29']
- method: GET
- uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
- response:
- body: {string: "\uFEFF1.0truetruetrue71.0falsefalsePOSThttp://example.com60"}
- headers:
- content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
- transfer-encoding: [chunked]
- vary: [Origin]
- x-ms-version: ['2017-07-29']
- status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:42 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/?restype=service&comp=properties
@@ -407,7 +375,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ date: ['Tue, 01 May 2018 23:41:42 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -416,19 +384,19 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:42 GMT']
x-ms-version: ['2017-07-29']
method: GET
- uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
response:
- body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalsePOSThttp://example.com1.0truetruetrue71.0falsefalsePOSThttp://example.com60"}
headers:
- cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:42 GMT']
+ server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
vary: [Origin]
x-ms-version: ['2017-07-29']
@@ -437,9 +405,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:43 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -447,11 +416,33 @@ interactions:
\ />60false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ date: ['Tue, 01 May 2018 23:41:42 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
vary: [Origin]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
+ status: {code: 200, message: OK}
+- request:
+ body: null
+ headers:
+ Connection: [keep-alive]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:43 GMT']
+ x-ms-version: ['2017-11-09']
+ method: GET
+ uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ response:
+ body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalsePOSThttp://example.com60"}
+ headers:
+ cache-control: [no-cache]
+ content-type: [application/xml]
+ date: ['Tue, 01 May 2018 23:41:43 GMT']
+ server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ transfer-encoding: [chunked]
+ vary: [Origin]
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -460,15 +451,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['100']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:44 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ date: ['Tue, 01 May 2018 23:41:44 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -480,46 +472,28 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['100']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:44 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 23:41:44 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
- x-ms-version: ['2017-07-29']
- method: GET
- uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
- response:
- body: {string: "\uFEFF1.0truetruetrue71.0falsefalse"}
- headers:
- content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
- server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
- transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
- status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:45 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/?restype=service&comp=properties
@@ -528,7 +502,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 23:41:45 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -537,30 +511,30 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:45 GMT']
x-ms-version: ['2017-07-29']
method: GET
- uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
response:
- body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalsePOSThttp://example.com60"}
+ body: {string: "\uFEFF1.0truetruetrue71.0falsefalse"}
headers:
- cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
- server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:46 GMT']
+ server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- vary: [Origin]
x-ms-version: ['2017-07-29']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:46 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -568,10 +542,32 @@ interactions:
\ />false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 23:41:45 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
+ status: {code: 200, message: OK}
+- request:
+ body: null
+ headers:
+ Connection: [keep-alive]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:46 GMT']
+ x-ms-version: ['2017-11-09']
+ method: GET
+ uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ response:
+ body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalsePOSThttp://example.com60"}
+ headers:
+ cache-control: [no-cache]
+ content-type: [application/xml]
+ date: ['Tue, 01 May 2018 23:41:46 GMT']
+ server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ transfer-encoding: [chunked]
+ vary: [Origin]
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: '
@@ -580,15 +576,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['100']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:46 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 23:41:46 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -600,18 +597,19 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['100']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:47 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
- uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
- server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:47 GMT']
+ server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
- request:
body: '
@@ -620,46 +618,28 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['100']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:47 GMT']
+ x-ms-version: ['2017-11-09']
method: PUT
- uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
- server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:48 GMT']
+ server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
- x-ms-version: ['2017-07-29']
- method: GET
- uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
- response:
- body: {string: "\uFEFF1.0truetruetrue71.0falsefalse"}
- headers:
- content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
- server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
- transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
- status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:48 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/?restype=service&comp=properties
@@ -668,7 +648,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ date: ['Tue, 01 May 2018 23:41:48 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -677,19 +657,19 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:48 GMT']
x-ms-version: ['2017-07-29']
method: GET
- uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ uri: https://clitest000002.file.core.windows.net/?restype=service&comp=properties
response:
- body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalse1.0truetruetrue71.0falsefalse"}
headers:
- cache-control: [no-cache]
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
- server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ date: ['Tue, 01 May 2018 23:41:49 GMT']
+ server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
status: {code: 200, message: OK}
@@ -697,9 +677,10 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:25 GMT']
- x-ms-version: ['2017-07-29']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:49 GMT']
+ x-ms-version: ['2017-11-09']
method: GET
uri: https://clitest000002.blob.core.windows.net/?restype=service&comp=properties
response:
@@ -707,10 +688,31 @@ interactions:
\ />false"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ date: ['Tue, 01 May 2018 23:41:52 GMT']
server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-version: ['2017-07-29']
+ x-ms-version: ['2017-11-09']
+ status: {code: 200, message: OK}
+- request:
+ body: null
+ headers:
+ Connection: [keep-alive]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.2.0rc0 (Python CPython 3.6.2; Windows
+ 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 23:41:52 GMT']
+ x-ms-version: ['2017-11-09']
+ method: GET
+ uri: https://clitest000002.queue.core.windows.net/?restype=service&comp=properties
+ response:
+ body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalse"}
+ headers:
+ cache-control: [no-cache]
+ content-type: [application/xml]
+ date: ['Tue, 01 May 2018 23:41:52 GMT']
+ server: [Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0]
+ transfer-encoding: [chunked]
+ x-ms-version: ['2017-11-09']
status: {code: 200, message: OK}
- request:
body: null
@@ -722,8 +724,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -732,11 +734,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ date: ['Tue, 01 May 2018 23:41:54 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdOWDdUVURRVzJNTkVOVDZMVldKWVVQRjM2WFNCWTdIUzJCT3xENjY1ODM0ODkwMjE3NTVFLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdTQklaRUlNUE83RENONEFDNDJXTFdGWURRRjdJN0tMWUFBN3w1NUE2MUJFMDIyRDlDMzlGLUVBU1RVUzIiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czIifQ?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_create_default_sku.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_create_default_sku.yaml
index 07e62d6262a..201fb0fd303 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_create_default_sku.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_create_default_sku.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "southcentralus", "tags": {"use": "az-test"}}'
+ body: '{"location": "southcentralus", "tags": {"product": "azurecli", "cause":
+ "automation", "date": "2018-05-01T21:51:22Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['58']
+ Content-Length: ['118']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:51:22Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:15:07 GMT']
+ date: ['Tue, 01 May 2018 21:51:23 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1184']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1193']
status: {code: 201, message: Created}
- request:
body: null
@@ -35,22 +37,23 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:51:22Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:15:08 GMT']
+ date: ['Tue, 01 May 2018 21:51:23 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: '{"sku": {"name": "Standard_RAGRS"}, "kind": "Storage", "location": "southcentralus",
@@ -63,7 +66,7 @@ interactions:
Content-Length: ['135']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
@@ -73,14 +76,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:15:09 GMT']
+ date: ['Tue, 01 May 2018 21:51:24 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/6a4d5822-012b-4c17-9a8f-3fe96dc6b00f?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/2ea9ca23-94ff-470b-849f-ecad61d99f0b?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1179']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1194']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -91,17 +95,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/6a4d5822-012b-4c17-9a8f-3fe96dc6b00f?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/2ea9ca23-94ff-470b-849f-ecad61d99f0b?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:15:09.0610322Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:15:09.0610322Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:15:08.9985152Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available","secondaryLocation":"northcentralus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://cli000002-secondary.blob.core.windows.net/","queue":"https://cli000002-secondary.queue.core.windows.net/","table":"https://cli000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:51:25.4792706Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:51:25.4792706Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:51:25.4167294Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available","secondaryLocation":"northcentralus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://cli000002-secondary.blob.core.windows.net/","queue":"https://cli000002-secondary.queue.core.windows.net/","table":"https://cli000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1570']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:15:27 GMT']
+ date: ['Tue, 01 May 2018 21:51:42 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -109,6 +113,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -120,8 +125,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -130,11 +135,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:15:28 GMT']
+ date: ['Tue, 01 May 2018 21:51:44 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdLUkdEWUQ3R001TzJHUjUzM0hETlE1WVBDTTY2R1BJWFNSRHxGOEIyQjBGM0JDQzJBMDE3LVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdQRjMyTEJTM0NFUkNYWDdFQ0JNQzNCUDUzUlhOVlZVSU1QS3xFMkUwRDI5MTU2QzA0REZDLVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1179']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_file_copy_scenario.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_file_copy_scenario.yaml
index 4df92b63dcf..b828a3ebf37 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_file_copy_scenario.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_file_copy_scenario.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:26Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:26Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:38 GMT']
+ date: ['Tue, 01 May 2018 21:45:27 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1181']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:41 GMT']
+ date: ['Tue, 01 May 2018 21:45:29 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/99c50eea-5352-4c61-8ebe-eaedc669708e?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/bd2cb830-881a-4637-84c2-2e384c7ef451?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1178']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/99c50eea-5352-4c61-8ebe-eaedc669708e?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/bd2cb830-881a-4637-84c2-2e384c7ef451?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:58 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/99c50eea-5352-4c61-8ebe-eaedc669708e?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/99c50eea-5352-4c61-8ebe-eaedc669708e?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:41.2578466Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:41.2578466Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:09:41.1953447Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:29.0276324Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:29.0276324Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:28.8244943Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:15 GMT']
+ date: ['Tue, 01 May 2018 21:45:45 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"W0biWroI5505hXXb8mMTaxni5qLg1As8NFyD+i+W9xGUKLXpFtbkHXkfLBrXWcY1idHQz7S8MUqFgmziXwqvaw==","permissions":"FULL"},{"keyName":"key2","value":"7yIlMPQLXNoOdNKnWYk26GIRMYREqzuIMtg9KDGcGsYHXPBb+c7zoiiEXNI7M2d4mjkuancVJ27R9KC3X31Isw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"Fe/E096AuLFd1EMAzXijduK7WC7HM5k9eYCc7NZmuVXiKf7rFZsetSlek46eL/VTxUG8AKWswK4KJfqPTtg1Nw==","permissions":"FULL"},{"keyName":"key2","value":"1p6p85c4Jtt7vU+I4URMjrWQtY3WWDWygLomej1cm/Yj43mdfwIZAUGtgv203IDvusAHe9dvsxSwxD8fUKcS8A==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:17 GMT']
+ date: ['Tue, 01 May 2018 21:45:47 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1192']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"W0biWroI5505hXXb8mMTaxni5qLg1As8NFyD+i+W9xGUKLXpFtbkHXkfLBrXWcY1idHQz7S8MUqFgmziXwqvaw==","permissions":"FULL"},{"keyName":"key2","value":"7yIlMPQLXNoOdNKnWYk26GIRMYREqzuIMtg9KDGcGsYHXPBb+c7zoiiEXNI7M2d4mjkuancVJ27R9KC3X31Isw==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"Fe/E096AuLFd1EMAzXijduK7WC7HM5k9eYCc7NZmuVXiKf7rFZsetSlek46eL/VTxUG8AKWswK4KJfqPTtg1Nw==","permissions":"FULL"},{"keyName":"key2","value":"1p6p85c4Jtt7vU+I4URMjrWQtY3WWDWygLomej1cm/Yj43mdfwIZAUGtgv203IDvusAHe9dvsxSwxD8fUKcS8A==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:18 GMT']
+ date: ['Tue, 01 May 2018 21:45:47 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,24 +147,26 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:48 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:19 GMT']
- etag: ['"0x8D56F1F36B66BCF"']
- last-modified: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE725A5B2"']
+ last-modified: ['Tue, 01 May 2018 21:45:49 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -196,17 +176,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000004?restype=share
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:19 GMT']
- etag: ['"0x8D56F1F36EFF278"']
- last-modified: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
+ etag: ['"0x8D5AFACE7628DDA"']
+ last-modified: ['Tue, 01 May 2018 21:45:49 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -216,17 +197,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003/dir1?restype=directory
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:19 GMT']
- etag: ['"0x8D56F1F3721AC0F"']
- last-modified: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
+ etag: ['"0x8D5AFACE79417FC"']
+ last-modified: ['Tue, 01 May 2018 21:45:49 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -237,17 +219,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:49 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000004/dir2?restype=directory
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
- etag: ['"0x8D56F1F37694DBE"']
- last-modified: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
+ etag: ['"0x8D5AFACE7DACAC5"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -258,9 +241,10 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
x-ms-content-length: ['524288']
- x-ms-date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ x-ms-date: ['Tue, 01 May 2018 21:45:50 GMT']
x-ms-type: [file]
x-ms-version: ['2017-07-29']
method: PUT
@@ -268,9 +252,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- etag: ['"0x8D56F1F37C42E0F"']
- last-modified: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
+ etag: ['"0x8D5AFACE8372C55"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -282,8 +266,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['524288']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:50 GMT']
x-ms-range: [bytes=0-524287]
x-ms-version: ['2017-07-29']
x-ms-write: [update]
@@ -293,9 +278,9 @@ interactions:
body: {string: ''}
headers:
content-md5: [WQcVkAmdId1DmJZZIzi/lQ==]
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- etag: ['"0x8D56F1F37E06F86"']
- last-modified: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
+ etag: ['"0x8D5AFACE8523356"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -305,8 +290,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:51 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000003/dir1/source_file.txt
@@ -315,9 +301,9 @@ interactions:
headers:
content-length: ['524288']
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- etag: ['"0x8D56F1F37E06F86"']
- last-modified: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
+ etag: ['"0x8D5AFACE8523356"']
+ last-modified: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -328,21 +314,22 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-copy-source: ['https://clitest4cpdiwczs2jeateqh.file.core.windows.net/shares3a3ymchzo5w7kwc25n/dir1/source_file.txt']
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-copy-source: ['https://clitestmkl7mkwejyngxmxpm.file.core.windows.net/shareyna7cyahtxr2rinh26g/dir1/source_file.txt']
+ x-ms-date: ['Tue, 01 May 2018 21:45:51 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000004/dir2/destination_file.txt
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- etag: ['"0x8D56F1F38EE028A"']
- last-modified: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
+ etag: ['"0x8D5AFACE920F344"']
+ last-modified: ['Tue, 01 May 2018 21:45:52 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-copy-id: [9191a902-f4c4-4771-81c3-1ef7dfc4fecf]
+ x-ms-copy-id: [601d8f07-18e3-4b8c-b460-532a978f41e0]
x-ms-copy-status: [success]
x-ms-version: ['2017-07-29']
status: {code: 202, message: Accepted}
@@ -350,8 +337,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:52 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000004/dir2/destination_file.txt
@@ -360,14 +348,14 @@ interactions:
headers:
content-length: ['524288']
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- etag: ['"0x8D56F1F38EE028A"']
- last-modified: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
+ etag: ['"0x8D5AFACE920F344"']
+ last-modified: ['Tue, 01 May 2018 21:45:52 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
- x-ms-copy-completion-time: ['Thu, 08 Feb 2018 18:10:23 GMT']
- x-ms-copy-id: [9191a902-f4c4-4771-81c3-1ef7dfc4fecf]
+ x-ms-copy-completion-time: ['Tue, 01 May 2018 21:45:52 GMT']
+ x-ms-copy-id: [601d8f07-18e3-4b8c-b460-532a978f41e0]
x-ms-copy-progress: [524288/524288]
- x-ms-copy-source: ['https://clitest4cpdiwczs2jeateqh.file.core.windows.net/shares3a3ymchzo5w7kwc25n/dir1/source_file.txt']
+ x-ms-copy-source: ['https://clitestmkl7mkwejyngxmxpm.file.core.windows.net/shareyna7cyahtxr2rinh26g/dir1/source_file.txt']
x-ms-copy-status: [success]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -378,21 +366,22 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-copy-source: ['https://clitest4cpdiwczs2jeateqh.file.core.windows.net/shares3a3ymchzo5w7kwc25n/dir1/source_file.txt']
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-copy-source: ['https://clitestmkl7mkwejyngxmxpm.file.core.windows.net/shareyna7cyahtxr2rinh26g/dir1/source_file.txt']
+ x-ms-date: ['Tue, 01 May 2018 21:45:52 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000004/dir2/destination_file.txt
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
- etag: ['"0x8D56F1F39623D6C"']
- last-modified: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
+ etag: ['"0x8D5AFACE994FFD7"']
+ last-modified: ['Tue, 01 May 2018 21:45:53 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-copy-id: [c5902d54-4d29-4562-8164-894fdb0a8f47]
+ x-ms-copy-id: [827d179d-e3bd-4800-b313-7fb4140df5af]
x-ms-copy-status: [success]
x-ms-version: ['2017-07-29']
status: {code: 202, message: Accepted}
@@ -400,8 +389,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:53 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000004/dir2/destination_file.txt
@@ -410,14 +400,14 @@ interactions:
headers:
content-length: ['524288']
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
- etag: ['"0x8D56F1F39623D6C"']
- last-modified: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
+ etag: ['"0x8D5AFACE994FFD7"']
+ last-modified: ['Tue, 01 May 2018 21:45:53 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
- x-ms-copy-completion-time: ['Thu, 08 Feb 2018 18:10:24 GMT']
- x-ms-copy-id: [c5902d54-4d29-4562-8164-894fdb0a8f47]
+ x-ms-copy-completion-time: ['Tue, 01 May 2018 21:45:53 GMT']
+ x-ms-copy-id: [827d179d-e3bd-4800-b313-7fb4140df5af]
x-ms-copy-progress: [524288/524288]
- x-ms-copy-source: ['https://clitest4cpdiwczs2jeateqh.file.core.windows.net/shares3a3ymchzo5w7kwc25n/dir1/source_file.txt']
+ x-ms-copy-source: ['https://clitestmkl7mkwejyngxmxpm.file.core.windows.net/shareyna7cyahtxr2rinh26g/dir1/source_file.txt']
x-ms-copy-status: [success]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -428,21 +418,22 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-copy-source: ['https://clitest4cpdiwczs2jeateqh.file.core.windows.net/shares3a3ymchzo5w7kwc25n/dir1%5Csource_file.txt']
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-copy-source: ['https://clitestmkl7mkwejyngxmxpm.file.core.windows.net/shareyna7cyahtxr2rinh26g/dir1%5Csource_file.txt']
+ x-ms-date: ['Tue, 01 May 2018 21:45:53 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000004/dir2/destination_file.txt
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
- etag: ['"0x8D56F1F39BD44D6"']
- last-modified: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ date: ['Tue, 01 May 2018 21:45:53 GMT']
+ etag: ['"0x8D5AFACE9F580DF"']
+ last-modified: ['Tue, 01 May 2018 21:45:53 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
- x-ms-copy-id: [90c5d15c-c4ed-4d9a-9a8f-3f3edcf567a6]
+ x-ms-copy-id: [f684c650-cf44-4956-82ce-5db74c2bf490]
x-ms-copy-status: [success]
x-ms-version: ['2017-07-29']
status: {code: 202, message: Accepted}
@@ -456,8 +447,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -466,11 +457,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ date: ['Tue, 01 May 2018 21:45:54 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdBVzZRSFFOM1hTWE8yNU1WNENKNkxLSE9LWktKTUtSVVlIQ3w2Mzg4MzgxQUJENEE0MjgxLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdWWFpVVUkzUU5ZQjNaQUI1VklWN0E2QlhHSU1YWjRLNElaNHwwMjFGMUNBNjk4NkE2RUQ1LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1189']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_file_main_scenario.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_file_main_scenario.yaml
index 3c1dcfb8bc5..71f184bd169 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_file_main_scenario.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_file_main_scenario.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:54Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:54Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ date: ['Tue, 01 May 2018 21:45:54 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ date: ['Tue, 01 May 2018 21:45:55 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/c4539dfb-2da8-46b3-97d4-99e3936b829c?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/f3763a77-bcd8-4c3d-a7ee-d5f877796408?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1181']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,44 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/c4539dfb-2da8-46b3-97d4-99e3936b829c?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/f3763a77-bcd8-4c3d-a7ee-d5f877796408?monitor=true&api-version=2017-10-01
response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:45 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/c4539dfb-2da8-46b3-97d4-99e3936b829c?monitor=true&api-version=2017-10-01']
- 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]
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/c4539dfb-2da8-46b3-97d4-99e3936b829c?monitor=true&api-version=2017-10-01
- response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:27.8047087Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:27.8047087Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:27.7578007Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:56.3092305Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:56.3092305Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:56.1373257Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:11:02 GMT']
+ date: ['Tue, 01 May 2018 21:46:12 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"2KAvzS5kuzqep2D/vqmnQma+Uh2BYniNyaF/aHHH9mfehkvNSysCRoovtOEjCj/oN80O1QHqJcQWprZPWTFPYA==","permissions":"FULL"},{"keyName":"key2","value":"zMHodo4tnGVmUSUtJelsPikjdNVF/FajrSN1pC/DvCrkCGQC7M+Ra+5oUnxurjrQDGq581ep3UnClECLAgB5oQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"Krg2dym2VgbL8W0f3/h6/tf/fDpW8KTtXFkWoajTbzwiBXnIJ88JzZQpMPqCYArRBwkS3nY9L1qGd38HYmXVgA==","permissions":"FULL"},{"keyName":"key2","value":"tmqcWdPZpw6i9kSzsejkceWBJVBuvQ41DkojSGq8q8GO2ns2oMTIHe373wyVxydtioX1yZa3q/thL+6RnG85Ow==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:11:03 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"2KAvzS5kuzqep2D/vqmnQma+Uh2BYniNyaF/aHHH9mfehkvNSysCRoovtOEjCj/oN80O1QHqJcQWprZPWTFPYA==","permissions":"FULL"},{"keyName":"key2","value":"zMHodo4tnGVmUSUtJelsPikjdNVF/FajrSN1pC/DvCrkCGQC7M+Ra+5oUnxurjrQDGq581ep3UnClECLAgB5oQ==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"Krg2dym2VgbL8W0f3/h6/tf/fDpW8KTtXFkWoajTbzwiBXnIJ88JzZQpMPqCYArRBwkS3nY9L1qGd38HYmXVgA==","permissions":"FULL"},{"keyName":"key2","value":"tmqcWdPZpw6i9kSzsejkceWBJVBuvQ41DkojSGq8q8GO2ns2oMTIHe373wyVxydtioX1yZa3q/thL+6RnG85Ow==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:11:04 GMT']
+ date: ['Tue, 01 May 2018 21:46:15 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,24 +147,26 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:04 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:15 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:03 GMT']
- etag: ['"0x8D56F1F5193A40A"']
- last-modified: ['Thu, 08 Feb 2018 18:11:04 GMT']
+ date: ['Tue, 01 May 2018 21:46:15 GMT']
+ etag: ['"0x8D5AFACF735FDAA"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -196,8 +176,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:04 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
x-ms-meta-cat: [hat]
x-ms-meta-foo: [bar]
x-ms-version: ['2017-07-29']
@@ -206,9 +187,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:04 GMT']
- etag: ['"0x8D56F1F51CD4B42"']
- last-modified: ['Thu, 08 Feb 2018 18:11:04 GMT']
+ date: ['Tue, 01 May 2018 21:46:15 GMT']
+ etag: ['"0x8D5AFACF76CBAB9"']
+ last-modified: ['Tue, 01 May 2018 21:46:16 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -217,17 +198,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:05 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:05 GMT']
- etag: ['"0x8D56F1F5193A40A"']
- last-modified: ['Thu, 08 Feb 2018 18:11:04 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF735FDAA"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-share-quota: ['5120']
@@ -237,17 +219,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:05 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000004?restype=share&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:04 GMT']
- etag: ['"0x8D56F1F51CD4B42"']
- last-modified: ['Thu, 08 Feb 2018 18:11:04 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF76CBAB9"']
+ last-modified: ['Tue, 01 May 2018 21:46:16 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-meta-cat: [hat]
@@ -258,20 +241,21 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:05 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/?comp=list
response:
body: {string: "\uFEFFshare000004Thu,\
- \ 08 Feb 2018 18:11:04 GMT\"0x8D56F1F51CD4B42\"5120share000003Thu,\
- \ 08 Feb 2018 18:11:04 GMT\"0x8D56F1F5193A40A\"5120share000004Tue,\
+ \ 01 May 2018 21:46:16 GMT\"0x8D5AFACF76CBAB9\"5120share000003Tue,\
+ \ 01 May 2018 21:46:15 GMT\"0x8D5AFACF735FDAA\"5120"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:11:05 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -281,8 +265,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:05 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
x-ms-meta-a: [b]
x-ms-meta-c: [d]
x-ms-version: ['2017-07-29']
@@ -291,9 +276,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:05 GMT']
- etag: ['"0x8D56F1F52778D4E"']
- last-modified: ['Thu, 08 Feb 2018 18:11:06 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
+ etag: ['"0x8D5AFACF851B80F"']
+ last-modified: ['Tue, 01 May 2018 21:46:17 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -302,17 +287,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:06 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:06 GMT']
- etag: ['"0x8D56F1F52778D4E"']
- last-modified: ['Thu, 08 Feb 2018 18:11:06 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
+ etag: ['"0x8D5AFACF851B80F"']
+ last-modified: ['Tue, 01 May 2018 21:46:17 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-meta-a: [b]
@@ -324,17 +310,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:06 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:06 GMT']
- etag: ['"0x8D56F1F52D7720B"']
- last-modified: ['Thu, 08 Feb 2018 18:11:06 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF8C7EF15"']
+ last-modified: ['Tue, 01 May 2018 21:46:18 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -343,17 +330,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:06 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:06 GMT']
- etag: ['"0x8D56F1F52D7720B"']
- last-modified: ['Thu, 08 Feb 2018 18:11:06 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF8C7EF15"']
+ last-modified: ['Tue, 01 May 2018 21:46:18 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -363,8 +351,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:07 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:19 GMT']
x-ms-share-quota: ['3']
x-ms-version: ['2017-07-29']
method: PUT
@@ -372,9 +361,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:06 GMT']
- etag: ['"0x8D56F1F53313B2B"']
- last-modified: ['Thu, 08 Feb 2018 18:11:07 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF931A01C"']
+ last-modified: ['Tue, 01 May 2018 21:46:19 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -383,17 +372,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:07 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:19 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:07 GMT']
- etag: ['"0x8D56F1F53313B2B"']
- last-modified: ['Thu, 08 Feb 2018 18:11:07 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF931A01C"']
+ last-modified: ['Tue, 01 May 2018 21:46:19 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-share-quota: ['3']
@@ -404,9 +394,10 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
x-ms-content-length: ['131072']
- x-ms-date: ['Thu, 08 Feb 2018 18:11:07 GMT']
+ x-ms-date: ['Tue, 01 May 2018 21:46:19 GMT']
x-ms-type: [file]
x-ms-version: ['2017-07-29']
method: PUT
@@ -414,9 +405,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:07 GMT']
- etag: ['"0x8D56F1F53A66DAB"']
- last-modified: ['Thu, 08 Feb 2018 18:11:08 GMT']
+ date: ['Tue, 01 May 2018 21:46:19 GMT']
+ etag: ['"0x8D5AFACF9C0746C"']
+ last-modified: ['Tue, 01 May 2018 21:46:20 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -3876,8 +3867,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['131072']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:08 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:20 GMT']
x-ms-range: [bytes=0-131071]
x-ms-version: ['2017-07-29']
x-ms-write: [update]
@@ -3887,9 +3879,9 @@ interactions:
body: {string: ''}
headers:
content-md5: [DfvoqkwgtS4bi/PLbL3xkw==]
- date: ['Thu, 08 Feb 2018 18:11:08 GMT']
- etag: ['"0x8D56F1F53BF0368"']
- last-modified: ['Thu, 08 Feb 2018 18:11:08 GMT']
+ date: ['Tue, 01 May 2018 21:46:19 GMT']
+ etag: ['"0x8D5AFACF9D9F5F5"']
+ last-modified: ['Tue, 01 May 2018 21:46:20 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -3899,8 +3891,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:08 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:20 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin
@@ -3909,9 +3902,9 @@ interactions:
headers:
content-length: ['131072']
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:11:08 GMT']
- etag: ['"0x8D56F1F53BF0368"']
- last-modified: ['Thu, 08 Feb 2018 18:11:08 GMT']
+ date: ['Tue, 01 May 2018 21:46:19 GMT']
+ etag: ['"0x8D5AFACF9D9F5F5"']
+ last-modified: ['Tue, 01 May 2018 21:46:20 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -3921,8 +3914,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:08 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:20 GMT']
x-ms-range: [bytes=0-33554431]
x-ms-version: ['2017-07-29']
method: GET
@@ -7476,9 +7470,9 @@ interactions:
content-length: ['131072']
content-range: [bytes 0-131071/131072]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:11:07 GMT']
- etag: ['"0x8D56F1F53BF0368"']
- last-modified: ['Thu, 08 Feb 2018 18:11:08 GMT']
+ date: ['Tue, 01 May 2018 21:46:20 GMT']
+ etag: ['"0x8D5AFACF9D9F5F5"']
+ last-modified: ['Tue, 01 May 2018 21:46:20 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -7488,8 +7482,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:09 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:21 GMT']
x-ms-range: [bytes=0-511]
x-ms-version: ['2017-07-29']
method: GET
@@ -7514,9 +7509,9 @@ interactions:
content-length: ['512']
content-range: [bytes 0-511/131072]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:11:08 GMT']
- etag: ['"0x8D56F1F53BF0368"']
- last-modified: ['Thu, 08 Feb 2018 18:11:08 GMT']
+ date: ['Tue, 01 May 2018 21:46:20 GMT']
+ etag: ['"0x8D5AFACF9D9F5F5"']
+ last-modified: ['Tue, 01 May 2018 21:46:20 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -7527,18 +7522,19 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
x-ms-content-length: ['1234']
- x-ms-date: ['Thu, 08 Feb 2018 18:11:09 GMT']
+ x-ms-date: ['Tue, 01 May 2018 21:46:21 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin?comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:10 GMT']
- etag: ['"0x8D56F1F55577DD0"']
- last-modified: ['Thu, 08 Feb 2018 18:11:10 GMT']
+ date: ['Tue, 01 May 2018 21:46:20 GMT']
+ etag: ['"0x8D5AFACFABE720B"']
+ last-modified: ['Tue, 01 May 2018 21:46:21 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -7548,8 +7544,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:11 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:22 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin
@@ -7558,9 +7555,9 @@ interactions:
headers:
content-length: ['1234']
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:11:10 GMT']
- etag: ['"0x8D56F1F55577DD0"']
- last-modified: ['Thu, 08 Feb 2018 18:11:10 GMT']
+ date: ['Tue, 01 May 2018 21:46:21 GMT']
+ etag: ['"0x8D5AFACFABE720B"']
+ last-modified: ['Tue, 01 May 2018 21:46:21 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -7571,8 +7568,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:11 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:22 GMT']
x-ms-meta-a: [b]
x-ms-meta-c: [d]
x-ms-version: ['2017-07-29']
@@ -7581,9 +7579,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:11 GMT']
- etag: ['"0x8D56F1F55AF72CE"']
- last-modified: ['Thu, 08 Feb 2018 18:11:11 GMT']
+ date: ['Tue, 01 May 2018 21:46:22 GMT']
+ etag: ['"0x8D5AFACFB303ACC"']
+ last-modified: ['Tue, 01 May 2018 21:46:22 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -7593,17 +7591,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:11 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:22 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin?comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:11 GMT']
- etag: ['"0x8D56F1F55AF72CE"']
- last-modified: ['Thu, 08 Feb 2018 18:11:11 GMT']
+ date: ['Tue, 01 May 2018 21:46:22 GMT']
+ etag: ['"0x8D5AFACFB303ACC"']
+ last-modified: ['Tue, 01 May 2018 21:46:22 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-meta-a: [b]
@@ -7615,17 +7614,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:11 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:23 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin?comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:11 GMT']
- etag: ['"0x8D56F1F56082AF4"']
- last-modified: ['Thu, 08 Feb 2018 18:11:12 GMT']
+ date: ['Tue, 01 May 2018 21:46:22 GMT']
+ etag: ['"0x8D5AFACFB9B4B36"']
+ last-modified: ['Tue, 01 May 2018 21:46:23 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -7635,17 +7635,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:12 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:23 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin?comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:11 GMT']
- etag: ['"0x8D56F1F56082AF4"']
- last-modified: ['Thu, 08 Feb 2018 18:11:12 GMT']
+ date: ['Tue, 01 May 2018 21:46:22 GMT']
+ etag: ['"0x8D5AFACFB9B4B36"']
+ last-modified: ['Tue, 01 May 2018 21:46:23 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -7654,8 +7655,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:12 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:23 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=directory&comp=list
@@ -7666,7 +7668,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:11:11 GMT']
+ date: ['Tue, 01 May 2018 21:46:23 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -7675,8 +7677,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:12 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:24 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin
@@ -7685,9 +7688,9 @@ interactions:
headers:
content-length: ['1234']
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:11:13 GMT']
- etag: ['"0x8D56F1F56082AF4"']
- last-modified: ['Thu, 08 Feb 2018 18:11:12 GMT']
+ date: ['Tue, 01 May 2018 21:46:23 GMT']
+ etag: ['"0x8D5AFACFB9B4B36"']
+ last-modified: ['Tue, 01 May 2018 21:46:23 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['false']
x-ms-type: [File]
@@ -7698,18 +7701,19 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
x-ms-content-type: [test/type]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:13 GMT']
+ x-ms-date: ['Tue, 01 May 2018 21:46:24 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin?comp=properties
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:12 GMT']
- etag: ['"0x8D56F1F56BC0D00"']
- last-modified: ['Thu, 08 Feb 2018 18:11:13 GMT']
+ date: ['Tue, 01 May 2018 21:46:23 GMT']
+ etag: ['"0x8D5AFACFC8D3802"']
+ last-modified: ['Tue, 01 May 2018 21:46:24 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -7719,8 +7723,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:13 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:25 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin
@@ -7729,9 +7734,9 @@ interactions:
headers:
content-length: ['1234']
content-type: [test/type]
- date: ['Thu, 08 Feb 2018 18:11:13 GMT']
- etag: ['"0x8D56F1F56BC0D00"']
- last-modified: ['Thu, 08 Feb 2018 18:11:13 GMT']
+ date: ['Tue, 01 May 2018 21:46:24 GMT']
+ etag: ['"0x8D5AFACFC8D3802"']
+ last-modified: ['Tue, 01 May 2018 21:46:24 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['false']
x-ms-type: [File]
@@ -7742,15 +7747,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:13 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:25 GMT']
x-ms-version: ['2017-07-29']
method: DELETE
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:13 GMT']
+ date: ['Tue, 01 May 2018 21:46:25 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -7759,15 +7765,16 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:13 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:25 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000003/sample_file.bin
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:14 GMT']
+ date: ['Tue, 01 May 2018 21:46:25 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-error-code: [ResourceNotFound]
@@ -7778,17 +7785,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:14 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:26 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:14 GMT']
- etag: ['"0x8D56F1F576A6FC7"']
- last-modified: ['Thu, 08 Feb 2018 18:11:14 GMT']
+ date: ['Tue, 01 May 2018 21:46:26 GMT']
+ etag: ['"0x8D5AFACFD6D463D"']
+ last-modified: ['Tue, 01 May 2018 21:46:26 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -7798,8 +7806,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:14 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:26 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=directory&comp=list
@@ -7810,7 +7819,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:11:14 GMT']
+ date: ['Tue, 01 May 2018 21:46:26 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -7819,17 +7828,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:14 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:26 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:14 GMT']
- etag: ['"0x8D56F1F576A6FC7"']
- last-modified: ['Thu, 08 Feb 2018 18:11:14 GMT']
+ date: ['Tue, 01 May 2018 21:46:27 GMT']
+ etag: ['"0x8D5AFACFD6D463D"']
+ last-modified: ['Tue, 01 May 2018 21:46:26 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-server-encrypted: ['true']
@@ -7840,8 +7850,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:15 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:27 GMT']
x-ms-meta-a: [b]
x-ms-meta-c: [d]
x-ms-version: ['2017-07-29']
@@ -7850,9 +7861,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:15 GMT']
- etag: ['"0x8D56F1F57E6E38F"']
- last-modified: ['Thu, 08 Feb 2018 18:11:15 GMT']
+ date: ['Tue, 01 May 2018 21:46:26 GMT']
+ etag: ['"0x8D5AFACFE0BCF00"']
+ last-modified: ['Tue, 01 May 2018 21:46:27 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -7862,17 +7873,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:15 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:27 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:14 GMT']
- etag: ['"0x8D56F1F57E6E38F"']
- last-modified: ['Thu, 08 Feb 2018 18:11:15 GMT']
+ date: ['Tue, 01 May 2018 21:46:27 GMT']
+ etag: ['"0x8D5AFACFE0BCF00"']
+ last-modified: ['Tue, 01 May 2018 21:46:27 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-meta-a: [b]
@@ -7883,17 +7895,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:15 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:27 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:15 GMT']
- etag: ['"0x8D56F1F57E6E38F"']
- last-modified: ['Thu, 08 Feb 2018 18:11:15 GMT']
+ date: ['Tue, 01 May 2018 21:46:27 GMT']
+ etag: ['"0x8D5AFACFE0BCF00"']
+ last-modified: ['Tue, 01 May 2018 21:46:27 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-meta-a: [b]
@@ -7906,17 +7919,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:15 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:28 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:15 GMT']
- etag: ['"0x8D56F1F5862E20C"']
- last-modified: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ date: ['Tue, 01 May 2018 21:46:27 GMT']
+ etag: ['"0x8D5AFACFEB5A51F"']
+ last-modified: ['Tue, 01 May 2018 21:46:28 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -7926,17 +7940,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:28 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:15 GMT']
- etag: ['"0x8D56F1F5862E20C"']
- last-modified: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ date: ['Tue, 01 May 2018 21:46:28 GMT']
+ etag: ['"0x8D5AFACFEB5A51F"']
+ last-modified: ['Tue, 01 May 2018 21:46:28 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -7946,9 +7961,10 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
x-ms-content-length: ['65536']
- x-ms-date: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ x-ms-date: ['Tue, 01 May 2018 21:46:29 GMT']
x-ms-type: [file]
x-ms-version: ['2017-07-29']
method: PUT
@@ -7956,9 +7972,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:15 GMT']
- etag: ['"0x8D56F1F58BEF659"']
- last-modified: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ date: ['Tue, 01 May 2018 21:46:29 GMT']
+ etag: ['"0x8D5AFACFF2CC653"']
+ last-modified: ['Tue, 01 May 2018 21:46:29 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -9693,8 +9709,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['65536']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:29 GMT']
x-ms-range: [bytes=0-65535]
x-ms-version: ['2017-07-29']
x-ms-write: [update]
@@ -9704,9 +9721,9 @@ interactions:
body: {string: ''}
headers:
content-md5: [/Na8tWwWifzvKLV8IkdbrQ==]
- date: ['Thu, 08 Feb 2018 18:11:15 GMT']
- etag: ['"0x8D56F1F58CD9F2C"']
- last-modified: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ date: ['Tue, 01 May 2018 21:46:29 GMT']
+ etag: ['"0x8D5AFACFF4164B0"']
+ last-modified: ['Tue, 01 May 2018 21:46:29 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -9716,8 +9733,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:29 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000003/dir000005/testfile.txt
@@ -9726,9 +9744,9 @@ interactions:
headers:
content-length: ['65536']
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:11:16 GMT']
- etag: ['"0x8D56F1F58CD9F2C"']
- last-modified: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ date: ['Tue, 01 May 2018 21:46:29 GMT']
+ etag: ['"0x8D5AFACFF4164B0"']
+ last-modified: ['Tue, 01 May 2018 21:46:29 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -9738,8 +9756,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:17 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:30 GMT']
x-ms-range: [bytes=0-33554431]
x-ms-version: ['2017-07-29']
method: GET
@@ -11522,9 +11541,9 @@ interactions:
content-length: ['65536']
content-range: [bytes 0-65535/65536]
content-type: [application/octet-stream]
- date: ['Thu, 08 Feb 2018 18:11:17 GMT']
- etag: ['"0x8D56F1F58CD9F2C"']
- last-modified: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ date: ['Tue, 01 May 2018 21:46:30 GMT']
+ etag: ['"0x8D5AFACFF4164B0"']
+ last-modified: ['Tue, 01 May 2018 21:46:29 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-server-encrypted: ['true']
x-ms-type: [File]
@@ -11534,8 +11553,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:17 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:30 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory&comp=list
@@ -11546,7 +11566,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:11:16 GMT']
+ date: ['Tue, 01 May 2018 21:46:29 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -11555,8 +11575,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:17 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:30 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=stats
@@ -11564,7 +11585,7 @@ interactions:
body: {string: "\uFEFF1"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:11:17 GMT']
+ date: ['Tue, 01 May 2018 21:46:30 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -11574,15 +11595,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:18 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:31 GMT']
x-ms-version: ['2017-07-29']
method: DELETE
uri: https://clitest000002.file.core.windows.net/share000003/dir000005/testfile.txt
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:17 GMT']
+ date: ['Tue, 01 May 2018 21:46:30 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -11591,15 +11613,16 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:18 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:31 GMT']
x-ms-version: ['2017-07-29']
method: HEAD
uri: https://clitest000002.file.core.windows.net/share000003/testfile.txt
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:18 GMT']
+ date: ['Tue, 01 May 2018 21:46:31 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-error-code: [ResourceNotFound]
@@ -11610,15 +11633,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:18 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:31 GMT']
x-ms-version: ['2017-07-29']
method: DELETE
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:18 GMT']
+ date: ['Tue, 01 May 2018 21:46:31 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -11627,19 +11651,20 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:18 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:32 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/dir000005?restype=directory
response:
body: {string: "\uFEFFResourceNotFound
The\
- \ specified resource does not exist.\nRequestId:781aa763-001a-00a1-6008-a14f24000000\n\
- Time:2018-02-08T18:11:19.0039587Z"}
+ \ specified resource does not exist.\nRequestId:1e9b357f-901a-000d-3f95-e1020e000000\n\
+ Time:2018-05-01T21:46:32.5260555Z"}
headers:
content-length: ['223']
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:11:18 GMT']
+ date: ['Tue, 01 May 2018 21:46:32 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
x-ms-error-code: [ResourceNotFound]
x-ms-version: ['2017-07-29']
@@ -11649,8 +11674,9 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:19 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:32 GMT']
x-ms-meta-cat: [hat]
x-ms-meta-foo: [bar]
x-ms-version: ['2017-07-29']
@@ -11659,9 +11685,9 @@ interactions:
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:18 GMT']
- etag: ['"0x8D56F1F5A4E956B"']
- last-modified: ['Thu, 08 Feb 2018 18:11:19 GMT']
+ date: ['Tue, 01 May 2018 21:46:32 GMT']
+ etag: ['"0x8D5AFAD014837F9"']
+ last-modified: ['Tue, 01 May 2018 21:46:32 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-request-server-encrypted: ['true']
@@ -11671,17 +11697,18 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:19 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:33 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003/dir000006?restype=directory&comp=metadata
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:18 GMT']
- etag: ['"0x8D56F1F5A4E956B"']
- last-modified: ['Thu, 08 Feb 2018 18:11:19 GMT']
+ date: ['Tue, 01 May 2018 21:46:33 GMT']
+ etag: ['"0x8D5AFAD014837F9"']
+ last-modified: ['Tue, 01 May 2018 21:46:32 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-meta-cat: [hat]
@@ -11693,15 +11720,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:19 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:33 GMT']
x-ms-version: ['2017-07-29']
method: DELETE
uri: https://clitest000002.file.core.windows.net/share000003/dir000006?restype=directory
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:19 GMT']
+ date: ['Tue, 01 May 2018 21:46:33 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -11711,15 +11739,16 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:11:19 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:33 GMT']
x-ms-version: ['2017-07-29']
method: DELETE
uri: https://clitest000002.file.core.windows.net/share000003?restype=share
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:11:19 GMT']
+ date: ['Tue, 01 May 2018 21:46:33 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -11734,8 +11763,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -11744,11 +11773,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:11:20 GMT']
+ date: ['Tue, 01 May 2018 21:46:33 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdPQ0pLSk0zR0tZVFZMSlBOU1FET1lSN0ZJQVlTWVJERU1JWXxDRjgyRTAwRDkxMzRBMzMwLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkc3R1JITEpCVENPN002VlNXSklBRkdPNVBDUFBUTTVIRkY2Mnw2OEE5RjAxMjgwRjg4QzczLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1178']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_share_acl_scenarios.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_share_acl_scenarios.yaml
index 3961c7e0ae5..ab9378b455d 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_share_acl_scenarios.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_share_acl_scenarios.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:51Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:51Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:04 GMT']
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1183']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['125']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,14 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:06 GMT']
+ date: ['Tue, 01 May 2018 21:45:53 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b7b58b78-4abd-4f84-96ab-12b663cfd383?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/e7ddae0b-f4c9-4f86-b95d-6ffd48417905?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1190']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -65,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/b7b58b78-4abd-4f84-96ab-12b663cfd383?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/e7ddae0b-f4c9-4f86-b95d-6ffd48417905?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:06.9633470Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:10:06.9633470Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:10:06.8851899Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:53.6685803Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:53.6685803Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:53.5904791Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1231']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:46:10 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -83,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -94,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"aCbbyFgmI7NqwcdyfSuSWIdoxyuXUvhagv4CfnXPOG896Qkm8achaQIvLIrBDLJdG4WBs2+UKHewLM+eIn1BUg==","permissions":"FULL"},{"keyName":"key2","value":"h4GQGCe0mQwwjE9SiZQ96foFUAsl8CmY9MWBDGJlDc4OeEnsNSL3HhGCCxdTOtrYtQs1H/hk7cZuadOypdmEWA==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"QUd54/Jo5bT7xAKNnZlsCbZz0A2QWVTVVhAEu1v8LTmoinvyvTfRWuIyEI2HEO5d/Ez0LX+m5Wn7ATgkoXSa5g==","permissions":"FULL"},{"keyName":"key2","value":"DykqlYU443lHJcsyaBgq19YOwsI3jav0fWuy4mkQ+b1FM1+pWVoUe+6fMDxqWL7Ya+FrwlvgikZL5LgevJb3GA==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ date: ['Tue, 01 May 2018 21:46:11 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -112,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1176']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
@@ -124,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"aCbbyFgmI7NqwcdyfSuSWIdoxyuXUvhagv4CfnXPOG896Qkm8achaQIvLIrBDLJdG4WBs2+UKHewLM+eIn1BUg==","permissions":"FULL"},{"keyName":"key2","value":"h4GQGCe0mQwwjE9SiZQ96foFUAsl8CmY9MWBDGJlDc4OeEnsNSL3HhGCCxdTOtrYtQs1H/hk7cZuadOypdmEWA==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"QUd54/Jo5bT7xAKNnZlsCbZz0A2QWVTVVhAEu1v8LTmoinvyvTfRWuIyEI2HEO5d/Ez0LX+m5Wn7ATgkoXSa5g==","permissions":"FULL"},{"keyName":"key2","value":"DykqlYU443lHJcsyaBgq19YOwsI3jav0fWuy4mkQ+b1FM1+pWVoUe+6fMDxqWL7Ya+FrwlvgikZL5LgevJb3GA==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ date: ['Tue, 01 May 2018 21:46:12 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -142,24 +147,26 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1189']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: null
headers:
Connection: [keep-alive]
Content-Length: ['0']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:12 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:27 GMT']
- etag: ['"0x8D56F1F3BA62107"']
- last-modified: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ date: ['Tue, 01 May 2018 21:46:12 GMT']
+ etag: ['"0x8D5AFACF594FBD5"']
+ last-modified: ['Tue, 01 May 2018 21:46:13 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -168,8 +175,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:13 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -178,9 +186,9 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:27 GMT']
- etag: ['"0x8D56F1F3BA62107"']
- last-modified: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ date: ['Tue, 01 May 2018 21:46:13 GMT']
+ etag: ['"0x8D5AFACF594FBD5"']
+ last-modified: ['Tue, 01 May 2018 21:46:13 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -189,8 +197,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:13 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -199,9 +208,9 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:27 GMT']
- etag: ['"0x8D56F1F3BA62107"']
- last-modified: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ date: ['Tue, 01 May 2018 21:46:13 GMT']
+ etag: ['"0x8D5AFACF594FBD5"']
+ last-modified: ['Tue, 01 May 2018 21:46:13 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -213,17 +222,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['184']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:14 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:27 GMT']
- etag: ['"0x8D56F1F3C2BFFDE"']
- last-modified: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ date: ['Tue, 01 May 2018 21:46:13 GMT']
+ etag: ['"0x8D5AFACF615BB26"']
+ last-modified: ['Tue, 01 May 2018 21:46:14 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -232,8 +242,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:14 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -241,9 +252,9 @@ interactions:
body: {string: "\uFEFFtest1l"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:28 GMT']
- etag: ['"0x8D56F1F3C2BFFDE"']
- last-modified: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF615BB26"']
+ last-modified: ['Tue, 01 May 2018 21:46:14 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -255,17 +266,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['296']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:14 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:28 GMT']
- etag: ['"0x8D56F1F3C628616"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF67C097E"']
+ last-modified: ['Tue, 01 May 2018 21:46:14 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -274,8 +286,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:14 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -283,9 +296,9 @@ interactions:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Z"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:28 GMT']
- etag: ['"0x8D56F1F3C628616"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF67C097E"']
+ last-modified: ['Tue, 01 May 2018 21:46:14 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -297,17 +310,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['413']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:15 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:28 GMT']
- etag: ['"0x8D56F1F3C9B56CD"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF6B6FA41"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -316,8 +330,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:15 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -325,9 +340,9 @@ interactions:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Z"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:29 GMT']
- etag: ['"0x8D56F1F3C9B56CD"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF6B6FA41"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -339,17 +354,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['591']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:15 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:29 GMT']
- etag: ['"0x8D56F1F3CC864EF"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:14 GMT']
+ etag: ['"0x8D5AFACF6F76A43"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -358,8 +374,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:15 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -367,9 +384,9 @@ interactions:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:29 GMT']
- etag: ['"0x8D56F1F3CC864EF"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:15 GMT']
+ etag: ['"0x8D5AFACF6F76A43"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -378,8 +395,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -387,9 +405,9 @@ interactions:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:30 GMT']
- etag: ['"0x8D56F1F3CC864EF"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:15 GMT']
+ etag: ['"0x8D5AFACF6F76A43"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -398,8 +416,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:30 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -407,9 +426,9 @@ interactions:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:29 GMT']
- etag: ['"0x8D56F1F3CC864EF"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF6F76A43"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -418,8 +437,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:30 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:16 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -427,9 +447,9 @@ interactions:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:30 GMT']
- etag: ['"0x8D56F1F3CC864EF"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF6F76A43"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -438,8 +458,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:30 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -447,9 +468,9 @@ interactions:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:30 GMT']
- etag: ['"0x8D56F1F3CC864EF"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:16 GMT']
+ etag: ['"0x8D5AFACF6F76A43"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -458,8 +479,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:30 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -467,9 +489,9 @@ interactions:
body: {string: "\uFEFFtest1ltest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:30 GMT']
- etag: ['"0x8D56F1F3CC864EF"']
- last-modified: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
+ etag: ['"0x8D5AFACF6F76A43"']
+ last-modified: ['Tue, 01 May 2018 21:46:15 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -481,17 +503,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['597']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:31 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:30 GMT']
- etag: ['"0x8D56F1F3DD4E46E"']
- last-modified: ['Thu, 08 Feb 2018 18:10:31 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
+ etag: ['"0x8D5AFACF83C80BD"']
+ last-modified: ['Tue, 01 May 2018 21:46:17 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -500,8 +523,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:31 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:17 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -509,9 +533,9 @@ interactions:
body: {string: "\uFEFFtest1rtest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:30 GMT']
- etag: ['"0x8D56F1F3DD4E46E"']
- last-modified: ['Thu, 08 Feb 2018 18:10:31 GMT']
+ date: ['Tue, 01 May 2018 21:46:17 GMT']
+ etag: ['"0x8D5AFACF83C80BD"']
+ last-modified: ['Tue, 01 May 2018 21:46:17 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -520,8 +544,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:31 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -529,9 +554,9 @@ interactions:
body: {string: "\uFEFFtest1rtest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:31 GMT']
- etag: ['"0x8D56F1F3DD4E46E"']
- last-modified: ['Thu, 08 Feb 2018 18:10:31 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF83C80BD"']
+ last-modified: ['Tue, 01 May 2018 21:46:17 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -543,17 +568,18 @@ interactions:
headers:
Connection: [keep-alive]
Content-Length: ['491']
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:32 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
x-ms-version: ['2017-07-29']
method: PUT
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
response:
body: {string: ''}
headers:
- date: ['Thu, 08 Feb 2018 18:10:31 GMT']
- etag: ['"0x8D56F1F3E61402B"']
- last-modified: ['Thu, 08 Feb 2018 18:10:32 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF8B8A4FF"']
+ last-modified: ['Tue, 01 May 2018 21:46:18 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -562,8 +588,9 @@ interactions:
body: null
headers:
Connection: [keep-alive]
- User-Agent: [Azure-Storage/1.1.0-1.1.0 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:32 GMT']
+ User-Agent: [Azure-Storage/1.2.0rc0-1.1.0 (Python CPython 3.6.2; Windows 10)
+ AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:18 GMT']
x-ms-version: ['2017-07-29']
method: GET
uri: https://clitest000002.file.core.windows.net/share000003?restype=share&comp=acl
@@ -571,9 +598,9 @@ interactions:
body: {string: "\uFEFFtest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zrwdl"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:31 GMT']
- etag: ['"0x8D56F1F3E61402B"']
- last-modified: ['Thu, 08 Feb 2018 18:10:32 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
+ etag: ['"0x8D5AFACF8B8A4FF"']
+ last-modified: ['Tue, 01 May 2018 21:46:18 GMT']
server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-07-29']
@@ -588,8 +615,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -598,11 +625,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:32 GMT']
+ date: ['Tue, 01 May 2018 21:46:18 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdWRlFVUlJVUTJONktSSk8zUzJUQ0dBR1ZQQzNPQVhUTUtKVXwzMUJCRjg5NkY5NEFGNjQ5LVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdBTjZVVkpRVDQ2Rko0TEpPSlZDTlFaT1daVEdDQ1hJM0pOS3xDRDNCNDNDNUU5QTVCNTVCLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1191']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_table_main_scenario.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_table_main_scenario.yaml
index f211f104be5..acdd42171d5 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_table_main_scenario.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_storage_table_main_scenario.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "westus", "tags": {"use": "az-test"}}'
+ body: '{"location": "westus", "tags": {"product": "azurecli", "cause": "automation",
+ "date": "2018-05-01T21:45:28Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['50']
+ Content-Length: ['110']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"westus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:45:28Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['328']
+ content-length: ['384']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:39 GMT']
+ date: ['Tue, 01 May 2018 21:45:29 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1177']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 201, message: Created}
- request:
body: '{"sku": {"name": "Standard_RAGRS"}, "kind": "Storage", "location": "westus",
@@ -37,7 +39,7 @@ interactions:
Content-Length: ['127']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002?api-version=2017-10-01
@@ -47,41 +49,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:41 GMT']
+ date: ['Tue, 01 May 2018 21:45:31 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/3ff7d27d-7fcc-436e-9d35-d27e49f3b7dc?monitor=true&api-version=2017-10-01']
- 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-ms-ratelimit-remaining-subscription-writes: ['1190']
- status: {code: 202, message: Accepted}
-- request:
- body: null
- headers:
- Accept: [application/json]
- Accept-Encoding: ['gzip, deflate']
- CommandName: [storage account create]
- Connection: [keep-alive]
- Content-Type: [application/json; charset=utf-8]
- User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
- accept-language: [en-US]
- method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/3ff7d27d-7fcc-436e-9d35-d27e49f3b7dc?monitor=true&api-version=2017-10-01
- response:
- body: {string: ''}
- headers:
- cache-control: [no-cache]
- content-length: ['0']
- content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:09:59 GMT']
- expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/3ff7d27d-7fcc-436e-9d35-d27e49f3b7dc?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/79bcc310-b663-4574-b037-da4e4560bf93?monitor=true&api-version=2017-10-01']
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-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -92,17 +68,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/3ff7d27d-7fcc-436e-9d35-d27e49f3b7dc?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westus/asyncoperations/79bcc310-b663-4574-b037-da4e4560bf93?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:41.3203800Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:09:41.3203800Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:09:41.2578466Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
+ body: {string: '{"sku":{"name":"Standard_RAGRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002","name":"clitest000002","type":"Microsoft.Storage/storageAccounts","location":"westus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:31.1057749Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:45:31.1057749Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:45:30.8713726Z","primaryEndpoints":{"blob":"https://clitest000002.blob.core.windows.net/","queue":"https://clitest000002.queue.core.windows.net/","table":"https://clitest000002.table.core.windows.net/","file":"https://clitest000002.file.core.windows.net/"},"primaryLocation":"westus","statusOfPrimary":"available","secondaryLocation":"eastus","statusOfSecondary":"available","secondaryEndpoints":{"blob":"https://clitest000002-secondary.blob.core.windows.net/","queue":"https://clitest000002-secondary.queue.core.windows.net/","table":"https://clitest000002-secondary.table.core.windows.net/"}}}'}
headers:
cache-control: [no-cache]
content-length: ['1546']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:15 GMT']
+ date: ['Tue, 01 May 2018 21:45:48 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -110,6 +86,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -121,17 +98,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"gUenRqzGBNK7c9nkCXwOtvsqpb565IOCw5r/I8A4i6gdilHBL1X/7zYIAQ99L8jEHcaV0MMooN8U0e2C8byikQ==","permissions":"FULL"},{"keyName":"key2","value":"rsdSJkXe2VtbzCgncfrSovT8EHV823FHC7fCJTr3uGzTxvPc+SuO4jc2s5RS/koeniuQV0TLxiVoLlxjJpxr9A==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"Z3FEYeyIW6IQcbvStmYTdFMLV8s5CdlOSPJtcyjUcYiHUVsqFZ4vEhVc2l+gHDZ1RRmzHGJWFLzjSLx+MpTunQ==","permissions":"FULL"},{"keyName":"key2","value":"lP99LhszlGpYtEg9vFPFsTiVhY4yUzSOGR/uvL5Cy5EMBnu4Xd+EPS2PCfu4trIeppI7wWqUbSawLYjo7DhUBQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:17 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -139,7 +116,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1194']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 200, message: OK}
- request:
body: null
@@ -151,17 +129,17 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: POST
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2017-10-01
response:
- body: {string: '{"keys":[{"keyName":"key1","value":"gUenRqzGBNK7c9nkCXwOtvsqpb565IOCw5r/I8A4i6gdilHBL1X/7zYIAQ99L8jEHcaV0MMooN8U0e2C8byikQ==","permissions":"FULL"},{"keyName":"key2","value":"rsdSJkXe2VtbzCgncfrSovT8EHV823FHC7fCJTr3uGzTxvPc+SuO4jc2s5RS/koeniuQV0TLxiVoLlxjJpxr9A==","permissions":"FULL"}]}'}
+ body: {string: '{"keys":[{"keyName":"key1","value":"Z3FEYeyIW6IQcbvStmYTdFMLV8s5CdlOSPJtcyjUcYiHUVsqFZ4vEhVc2l+gHDZ1RRmzHGJWFLzjSLx+MpTunQ==","permissions":"FULL"},{"keyName":"key2","value":"lP99LhszlGpYtEg9vFPFsTiVhY4yUzSOGR/uvL5Cy5EMBnu4Xd+EPS2PCfu4trIeppI7wWqUbSawLYjo7DhUBQ==","permissions":"FULL"}]}'}
headers:
cache-control: [no-cache]
content-length: ['288']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:10:18 GMT']
+ date: ['Tue, 01 May 2018 21:45:49 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -169,7 +147,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1188']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1198']
status: {code: 200, message: OK}
- request:
body: 'b''{"TableName": "table000003"}'''
@@ -181,8 +160,8 @@ interactions:
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
Prefer: [return-no-content]
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:50 GMT']
x-ms-version: ['2017-04-17']
method: POST
uri: https://clitest000002.table.core.windows.net/Tables
@@ -191,8 +170,8 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- dataserviceid: ['https://clitestdagorqwpomx2tg7ds.table.core.windows.net/Tables(''tablegqmljj6lkxci4urehdj'')']
- date: ['Thu, 08 Feb 2018 18:10:18 GMT']
+ dataserviceid: ['https://clitestydki2n33vwyrmdoub.table.core.windows.net/Tables(''tablewtfhpnleqm5yr2w4clw'')']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
location: ['https://clitest000002.table.core.windows.net/Tables(''table000003'')']
preference-applied: [return-no-content]
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
@@ -206,8 +185,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:51 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/Tables('table000003')
@@ -216,7 +195,7 @@ interactions:
headers:
cache-control: [no-cache]
content-type: [application/json;odata=nometadata;streaming=true;charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ date: ['Tue, 01 May 2018 21:45:51 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-content-type-options: [nosniff]
@@ -229,8 +208,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:51 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/Tables
@@ -239,7 +218,7 @@ interactions:
headers:
cache-control: [no-cache]
content-type: [application/json;odata=nometadata;streaming=true;charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:19 GMT']
+ date: ['Tue, 01 May 2018 21:45:50 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-content-type-options: [nosniff]
@@ -256,8 +235,8 @@ interactions:
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
Prefer: [return-no-content]
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:52 GMT']
x-ms-version: ['2017-04-17']
method: POST
uri: https://clitest000002.table.core.windows.net/table000003
@@ -266,9 +245,9 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- dataserviceid: ['https://clitestdagorqwpomx2tg7ds.table.core.windows.net/tablegqmljj6lkxci4urehdj(PartitionKey=''001'',RowKey=''001'')']
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
- etag: [W/"datetime'2018-02-08T18%3A10%3A20.8644197Z'"]
+ dataserviceid: ['https://clitestydki2n33vwyrmdoub.table.core.windows.net/tablewtfhpnleqm5yr2w4clw(PartitionKey=''001'',RowKey=''001'')']
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
+ etag: [W/"datetime'2018-05-01T21%3A45%3A52.1464357Z'"]
location: ['https://clitest000002.table.core.windows.net/table000003(PartitionKey=''001'',RowKey=''001'')']
preference-applied: [return-no-content]
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
@@ -282,18 +261,18 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:20 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:52 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003(PartitionKey='001',RowKey='001')
response:
- body: {string: '{"odata.metadata":"https://clitest000002.table.core.windows.net/$metadata#table000003/@Element","odata.etag":"W/\"datetime''2018-02-08T18%3A10%3A20.8644197Z''\"","PartitionKey":"001","RowKey":"001","Timestamp":"2018-02-08T18:10:20.8644197Z","name":"test","value":"something"}'}
+ body: {string: '{"odata.metadata":"https://clitest000002.table.core.windows.net/$metadata#table000003/@Element","odata.etag":"W/\"datetime''2018-05-01T21%3A45%3A52.1464357Z''\"","PartitionKey":"001","RowKey":"001","Timestamp":"2018-05-01T21:45:52.1464357Z","name":"test","value":"something"}'}
headers:
cache-control: [no-cache]
content-type: [application/json;odata=minimalmetadata;streaming=true;charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
- etag: [W/"datetime'2018-02-08T18%3A10%3A20.8644197Z'"]
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
+ etag: [W/"datetime'2018-05-01T21%3A45%3A52.1464357Z'"]
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-content-type-options: [nosniff]
@@ -306,18 +285,18 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:52 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003(PartitionKey='001',RowKey='001')?%24select=name
response:
- body: {string: '{"odata.metadata":"https://clitest000002.table.core.windows.net/$metadata#table000003/@Element&$select=name","odata.etag":"W/\"datetime''2018-02-08T18%3A10%3A20.8644197Z''\"","name":"test"}'}
+ body: {string: '{"odata.metadata":"https://clitest000002.table.core.windows.net/$metadata#table000003/@Element&$select=name","odata.etag":"W/\"datetime''2018-05-01T21%3A45%3A52.1464357Z''\"","name":"test"}'}
headers:
cache-control: [no-cache]
content-type: [application/json;odata=minimalmetadata;streaming=true;charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:20 GMT']
- etag: [W/"datetime'2018-02-08T18%3A10%3A20.8644197Z'"]
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
+ etag: [W/"datetime'2018-05-01T21%3A45%3A52.1464357Z'"]
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-content-type-options: [nosniff]
@@ -333,8 +312,8 @@ interactions:
DataServiceVersion: [3.0;NetFx]
If-Match: ['*']
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:53 GMT']
x-ms-version: ['2017-04-17']
method: MERGE
uri: https://clitest000002.table.core.windows.net/table000003(PartitionKey='001',RowKey='001')
@@ -343,8 +322,8 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- etag: [W/"datetime'2018-02-08T18%3A10%3A21.8044168Z'"]
+ date: ['Tue, 01 May 2018 21:45:52 GMT']
+ etag: [W/"datetime'2018-05-01T21%3A45%3A53.2291965Z'"]
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-content-type-options: [nosniff]
x-ms-version: ['2017-04-17']
@@ -356,18 +335,18 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:53 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003(PartitionKey='001',RowKey='001')
response:
- body: {string: '{"odata.metadata":"https://clitest000002.table.core.windows.net/$metadata#table000003/@Element","odata.etag":"W/\"datetime''2018-02-08T18%3A10%3A21.8044168Z''\"","PartitionKey":"001","RowKey":"001","Timestamp":"2018-02-08T18:10:21.8044168Z","name":"test","value":"newval"}'}
+ body: {string: '{"odata.metadata":"https://clitest000002.table.core.windows.net/$metadata#table000003/@Element","odata.etag":"W/\"datetime''2018-05-01T21%3A45%3A53.2291965Z''\"","PartitionKey":"001","RowKey":"001","Timestamp":"2018-05-01T21:45:53.2291965Z","name":"test","value":"newval"}'}
headers:
cache-control: [no-cache]
content-type: [application/json;odata=minimalmetadata;streaming=true;charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- etag: [W/"datetime'2018-02-08T18%3A10%3A21.8044168Z'"]
+ date: ['Tue, 01 May 2018 21:45:53 GMT']
+ etag: [W/"datetime'2018-05-01T21%3A45%3A53.2291965Z'"]
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-content-type-options: [nosniff]
@@ -383,8 +362,8 @@ interactions:
DataServiceVersion: [3.0;NetFx]
If-Match: ['*']
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:21 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:53 GMT']
x-ms-version: ['2017-04-17']
method: PUT
uri: https://clitest000002.table.core.windows.net/table000003(PartitionKey='001',RowKey='001')
@@ -393,8 +372,8 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
- etag: [W/"datetime'2018-02-08T18%3A10%3A22.4698026Z'"]
+ date: ['Tue, 01 May 2018 21:45:53 GMT']
+ etag: [W/"datetime'2018-05-01T21%3A45%3A53.8687998Z'"]
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-content-type-options: [nosniff]
x-ms-version: ['2017-04-17']
@@ -406,18 +385,18 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:54 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003(PartitionKey='001',RowKey='001')
response:
- body: {string: '{"odata.metadata":"https://clitest000002.table.core.windows.net/$metadata#table000003/@Element","odata.etag":"W/\"datetime''2018-02-08T18%3A10%3A22.4698026Z''\"","PartitionKey":"001","RowKey":"001","Timestamp":"2018-02-08T18:10:22.4698026Z","cat":"hat"}'}
+ body: {string: '{"odata.metadata":"https://clitest000002.table.core.windows.net/$metadata#table000003/@Element","odata.etag":"W/\"datetime''2018-05-01T21%3A45%3A53.8687998Z''\"","PartitionKey":"001","RowKey":"001","Timestamp":"2018-05-01T21:45:53.8687998Z","cat":"hat"}'}
headers:
cache-control: [no-cache]
content-type: [application/json;odata=minimalmetadata;streaming=true;charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:21 GMT']
- etag: [W/"datetime'2018-02-08T18%3A10%3A22.4698026Z'"]
+ date: ['Tue, 01 May 2018 21:45:53 GMT']
+ etag: [W/"datetime'2018-05-01T21%3A45%3A53.8687998Z'"]
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-content-type-options: [nosniff]
@@ -432,8 +411,8 @@ interactions:
DataServiceVersion: [3.0;NetFx]
If-Match: ['*']
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:54 GMT']
x-ms-version: ['2017-04-17']
method: DELETE
uri: https://clitest000002.table.core.windows.net/table000003(PartitionKey='001',RowKey='001')
@@ -442,7 +421,7 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ date: ['Tue, 01 May 2018 21:45:54 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-content-type-options: [nosniff]
x-ms-version: ['2017-04-17']
@@ -454,18 +433,18 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:54 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003(PartitionKey='001',RowKey='001')
response:
body: {string: '{"odata.error":{"code":"ResourceNotFound","message":{"lang":"en-US","value":"The
- specified resource does not exist.\nRequestId:dfe796d2-0002-00f9-6f08-a1c9d2000000\nTime:2018-02-08T18:10:23.2516014Z"}}}'}
+ specified resource does not exist.\nRequestId:281b235d-b002-00dd-2595-e1beac000000\nTime:2018-05-01T21:45:54.8674700Z"}}}'}
headers:
cache-control: [no-cache]
content-type: [application/json;odata=minimalmetadata;streaming=true;charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:22 GMT']
+ date: ['Tue, 01 May 2018 21:45:53 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-content-type-options: [nosniff]
@@ -477,8 +456,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:55 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -487,7 +466,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:54 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -498,8 +477,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:55 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -508,7 +487,7 @@ interactions:
\ />"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:55 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -522,8 +501,8 @@ interactions:
Content-Length: ['184']
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:55 GMT']
x-ms-version: ['2017-04-17']
method: PUT
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -531,7 +510,7 @@ interactions:
body: {string: ''}
headers:
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:55 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-ms-version: ['2017-04-17']
status: {code: 204, message: No Content}
@@ -541,8 +520,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:55 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -550,7 +529,7 @@ interactions:
body: {string: "\uFEFFtest1a"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:55 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -564,8 +543,8 @@ interactions:
Content-Length: ['296']
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:55 GMT']
x-ms-version: ['2017-04-17']
method: PUT
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -573,7 +552,7 @@ interactions:
body: {string: ''}
headers:
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:55 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-ms-version: ['2017-04-17']
status: {code: 204, message: No Content}
@@ -583,8 +562,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:56 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -592,7 +571,7 @@ interactions:
body: {string: "\uFEFFtest1atest22016-01-01T00:00:00.0000000Z"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:55 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -606,8 +585,8 @@ interactions:
Content-Length: ['413']
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:56 GMT']
x-ms-version: ['2017-04-17']
method: PUT
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -615,7 +594,7 @@ interactions:
body: {string: ''}
headers:
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:23 GMT']
+ date: ['Tue, 01 May 2018 21:45:55 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-ms-version: ['2017-04-17']
status: {code: 204, message: No Content}
@@ -625,8 +604,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:56 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -634,7 +613,7 @@ interactions:
body: {string: "\uFEFFtest1atest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Z"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ date: ['Tue, 01 May 2018 21:45:56 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -648,8 +627,8 @@ interactions:
Content-Length: ['591']
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:56 GMT']
x-ms-version: ['2017-04-17']
method: PUT
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -657,7 +636,7 @@ interactions:
body: {string: ''}
headers:
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ date: ['Tue, 01 May 2018 21:45:56 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-ms-version: ['2017-04-17']
status: {code: 204, message: No Content}
@@ -667,8 +646,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:24 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:57 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -676,7 +655,7 @@ interactions:
body: {string: "\uFEFFtest1atest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ date: ['Tue, 01 May 2018 21:45:56 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -687,8 +666,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:57 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -696,7 +675,7 @@ interactions:
body: {string: "\uFEFFtest1atest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ date: ['Tue, 01 May 2018 21:45:56 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -707,8 +686,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:57 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -716,7 +695,7 @@ interactions:
body: {string: "\uFEFFtest1atest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ date: ['Tue, 01 May 2018 21:45:57 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -727,8 +706,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:25 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:58 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -736,7 +715,7 @@ interactions:
body: {string: "\uFEFFtest1atest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ date: ['Tue, 01 May 2018 21:45:57 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -747,8 +726,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:58 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -756,7 +735,7 @@ interactions:
body: {string: "\uFEFFtest1atest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ date: ['Tue, 01 May 2018 21:45:57 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -767,8 +746,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:58 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -776,7 +755,7 @@ interactions:
body: {string: "\uFEFFtest1atest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ date: ['Tue, 01 May 2018 21:45:58 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -790,8 +769,8 @@ interactions:
Content-Length: ['598']
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:58 GMT']
x-ms-version: ['2017-04-17']
method: PUT
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -799,7 +778,7 @@ interactions:
body: {string: ''}
headers:
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ date: ['Tue, 01 May 2018 21:45:58 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-ms-version: ['2017-04-17']
status: {code: 204, message: No Content}
@@ -809,8 +788,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:59 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -818,7 +797,7 @@ interactions:
body: {string: "\uFEFFtest1autest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:26 GMT']
+ date: ['Tue, 01 May 2018 21:45:58 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -829,8 +808,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:59 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -838,7 +817,7 @@ interactions:
body: {string: "\uFEFFtest1autest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ date: ['Tue, 01 May 2018 21:45:58 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -852,8 +831,8 @@ interactions:
Content-Length: ['491']
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:59 GMT']
x-ms-version: ['2017-04-17']
method: PUT
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -861,7 +840,7 @@ interactions:
body: {string: ''}
headers:
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ date: ['Tue, 01 May 2018 21:45:58 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-ms-version: ['2017-04-17']
status: {code: 204, message: No Content}
@@ -871,8 +850,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:45:59 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/table000003?comp=acl
@@ -880,7 +859,7 @@ interactions:
body: {string: "\uFEFFtest22016-01-01T00:00:00.0000000Ztest32018-01-01T00:00:00.0000000Ztest42016-01-01T00:00:00.0000000Z2016-05-01T00:00:00.0000000Zraud"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ date: ['Tue, 01 May 2018 21:45:59 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -893,8 +872,8 @@ interactions:
Content-Length: ['0']
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:27 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:00 GMT']
x-ms-version: ['2017-04-17']
method: DELETE
uri: https://clitest000002.table.core.windows.net/Tables('table000003')
@@ -903,7 +882,7 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ date: ['Tue, 01 May 2018 21:46:00 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
x-content-type-options: [nosniff]
x-ms-version: ['2017-04-17']
@@ -915,18 +894,18 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:00 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002.table.core.windows.net/Tables('table000003')
response:
body: {string: '{"odata.error":{"code":"ResourceNotFound","message":{"lang":"en-US","value":"The
- specified resource does not exist.\nRequestId:8a828247-0002-00fe-3808-a13f57000000\nTime:2018-02-08T18:10:28.8979906Z"}}}'}
+ specified resource does not exist.\nRequestId:a8068353-4002-00ae-0a95-e1ce6f000000\nTime:2018-05-01T21:46:00.8222096Z"}}}'}
headers:
cache-control: [no-cache]
content-type: [application/json;odata=nometadata;streaming=true;charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ date: ['Tue, 01 May 2018 21:46:00 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-content-type-options: [nosniff]
@@ -938,8 +917,8 @@ interactions:
Connection: [keep-alive]
DataServiceVersion: [3.0;NetFx]
MaxDataServiceVersion: ['3.0']
- User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.27]
- x-ms-date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ User-Agent: [Azure-CosmosDB/0.37.1 (Python CPython 3.6.2; Windows 10) AZURECLI/2.0.32]
+ x-ms-date: ['Tue, 01 May 2018 21:46:00 GMT']
x-ms-version: ['2017-04-17']
method: GET
uri: https://clitest000002-secondary.table.core.windows.net/?restype=service&comp=stats
@@ -947,7 +926,7 @@ interactions:
body: {string: "\uFEFFunavailable"}
headers:
content-type: [application/xml]
- date: ['Thu, 08 Feb 2018 18:10:28 GMT']
+ date: ['Tue, 01 May 2018 21:46:01 GMT']
server: [Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0]
transfer-encoding: [chunked]
x-ms-version: ['2017-04-17']
@@ -962,8 +941,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -972,11 +951,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:10:29 GMT']
+ date: ['Tue, 01 May 2018 21:46:01 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdTT1ZBWE42VzVPRVBXSFRHVUJOQTc2NDdDNjY1U0ZJV0dFVnw0NTE2MTkzQzY5NDVDRjFBLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdBVU5HT1JXWVBBR1VRMlVFSDc3VllFWFc3QkRNVTcyWjdWSnxDOEZGRDEyMEQyOTc4OThCLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1189']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1199']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_update_storage_account_with_assigned_identity.yaml b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_update_storage_account_with_assigned_identity.yaml
index 54254ec56e8..7b6d705f6c1 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_update_storage_account_with_assigned_identity.yaml
+++ b/src/storage-preview/azext_storage_preview/tests/latest/recordings/test_update_storage_account_with_assigned_identity.yaml
@@ -1,30 +1,32 @@
interactions:
- request:
- body: '{"location": "southcentralus", "tags": {"use": "az-test"}}'
+ body: '{"location": "southcentralus", "tags": {"product": "azurecli", "cause":
+ "automation", "date": "2018-05-01T21:51:44Z"}}'
headers:
Accept: [application/json]
Accept-Encoding: ['gzip, deflate']
CommandName: [group create]
Connection: [keep-alive]
- Content-Length: ['58']
+ Content-Length: ['118']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:51:44Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:15:30 GMT']
+ date: ['Tue, 01 May 2018 21:51:45 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1185']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1195']
status: {code: 201, message: Created}
- request:
body: null
@@ -35,22 +37,23 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
response:
- body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'}
+ body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"southcentralus","tags":{"product":"azurecli","cause":"automation","date":"2018-05-01T21:51:44Z"},"properties":{"provisioningState":"Succeeded"}}'}
headers:
cache-control: [no-cache]
- content-length: ['336']
+ content-length: ['392']
content-type: [application/json; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:15:30 GMT']
+ date: ['Tue, 01 May 2018 21:51:45 GMT']
expires: ['-1']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "kind": "Storage", "location": "southcentralus",
@@ -63,7 +66,7 @@ interactions:
Content-Length: ['133']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PUT
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
@@ -73,14 +76,15 @@ interactions:
cache-control: [no-cache]
content-length: ['0']
content-type: [text/plain; charset=utf-8]
- date: ['Thu, 08 Feb 2018 18:15:32 GMT']
+ date: ['Tue, 01 May 2018 21:51:47 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/4a467c9c-ebeb-4391-b4c5-f2b7ebfa0bfe?monitor=true&api-version=2017-10-01']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/1157a6d0-1a72-479b-bdb7-5a1b7bb482ed?monitor=true&api-version=2017-10-01']
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-ms-ratelimit-remaining-subscription-writes: ['1186']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1194']
status: {code: 202, message: Accepted}
- request:
body: null
@@ -91,17 +95,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
- uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/4a467c9c-ebeb-4391-b4c5-f2b7ebfa0bfe?monitor=true&api-version=2017-10-01
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/southcentralus/asyncoperations/1157a6d0-1a72-479b-bdb7-5a1b7bb482ed?monitor=true&api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:15:31.9838936Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:15:31.9838936Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:15:31.9214188Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:51:47.7085650Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:51:47.7085650Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:51:47.6460648Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1247']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:15:50 GMT']
+ date: ['Tue, 01 May 2018 21:52:05 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -109,6 +113,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: null
@@ -119,17 +124,17 @@ interactions:
Connection: [keep-alive]
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: GET
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:15:31.9838936Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:15:31.9838936Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:15:31.9214188Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:51:47.7085650Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:51:47.7085650Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:51:47.6460648Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1247']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:15:51 GMT']
+ date: ['Tue, 01 May 2018 21:52:06 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -137,6 +142,7 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
+ x-content-type-options: [nosniff]
status: {code: 200, message: OK}
- request:
body: '{"sku": {"name": "Standard_LRS"}, "tags": {}, "identity": {"type": "SystemAssigned"},
@@ -152,17 +158,17 @@ interactions:
Content-Length: ['366']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.27]
+ msrest_azure/0.4.25 azure-mgmt-storage/1.5.0 Azure-SDK-For-Python AZURECLI/2.0.32]
accept-language: [en-US]
method: PATCH
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002?api-version=2017-10-01
response:
- body: {string: '{"identity":{"principalId":"6a4c76ca-9f31-4cb4-9417-1a6bb8b02298","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["54826b22-38d6-4fb2-bad9-b7b93a3e9c5a"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-02-08T18:15:31.9838936Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-02-08T18:15:31.9838936Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-02-08T18:15:31.9214188Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
+ body: {string: '{"identity":{"principalId":"e4f48cdc-5905-49fd-98f5-13ef0b6cbff9","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"sku":{"name":"Standard_LRS","tier":"Standard"},"kind":"Storage","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Storage/storageAccounts/cli000002","name":"cli000002","type":"Microsoft.Storage/storageAccounts","location":"southcentralus","tags":{},"properties":{"networkAcls":{"bypass":"AzureServices","virtualNetworkRules":[],"ipRules":[],"defaultAction":"Allow"},"trustedDirectories":["72f988bf-86f1-41af-91ab-2d7cd011db47"],"supportsHttpsTrafficOnly":false,"encryption":{"services":{"file":{"enabled":true,"lastEnabledTime":"2018-05-01T21:51:47.7085650Z"},"blob":{"enabled":true,"lastEnabledTime":"2018-05-01T21:51:47.7085650Z"}},"keySource":"Microsoft.Storage"},"provisioningState":"Succeeded","creationTime":"2018-05-01T21:51:47.6460648Z","primaryEndpoints":{"blob":"https://cli000002.blob.core.windows.net/","queue":"https://cli000002.queue.core.windows.net/","table":"https://cli000002.table.core.windows.net/","file":"https://cli000002.file.core.windows.net/"},"primaryLocation":"southcentralus","statusOfPrimary":"available"}}'}
headers:
cache-control: [no-cache]
content-length: ['1387']
content-type: [application/json]
- date: ['Thu, 08 Feb 2018 18:15:54 GMT']
+ date: ['Tue, 01 May 2018 21:52:09 GMT']
expires: ['-1']
pragma: [no-cache]
server: ['Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0
@@ -170,7 +176,8 @@ interactions:
strict-transport-security: [max-age=31536000; includeSubDomains]
transfer-encoding: [chunked]
vary: [Accept-Encoding]
- x-ms-ratelimit-remaining-subscription-writes: ['1168']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1196']
status: {code: 200, message: OK}
- request:
body: null
@@ -182,8 +189,8 @@ interactions:
Content-Length: ['0']
Content-Type: [application/json; charset=utf-8]
User-Agent: [python/3.6.2 (Windows-10-10.0.16299-SP0) requests/2.18.4 msrest/0.4.26
- msrest_azure/0.4.21 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
- AZURECLI/2.0.27]
+ msrest_azure/0.4.25 resourcemanagementclient/1.2.1 Azure-SDK-For-Python
+ AZURECLI/2.0.32]
accept-language: [en-US]
method: DELETE
uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10
@@ -192,11 +199,12 @@ interactions:
headers:
cache-control: [no-cache]
content-length: ['0']
- date: ['Thu, 08 Feb 2018 18:15:56 GMT']
+ date: ['Tue, 01 May 2018 21:52:10 GMT']
expires: ['-1']
- location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdVUk9JWUpCV01MQkdZQjNHUlVMU1JETlJXT0VTSERTMkFQSXwzNzg1QjFFNjA3RTMyQTA2LVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
+ location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdDVkdPMk1FWkZVRkpHWjRFVE82R1lQNldIUks1R0RDRTZWT3wwN0RDNUFFOTU1NTdFMjRBLVNPVVRIQ0VOVFJBTFVTIiwiam9iTG9jYXRpb24iOiJzb3V0aGNlbnRyYWx1cyJ9?api-version=2017-05-10']
pragma: [no-cache]
strict-transport-security: [max-age=31536000; includeSubDomains]
- x-ms-ratelimit-remaining-subscription-writes: ['1184']
+ x-content-type-options: [nosniff]
+ x-ms-ratelimit-remaining-subscription-writes: ['1197']
status: {code: 202, message: Accepted}
version: 1
diff --git a/src/storage-preview/azext_storage_preview/tests/latest/test_storage_validators.py b/src/storage-preview/azext_storage_preview/tests/latest/test_storage_validators.py
index 1a3ebc3076d..2f119e748ca 100644
--- a/src/storage-preview/azext_storage_preview/tests/latest/test_storage_validators.py
+++ b/src/storage-preview/azext_storage_preview/tests/latest/test_storage_validators.py
@@ -11,7 +11,7 @@
from azure.cli.core._config import GLOBAL_CONFIG_DIR, ENV_VAR_PREFIX
from azure.cli.core.cloud import get_active_cloud
-from azure.cli.core.profiles import get_sdk, ResourceType, supported_api_version
+from azure.cli.core.profiles import get_sdk, ResourceType, supported_api_version, register_resource_type
from ..._validators import (get_permission_validator, get_datetime_type,
ipv4_range_type, resource_type_type, services_type,
@@ -19,6 +19,7 @@
from azure.cli.testsdk import api_version_constraint
from ..._validators import (get_source_file_or_blob_service_client, validate_encryption_source,
validate_encryption_services)
+from ...profiles import CUSTOM_DATA_STORAGE
class MockCLI(CLI):
@@ -31,10 +32,11 @@ def __init__(self):
class MockLoader(object):
def __init__(self, ctx):
self.ctx = ctx
+ register_resource_type('latest', CUSTOM_DATA_STORAGE, '2017-11-09')
def get_models(self, *attr_args, **_):
from azure.cli.core.profiles import get_sdk
- return get_sdk(self.ctx, ResourceType.DATA_STORAGE, *attr_args, mod='models')
+ return get_sdk(self.ctx, CUSTOM_DATA_STORAGE, *attr_args, mod='models')
class MockCmd(object):
@@ -43,7 +45,7 @@ def __init__(self, ctx):
self.loader = MockLoader(self.cli_ctx)
def get_models(self, *attr_args, **kwargs):
- return get_sdk(self.cli_ctx, ResourceType.DATA_STORAGE, *attr_args, **kwargs)
+ return get_sdk(self.cli_ctx, CUSTOM_DATA_STORAGE, *attr_args, **kwargs)
class TestStorageValidators(unittest.TestCase):
@@ -56,7 +58,7 @@ def tearDown(self):
self.io.close()
def test_permission_validator(self):
- t_container_permissions = get_sdk(self.cli, ResourceType.DATA_STORAGE, 'blob.models#ContainerPermissions')
+ t_container_permissions = get_sdk(self.cli, CUSTOM_DATA_STORAGE, 'blob.models#ContainerPermissions')
ns1 = Namespace(permission='rwdl')
ns2 = Namespace(permission='abc')
@@ -118,8 +120,8 @@ def test_resource_types_type(self):
def test_services_type(self):
input = "ttfqbqtf"
actual = str(services_type(self.loader)(input))
- if supported_api_version(self.cli, ResourceType.DATA_STORAGE, max_api='2016-05-31') or \
- supported_api_version(self.cli, ResourceType.DATA_STORAGE, min_api='2017-07-29'):
+ if supported_api_version(self.cli, CUSTOM_DATA_STORAGE, max_api='2016-05-31') or \
+ supported_api_version(self.cli, CUSTOM_DATA_STORAGE, min_api='2017-07-29'):
expected = "bqtf"
else:
expected = "bqf"
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/__init__.py b/src/storage-preview/azext_storage_preview/vendored_sdks/__init__.py
new file mode 100644
index 00000000000..de40ea7ca05
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/__init__.py
@@ -0,0 +1 @@
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/__init__.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/__init__.py
new file mode 100644
index 00000000000..de40ea7ca05
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/__init__.py
@@ -0,0 +1 @@
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/__init__.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/__init__.py
new file mode 100644
index 00000000000..de40ea7ca05
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/__init__.py
@@ -0,0 +1 @@
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/__init__.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/__init__.py
new file mode 100644
index 00000000000..eb3e5d0fde3
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/__init__.py
@@ -0,0 +1,31 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from .appendblobservice import AppendBlobService
+from .blockblobservice import BlockBlobService
+from .models import (
+ Container,
+ ContainerProperties,
+ Blob,
+ BlobProperties,
+ BlobBlock,
+ BlobBlockList,
+ PageRange,
+ ContentSettings,
+ CopyProperties,
+ ContainerPermissions,
+ BlobPermissions,
+ _LeaseActions,
+ AppendBlockProperties,
+ PageBlobProperties,
+ ResourceProperties,
+ Include,
+ SequenceNumberAction,
+ BlockListType,
+ PublicAccess,
+ BlobPrefix,
+ DeleteSnapshot,
+)
+from .pageblobservice import PageBlobService
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_constants.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_constants.py
new file mode 100644
index 00000000000..b1b09ba3269
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_constants.py
@@ -0,0 +1,14 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+__author__ = 'Microsoft Corp. '
+__version__ = '1.2.0rc0'
+
+# x-ms-version for storage service.
+X_MS_VERSION = '2017-11-09'
+
+# internal configurations, should not be changed
+_LARGE_BLOB_UPLOAD_MAX_READ_BUFFER_SIZE = 4 * 1024 * 1024
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_deserialization.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_deserialization.py
new file mode 100644
index 00000000000..a2f7b08e3a6
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_deserialization.py
@@ -0,0 +1,436 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from azure.common import AzureException
+from dateutil import parser
+
+try:
+ from xml.etree import cElementTree as ETree
+except ImportError:
+ from xml.etree import ElementTree as ETree
+from ..common._common_conversion import (
+ _decode_base64_to_text,
+ _to_str,
+ _get_content_md5
+)
+from ..common._deserialization import (
+ _parse_properties,
+ _to_int,
+ _parse_metadata,
+ _convert_xml_to_signed_identifiers,
+ _bool,
+)
+from .models import (
+ Container,
+ Blob,
+ BlobBlock,
+ BlobBlockList,
+ BlobBlockState,
+ BlobProperties,
+ PageRange,
+ ContainerProperties,
+ AppendBlockProperties,
+ PageBlobProperties,
+ ResourceProperties,
+ BlobPrefix,
+)
+from ._encryption import _decrypt_blob
+from ..common.models import _list
+from ..common._error import (
+ _validate_content_match,
+ _ERROR_DECRYPTION_FAILURE,
+)
+
+
+def _parse_base_properties(response):
+ '''
+ Extracts basic response headers.
+ '''
+ resource_properties = ResourceProperties()
+ resource_properties.last_modified = parser.parse(response.headers.get('last-modified'))
+ resource_properties.etag = response.headers.get('etag')
+
+ return resource_properties
+
+
+def _parse_page_properties(response):
+ '''
+ Extracts page response headers.
+ '''
+ put_page = PageBlobProperties()
+ put_page.last_modified = parser.parse(response.headers.get('last-modified'))
+ put_page.etag = response.headers.get('etag')
+ put_page.sequence_number = _to_int(response.headers.get('x-ms-blob-sequence-number'))
+
+ return put_page
+
+
+def _parse_append_block(response):
+ '''
+ Extracts append block response headers.
+ '''
+ append_block = AppendBlockProperties()
+ append_block.last_modified = parser.parse(response.headers.get('last-modified'))
+ append_block.etag = response.headers.get('etag')
+ append_block.append_offset = _to_int(response.headers.get('x-ms-blob-append-offset'))
+ append_block.committed_block_count = _to_int(response.headers.get('x-ms-blob-committed-block-count'))
+
+ return append_block
+
+
+def _parse_snapshot_blob(response, name):
+ '''
+ Extracts snapshot return header.
+ '''
+ snapshot = response.headers.get('x-ms-snapshot')
+
+ return _parse_blob(response, name, snapshot)
+
+
+def _parse_lease(response):
+ '''
+ Extracts lease time and ID return headers.
+ '''
+ lease = {'time': response.headers.get('x-ms-lease-time')}
+ if lease['time']:
+ lease['time'] = _to_int(lease['time'])
+
+ lease['id'] = response.headers.get('x-ms-lease-id')
+
+ return lease
+
+
+def _parse_blob(response, name, snapshot, validate_content=False, require_encryption=False,
+ key_encryption_key=None, key_resolver_function=None, start_offset=None, end_offset=None):
+ if response is None:
+ return None
+
+ metadata = _parse_metadata(response)
+ props = _parse_properties(response, BlobProperties)
+
+ # For range gets, only look at 'x-ms-blob-content-md5' for overall MD5
+ content_settings = getattr(props, 'content_settings')
+ if 'content-range' in response.headers:
+ if 'x-ms-blob-content-md5' in response.headers:
+ setattr(content_settings, 'content_md5', _to_str(response.headers['x-ms-blob-content-md5']))
+ else:
+ delattr(content_settings, 'content_md5')
+
+ if validate_content:
+ computed_md5 = _get_content_md5(response.body)
+ _validate_content_match(response.headers['content-md5'], computed_md5)
+
+ if key_encryption_key is not None or key_resolver_function is not None:
+ try:
+ response.body = _decrypt_blob(require_encryption, key_encryption_key, key_resolver_function,
+ response, start_offset, end_offset)
+ except:
+ raise AzureException(_ERROR_DECRYPTION_FAILURE)
+
+ return Blob(name, snapshot, response.body, props, metadata)
+
+
+def _parse_container(response, name):
+ if response is None:
+ return None
+
+ metadata = _parse_metadata(response)
+ props = _parse_properties(response, ContainerProperties)
+ return Container(name, props, metadata)
+
+
+def _convert_xml_to_signed_identifiers_and_access(response):
+ acl = _convert_xml_to_signed_identifiers(response)
+ acl.public_access = response.headers.get('x-ms-blob-public-access')
+
+ return acl
+
+
+def _convert_xml_to_containers(response):
+ '''
+
+
+ string-value
+ string-value
+ int-value
+
+
+ container-name
+
+ date/time-value
+ etag
+ locked | unlocked
+ available | leased | expired | breaking | broken
+ infinite | fixed
+ blob | container
+
+
+ value
+
+
+
+ marker-value
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ containers = _list()
+ list_element = ETree.fromstring(response.body)
+
+ # Set next marker
+ setattr(containers, 'next_marker', list_element.findtext('NextMarker'))
+
+ containers_element = list_element.find('Containers')
+
+ for container_element in containers_element.findall('Container'):
+ # Name element
+ container = Container()
+ container.name = container_element.findtext('Name')
+
+ # Metadata
+ metadata_root_element = container_element.find('Metadata')
+ if metadata_root_element is not None:
+ container.metadata = dict()
+ for metadata_element in metadata_root_element:
+ container.metadata[metadata_element.tag] = metadata_element.text
+
+ # Properties
+ properties_element = container_element.find('Properties')
+ container.properties.etag = properties_element.findtext('Etag')
+ container.properties.last_modified = parser.parse(properties_element.findtext('Last-Modified'))
+ container.properties.lease_status = properties_element.findtext('LeaseStatus')
+ container.properties.lease_state = properties_element.findtext('LeaseState')
+ container.properties.lease_duration = properties_element.findtext('LeaseDuration')
+ container.properties.public_access = properties_element.findtext('PublicAccess')
+
+ # Add container to list
+ containers.append(container)
+
+ return containers
+
+
+LIST_BLOBS_ATTRIBUTE_MAP = {
+ 'Last-Modified': (None, 'last_modified', parser.parse),
+ 'Etag': (None, 'etag', _to_str),
+ 'x-ms-blob-sequence-number': (None, 'sequence_number', _to_int),
+ 'BlobType': (None, 'blob_type', _to_str),
+ 'Content-Length': (None, 'content_length', _to_int),
+ 'ServerEncrypted': (None, 'server_encrypted', _bool),
+ 'Content-Type': ('content_settings', 'content_type', _to_str),
+ 'Content-Encoding': ('content_settings', 'content_encoding', _to_str),
+ 'Content-Disposition': ('content_settings', 'content_disposition', _to_str),
+ 'Content-Language': ('content_settings', 'content_language', _to_str),
+ 'Content-MD5': ('content_settings', 'content_md5', _to_str),
+ 'Cache-Control': ('content_settings', 'cache_control', _to_str),
+ 'LeaseStatus': ('lease', 'status', _to_str),
+ 'LeaseState': ('lease', 'state', _to_str),
+ 'LeaseDuration': ('lease', 'duration', _to_str),
+ 'CopyId': ('copy', 'id', _to_str),
+ 'CopySource': ('copy', 'source', _to_str),
+ 'CopyStatus': ('copy', 'status', _to_str),
+ 'CopyProgress': ('copy', 'progress', _to_str),
+ 'CopyCompletionTime': ('copy', 'completion_time', _to_str),
+ 'CopyStatusDescription': ('copy', 'status_description', _to_str),
+ 'AccessTier': (None, 'blob_tier', _to_str),
+ 'AccessTierChangeTime': (None, 'blob_tier_change_time', parser.parse),
+ 'AccessTierInferred': (None, 'blob_tier_inferred', _bool),
+ 'ArchiveStatus': (None, 'rehydration_status', _to_str),
+ 'DeletedTime': (None, 'deleted_time', parser.parse),
+ 'RemainingRetentionDays': (None, 'remaining_retention_days', _to_int),
+}
+
+
+def _convert_xml_to_blob_list(response):
+ '''
+
+
+ string-value
+ string-value
+ int-value
+ string-value
+
+
+ blob-name
+ true
+ date-time-value
+
+ date-time-value
+ etag
+ size-in-bytes
+ blob-content-type
+
+
+
+
+ sequence-number
+ BlockBlob|PageBlob|AppendBlob
+ locked|unlocked
+ available | leased | expired | breaking | broken
+ infinite | fixed
+ id
+ pending | success | aborted | failed
+ source url
+ bytes copied/bytes total
+ datetime
+ error string
+ P4 | P6 | P10 | P20 | P30 | P40 | P50 | P60 | Archive | Cool | Hot
+ date-time-value
+ true
+ datetime
+ int
+
+
+ value
+
+
+
+ blob-prefix
+
+
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ blob_list = _list()
+ list_element = ETree.fromstring(response.body)
+
+ setattr(blob_list, 'next_marker', list_element.findtext('NextMarker'))
+
+ blobs_element = list_element.find('Blobs')
+ blob_prefix_elements = blobs_element.findall('BlobPrefix')
+ if blob_prefix_elements is not None:
+ for blob_prefix_element in blob_prefix_elements:
+ prefix = BlobPrefix()
+ prefix.name = blob_prefix_element.findtext('Name')
+ blob_list.append(prefix)
+
+ for blob_element in blobs_element.findall('Blob'):
+ blob = Blob()
+ blob.name = blob_element.findtext('Name')
+ blob.snapshot = blob_element.findtext('Snapshot')
+
+ deleted = blob_element.findtext('Deleted')
+ if deleted:
+ blob.deleted = _bool(deleted)
+
+ # Properties
+ properties_element = blob_element.find('Properties')
+ if properties_element is not None:
+ for property_element in properties_element:
+ info = LIST_BLOBS_ATTRIBUTE_MAP.get(property_element.tag)
+ if info is None:
+ setattr(blob.properties, property_element.tag, _to_str(property_element.text))
+ elif info[0] is None:
+ setattr(blob.properties, info[1], info[2](property_element.text))
+ else:
+ attr = getattr(blob.properties, info[0])
+ setattr(attr, info[1], info[2](property_element.text))
+
+ # Metadata
+ metadata_root_element = blob_element.find('Metadata')
+ if metadata_root_element is not None:
+ blob.metadata = dict()
+ for metadata_element in metadata_root_element:
+ blob.metadata[metadata_element.tag] = metadata_element.text
+
+ # Add blob to list
+ blob_list.append(blob)
+
+ return blob_list
+
+
+def _convert_xml_to_block_list(response):
+ '''
+
+
+
+
+ base64-encoded-block-id
+ size-in-bytes
+
+
+
+
+ base64-encoded-block-id
+ size-in-bytes
+
+
+
+
+ Converts xml response to block list class.
+ '''
+ if response is None or response.body is None:
+ return None
+
+ block_list = BlobBlockList()
+
+ list_element = ETree.fromstring(response.body)
+
+ committed_blocks_element = list_element.find('CommittedBlocks')
+ if committed_blocks_element is not None:
+ for block_element in committed_blocks_element.findall('Block'):
+ block_id = _decode_base64_to_text(block_element.findtext('Name', ''))
+ block_size = int(block_element.findtext('Size'))
+ block = BlobBlock(id=block_id, state=BlobBlockState.Committed)
+ block._set_size(block_size)
+ block_list.committed_blocks.append(block)
+
+ uncommitted_blocks_element = list_element.find('UncommittedBlocks')
+ if uncommitted_blocks_element is not None:
+ for block_element in uncommitted_blocks_element.findall('Block'):
+ block_id = _decode_base64_to_text(block_element.findtext('Name', ''))
+ block_size = int(block_element.findtext('Size'))
+ block = BlobBlock(id=block_id, state=BlobBlockState.Uncommitted)
+ block._set_size(block_size)
+ block_list.uncommitted_blocks.append(block)
+
+ return block_list
+
+
+def _convert_xml_to_page_ranges(response):
+ '''
+
+
+
+ Start Byte
+ End Byte
+
+
+ Start Byte
+ End Byte
+
+
+ Start Byte
+ End Byte
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ page_list = list()
+
+ list_element = ETree.fromstring(response.body)
+
+ for page_range_element in list_element:
+ if page_range_element.tag == 'PageRange':
+ is_cleared = False
+ elif page_range_element.tag == 'ClearRange':
+ is_cleared = True
+ else:
+ pass # ignore any unrecognized Page Range types
+
+ page_list.append(
+ PageRange(
+ int(page_range_element.findtext('Start')),
+ int(page_range_element.findtext('End')),
+ is_cleared
+ )
+ )
+
+ return page_list
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_download_chunking.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_download_chunking.py
new file mode 100644
index 00000000000..067b16d0265
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_download_chunking.py
@@ -0,0 +1,127 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import threading
+
+from ..common._error import _ERROR_NO_SINGLE_THREAD_CHUNKING
+
+
+def _download_blob_chunks(blob_service, container_name, blob_name, snapshot,
+ download_size, block_size, progress, start_range, end_range,
+ stream, max_connections, progress_callback, validate_content,
+ lease_id, if_modified_since, if_unmodified_since, if_match,
+ if_none_match, timeout, operation_context):
+ if max_connections <= 1:
+ raise ValueError(_ERROR_NO_SINGLE_THREAD_CHUNKING.format('blob'))
+
+ downloader = _BlobChunkDownloader(
+ blob_service,
+ container_name,
+ blob_name,
+ snapshot,
+ download_size,
+ block_size,
+ progress,
+ start_range,
+ end_range,
+ stream,
+ progress_callback,
+ validate_content,
+ lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout,
+ operation_context,
+ )
+
+ import concurrent.futures
+ executor = concurrent.futures.ThreadPoolExecutor(max_connections)
+ result = list(executor.map(downloader.process_chunk, downloader.get_chunk_offsets()))
+
+
+class _BlobChunkDownloader(object):
+ def __init__(self, blob_service, container_name, blob_name, snapshot, download_size,
+ chunk_size, progress, start_range, end_range, stream,
+ progress_callback, validate_content, lease_id, if_modified_since,
+ if_unmodified_since, if_match, if_none_match, timeout, operation_context):
+ self.blob_service = blob_service
+ self.container_name = container_name
+ self.blob_name = blob_name
+ self.snapshot = snapshot
+ self.chunk_size = chunk_size
+
+ self.download_size = download_size
+ self.start_index = start_range
+ self.blob_end = end_range
+
+ self.stream = stream
+ self.stream_start = stream.tell()
+ self.stream_lock = threading.Lock()
+ self.progress_callback = progress_callback
+ self.progress_total = progress
+ self.progress_lock = threading.Lock()
+ self.timeout = timeout
+ self.operation_context = operation_context
+
+ self.validate_content = validate_content
+ self.lease_id = lease_id
+ self.if_modified_since = if_modified_since
+ self.if_unmodified_since = if_unmodified_since
+ self.if_match = if_match
+ self.if_none_match = if_none_match
+
+ def get_chunk_offsets(self):
+ index = self.start_index
+ while index < self.blob_end:
+ yield index
+ index += self.chunk_size
+
+ def process_chunk(self, chunk_start):
+ if chunk_start + self.chunk_size > self.blob_end:
+ chunk_end = self.blob_end
+ else:
+ chunk_end = chunk_start + self.chunk_size
+
+ chunk_data = self._download_chunk(chunk_start, chunk_end).content
+ length = chunk_end - chunk_start
+ if length > 0:
+ self._write_to_stream(chunk_data, chunk_start)
+ self._update_progress(length)
+
+ def _update_progress(self, length):
+ if self.progress_callback is not None:
+ with self.progress_lock:
+ self.progress_total += length
+ total = self.progress_total
+ self.progress_callback(total, self.download_size)
+
+ def _write_to_stream(self, chunk_data, chunk_start):
+ with self.stream_lock:
+ self.stream.seek(self.stream_start + (chunk_start - self.start_index))
+ self.stream.write(chunk_data)
+
+ def _download_chunk(self, chunk_start, chunk_end):
+ response = self.blob_service._get_blob(
+ self.container_name,
+ self.blob_name,
+ snapshot=self.snapshot,
+ start_range=chunk_start,
+ end_range=chunk_end - 1,
+ validate_content=self.validate_content,
+ lease_id=self.lease_id,
+ if_modified_since=self.if_modified_since,
+ if_unmodified_since=self.if_unmodified_since,
+ if_match=self.if_match,
+ if_none_match=self.if_none_match,
+ timeout=self.timeout,
+ _context=self.operation_context
+ )
+
+ # This makes sure that if_match is set so that we can validate
+ # that subsequent downloads are to an unmodified blob
+ self.if_match = response.properties.etag
+ return response
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_encryption.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_encryption.py
new file mode 100644
index 00000000000..f1e9b540b0b
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_encryption.py
@@ -0,0 +1,187 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+from json import (
+ dumps,
+ loads,
+)
+from os import urandom
+
+from cryptography.hazmat.primitives.padding import PKCS7
+
+from ..common._encryption import (
+ _generate_encryption_data_dict,
+ _generate_AES_CBC_cipher,
+ _dict_to_encryption_data,
+ _validate_and_unwrap_cek,
+ _EncryptionAlgorithm,
+)
+from ..common._error import (
+ _validate_not_none,
+ _validate_key_encryption_key_wrap,
+ _ERROR_DATA_NOT_ENCRYPTED,
+ _ERROR_UNSUPPORTED_ENCRYPTION_ALGORITHM,
+)
+
+
+def _encrypt_blob(blob, key_encryption_key):
+ '''
+ Encrypts the given blob using AES256 in CBC mode with 128 bit padding.
+ Wraps the generated content-encryption-key using the user-provided key-encryption-key (kek).
+ Returns a json-formatted string containing the encryption metadata. This method should
+ only be used when a blob is small enough for single shot upload. Encrypting larger blobs
+ is done as a part of the _upload_blob_chunks method.
+
+ :param bytes blob:
+ The blob to be encrypted.
+ :param object key_encryption_key:
+ The user-provided key-encryption-key. Must implement the following methods:
+ wrap_key(key)--wraps the specified key using an algorithm of the user's choice.
+ get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.
+ get_kid()--returns a string key id for this key-encryption-key.
+ :return: A tuple of json-formatted string containing the encryption metadata and the encrypted blob data.
+ :rtype: (str, bytes)
+ '''
+
+ _validate_not_none('blob', blob)
+ _validate_not_none('key_encryption_key', key_encryption_key)
+ _validate_key_encryption_key_wrap(key_encryption_key)
+
+ # AES256 uses 256 bit (32 byte) keys and always with 16 byte blocks
+ content_encryption_key = urandom(32)
+ initialization_vector = urandom(16)
+
+ cipher = _generate_AES_CBC_cipher(content_encryption_key, initialization_vector)
+
+ # PKCS7 with 16 byte blocks ensures compatibility with AES.
+ padder = PKCS7(128).padder()
+ padded_data = padder.update(blob) + padder.finalize()
+
+ # Encrypt the data.
+ encryptor = cipher.encryptor()
+ encrypted_data = encryptor.update(padded_data) + encryptor.finalize()
+ encryption_data = _generate_encryption_data_dict(key_encryption_key, content_encryption_key,
+ initialization_vector)
+ encryption_data['EncryptionMode'] = 'FullBlob'
+
+ return dumps(encryption_data), encrypted_data
+
+
+def _generate_blob_encryption_data(key_encryption_key):
+ '''
+ Generates the encryption_metadata for the blob.
+
+ :param bytes key_encryption_key:
+ The key-encryption-key used to wrap the cek associate with this blob.
+ :return: A tuple containing the cek and iv for this blob as well as the
+ serialized encryption metadata for the blob.
+ :rtype: (bytes, bytes, str)
+ '''
+ encryption_data = None
+ content_encryption_key = None
+ initialization_vector = None
+ if key_encryption_key:
+ _validate_key_encryption_key_wrap(key_encryption_key)
+ content_encryption_key = urandom(32)
+ initialization_vector = urandom(16)
+ encryption_data = _generate_encryption_data_dict(key_encryption_key,
+ content_encryption_key,
+ initialization_vector)
+ encryption_data['EncryptionMode'] = 'FullBlob'
+ encryption_data = dumps(encryption_data)
+
+ return content_encryption_key, initialization_vector, encryption_data
+
+
+def _decrypt_blob(require_encryption, key_encryption_key, key_resolver,
+ response, start_offset, end_offset):
+ '''
+ Decrypts the given blob contents and returns only the requested range.
+
+ :param bool require_encryption:
+ Whether or not the calling blob service requires objects to be decrypted.
+ :param object key_encryption_key:
+ The user-provided key-encryption-key. Must implement the following methods:
+ wrap_key(key)--wraps the specified key using an algorithm of the user's choice.
+ get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.
+ get_kid()--returns a string key id for this key-encryption-key.
+ :param key_resolver(kid):
+ The user-provided key resolver. Uses the kid string to return a key-encryption-key
+ implementing the interface defined above.
+ :return: The decrypted blob content.
+ :rtype: bytes
+ '''
+ _validate_not_none('response', response)
+ content = response.body
+ _validate_not_none('content', content)
+
+ try:
+ encryption_data = _dict_to_encryption_data(loads(response.headers['x-ms-meta-encryptiondata']))
+ except:
+ if require_encryption:
+ raise ValueError(_ERROR_DATA_NOT_ENCRYPTED)
+ else:
+ return content
+
+ if not (encryption_data.encryption_agent.encryption_algorithm == _EncryptionAlgorithm.AES_CBC_256):
+ raise ValueError(_ERROR_UNSUPPORTED_ENCRYPTION_ALGORITHM)
+
+ blob_type = response.headers['x-ms-blob-type']
+
+ iv = None
+ unpad = False
+ start_range, end_range = 0, len(content)
+ if 'content-range' in response.headers:
+ content_range = response.headers['content-range']
+ # Format: 'bytes x-y/size'
+
+ # Ignore the word 'bytes'
+ content_range = content_range.split(' ')
+
+ content_range = content_range[1].split('-')
+ start_range = int(content_range[0])
+ content_range = content_range[1].split('/')
+ end_range = int(content_range[0])
+ blob_size = int(content_range[1])
+
+ if start_offset >= 16:
+ iv = content[:16]
+ content = content[16:]
+ start_offset -= 16
+ else:
+ iv = encryption_data.content_encryption_IV
+
+ if end_range == blob_size - 1:
+ unpad = True
+ else:
+ unpad = True
+ iv = encryption_data.content_encryption_IV
+
+ if blob_type == 'PageBlob':
+ unpad = False
+
+ content_encryption_key = _validate_and_unwrap_cek(encryption_data, key_encryption_key, key_resolver)
+ cipher = _generate_AES_CBC_cipher(content_encryption_key, iv)
+ decryptor = cipher.decryptor()
+
+ content = decryptor.update(content) + decryptor.finalize()
+ if unpad:
+ unpadder = PKCS7(128).unpadder()
+ content = unpadder.update(content) + unpadder.finalize()
+
+ return content[start_offset: len(content) - end_offset]
+
+
+def _get_blob_encryptor_and_padder(cek, iv, should_pad):
+ encryptor = None
+ padder = None
+
+ if cek is not None and iv is not None:
+ cipher = _generate_AES_CBC_cipher(cek, iv)
+ encryptor = cipher.encryptor()
+ padder = PKCS7(128).padder() if should_pad else None
+
+ return encryptor, padder
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_error.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_error.py
new file mode 100644
index 00000000000..f24edc81377
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_error.py
@@ -0,0 +1,29 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+_ERROR_PAGE_BLOB_SIZE_ALIGNMENT = \
+ 'Invalid page blob size: {0}. ' + \
+ 'The size must be aligned to a 512-byte boundary.'
+
+_ERROR_PAGE_BLOB_START_ALIGNMENT = \
+ 'start_range must align with 512 page size'
+
+_ERROR_PAGE_BLOB_END_ALIGNMENT = \
+ 'end_range must align with 512 page size'
+
+_ERROR_INVALID_BLOCK_ID = \
+ 'All blocks in block list need to have valid block ids.'
+
+_ERROR_INVALID_LEASE_DURATION = \
+ "lease_duration param needs to be between 15 and 60 or -1."
+
+_ERROR_INVALID_LEASE_BREAK_PERIOD = \
+ "lease_break_period param needs to be between 0 and 60."
+
+_ERROR_NO_SINGLE_THREAD_CHUNKING = \
+ 'To use blob chunk downloader more than 1 thread must be ' + \
+ 'used since get_blob_to_bytes should be called for single threaded ' + \
+ 'blob downloads.'
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_serialization.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_serialization.py
new file mode 100644
index 00000000000..100b4089856
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_serialization.py
@@ -0,0 +1,118 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from xml.sax.saxutils import escape as xml_escape
+
+try:
+ from xml.etree import cElementTree as ETree
+except ImportError:
+ from xml.etree import ElementTree as ETree
+from ..common._common_conversion import (
+ _encode_base64,
+ _str,
+)
+from ..common._error import (
+ _validate_not_none,
+ _ERROR_START_END_NEEDED_FOR_MD5,
+ _ERROR_RANGE_TOO_LARGE_FOR_MD5,
+)
+from ._error import (
+ _ERROR_PAGE_BLOB_START_ALIGNMENT,
+ _ERROR_PAGE_BLOB_END_ALIGNMENT,
+ _ERROR_INVALID_BLOCK_ID,
+)
+from io import BytesIO
+
+
+def _get_path(container_name=None, blob_name=None):
+ '''
+ Creates the path to access a blob resource.
+
+ container_name:
+ Name of container.
+ blob_name:
+ The path to the blob.
+ '''
+ if container_name and blob_name:
+ return '/{0}/{1}'.format(
+ _str(container_name),
+ _str(blob_name))
+ elif container_name:
+ return '/{0}'.format(_str(container_name))
+ else:
+ return '/'
+
+
+def _validate_and_format_range_headers(request, start_range, end_range, start_range_required=True,
+ end_range_required=True, check_content_md5=False, align_to_page=False):
+ # If end range is provided, start range must be provided
+ if start_range_required or end_range is not None:
+ _validate_not_none('start_range', start_range)
+ if end_range_required:
+ _validate_not_none('end_range', end_range)
+
+ # Page ranges must be 512 aligned
+ if align_to_page:
+ if start_range is not None and start_range % 512 != 0:
+ raise ValueError(_ERROR_PAGE_BLOB_START_ALIGNMENT)
+ if end_range is not None and end_range % 512 != 511:
+ raise ValueError(_ERROR_PAGE_BLOB_END_ALIGNMENT)
+
+ # Format based on whether end_range is present
+ request.headers = request.headers or {}
+ if end_range is not None:
+ request.headers['x-ms-range'] = 'bytes={0}-{1}'.format(start_range, end_range)
+ elif start_range is not None:
+ request.headers['x-ms-range'] = "bytes={0}-".format(start_range)
+
+ # Content MD5 can only be provided for a complete range less than 4MB in size
+ if check_content_md5:
+ if start_range is None or end_range is None:
+ raise ValueError(_ERROR_START_END_NEEDED_FOR_MD5)
+ if end_range - start_range > 4 * 1024 * 1024:
+ raise ValueError(_ERROR_RANGE_TOO_LARGE_FOR_MD5)
+
+ request.headers['x-ms-range-get-content-md5'] = 'true'
+
+
+def _convert_block_list_to_xml(block_id_list):
+ '''
+
+
+ first-base64-encoded-block-id
+ second-base64-encoded-block-id
+ third-base64-encoded-block-id
+
+
+ Convert a block list to xml to send.
+
+ block_id_list:
+ A list of BlobBlock containing the block ids and block state that are used in put_block_list.
+ Only get block from latest blocks.
+ '''
+ if block_id_list is None:
+ return ''
+
+ block_list_element = ETree.Element('BlockList')
+
+ # Enabled
+ for block in block_id_list:
+ if block.id is None:
+ raise ValueError(_ERROR_INVALID_BLOCK_ID)
+ id = xml_escape(_str(format(_encode_base64(block.id))))
+ ETree.SubElement(block_list_element, block.state).text = id
+
+ # Add xml declaration and serialize
+ try:
+ stream = BytesIO()
+ ETree.ElementTree(block_list_element).write(stream, xml_declaration=True, encoding='utf-8', method='xml')
+ except:
+ raise
+ finally:
+ output = stream.getvalue()
+ stream.close()
+
+ # return xml value
+ return output
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_upload_chunking.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_upload_chunking.py
new file mode 100644
index 00000000000..e73388b11d9
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/_upload_chunking.py
@@ -0,0 +1,485 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from io import (BytesIO, IOBase, SEEK_CUR, SEEK_END, SEEK_SET, UnsupportedOperation)
+from math import ceil
+from threading import Lock
+
+from ..common._common_conversion import _encode_base64
+from ..common._error import _ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM
+from ..common._serialization import (
+ url_quote,
+ _get_data_bytes_only,
+ _len_plus
+)
+from ._encryption import (
+ _get_blob_encryptor_and_padder,
+)
+from .models import BlobBlock
+from ._constants import (
+ _LARGE_BLOB_UPLOAD_MAX_READ_BUFFER_SIZE
+)
+
+
+def _upload_blob_chunks(blob_service, container_name, blob_name,
+ blob_size, block_size, stream, max_connections,
+ progress_callback, validate_content, lease_id, uploader_class,
+ maxsize_condition=None, if_match=None, timeout=None,
+ content_encryption_key=None, initialization_vector=None, resource_properties=None):
+ encryptor, padder = _get_blob_encryptor_and_padder(content_encryption_key, initialization_vector,
+ uploader_class is not _PageBlobChunkUploader)
+
+ uploader = uploader_class(
+ blob_service,
+ container_name,
+ blob_name,
+ blob_size,
+ block_size,
+ stream,
+ max_connections > 1,
+ progress_callback,
+ validate_content,
+ lease_id,
+ timeout,
+ encryptor,
+ padder
+ )
+
+ uploader.maxsize_condition = maxsize_condition
+
+ # ETag matching does not work with parallelism as a ranged upload may start
+ # before the previous finishes and provides an etag
+ uploader.if_match = if_match if not max_connections > 1 else None
+
+ if progress_callback is not None:
+ progress_callback(0, blob_size)
+
+ if max_connections > 1:
+ import concurrent.futures
+ from threading import BoundedSemaphore
+
+ '''
+ Ensures we bound the chunking so we only buffer and submit 'max_connections' amount of work items to the executor.
+ This is necessary as the executor queue will keep accepting submitted work items, which results in buffering all the blocks if
+ the max_connections + 1 ensures the next chunk is already buffered and ready for when the worker thread is available.
+ '''
+ chunk_throttler = BoundedSemaphore(max_connections + 1)
+
+ executor = concurrent.futures.ThreadPoolExecutor(max_connections)
+ futures = []
+ running_futures = []
+
+ # Check for exceptions and fail fast.
+ for chunk in uploader.get_chunk_streams():
+ for f in running_futures:
+ if f.done():
+ if f.exception():
+ raise f.exception()
+ else:
+ running_futures.remove(f)
+
+ chunk_throttler.acquire()
+ future = executor.submit(uploader.process_chunk, chunk)
+
+ # Calls callback upon completion (even if the callback was added after the Future task is done).
+ future.add_done_callback(lambda x: chunk_throttler.release())
+ futures.append(future)
+ running_futures.append(future)
+
+ # result() will wait until completion and also raise any exceptions that may have been set.
+ range_ids = [f.result() for f in futures]
+ else:
+ range_ids = [uploader.process_chunk(result) for result in uploader.get_chunk_streams()]
+
+ if resource_properties:
+ resource_properties.last_modified = uploader.last_modified
+ resource_properties.etag = uploader.etag
+
+ return range_ids
+
+
+def _upload_blob_substream_blocks(blob_service, container_name, blob_name,
+ blob_size, block_size, stream, max_connections,
+ progress_callback, validate_content, lease_id, uploader_class,
+ maxsize_condition=None, if_match=None, timeout=None):
+ uploader = uploader_class(
+ blob_service,
+ container_name,
+ blob_name,
+ blob_size,
+ block_size,
+ stream,
+ max_connections > 1,
+ progress_callback,
+ validate_content,
+ lease_id,
+ timeout,
+ None,
+ None
+ )
+
+ uploader.maxsize_condition = maxsize_condition
+
+ # ETag matching does not work with parallelism as a ranged upload may start
+ # before the previous finishes and provides an etag
+ uploader.if_match = if_match if not max_connections > 1 else None
+
+ if progress_callback is not None:
+ progress_callback(0, blob_size)
+
+ if max_connections > 1:
+ import concurrent.futures
+ executor = concurrent.futures.ThreadPoolExecutor(max_connections)
+ range_ids = list(executor.map(uploader.process_substream_block, uploader.get_substream_blocks()))
+ else:
+ range_ids = [uploader.process_substream_block(result) for result in uploader.get_substream_blocks()]
+
+ return range_ids
+
+
+class _BlobChunkUploader(object):
+ def __init__(self, blob_service, container_name, blob_name, blob_size,
+ chunk_size, stream, parallel, progress_callback,
+ validate_content, lease_id, timeout, encryptor, padder):
+ self.blob_service = blob_service
+ self.container_name = container_name
+ self.blob_name = blob_name
+ self.blob_size = blob_size
+ self.chunk_size = chunk_size
+ self.stream = stream
+ self.parallel = parallel
+ self.stream_start = stream.tell() if parallel else None
+ self.stream_lock = Lock() if parallel else None
+ self.progress_callback = progress_callback
+ self.progress_total = 0
+ self.progress_lock = Lock() if parallel else None
+ self.validate_content = validate_content
+ self.lease_id = lease_id
+ self.timeout = timeout
+ self.encryptor = encryptor
+ self.padder = padder
+ self.last_modified = None
+ self.etag = None
+
+ def get_chunk_streams(self):
+ index = 0
+ while True:
+ data = b''
+ read_size = self.chunk_size
+
+ # Buffer until we either reach the end of the stream or get a whole chunk.
+ while True:
+ if self.blob_size:
+ read_size = min(self.chunk_size - len(data), self.blob_size - (index + len(data)))
+ temp = self.stream.read(read_size)
+ temp = _get_data_bytes_only('temp', temp)
+ data += temp
+
+ # We have read an empty string and so are at the end
+ # of the buffer or we have read a full chunk.
+ if temp == b'' or len(data) == self.chunk_size:
+ break
+
+ if len(data) == self.chunk_size:
+ if self.padder:
+ data = self.padder.update(data)
+ if self.encryptor:
+ data = self.encryptor.update(data)
+ yield index, data
+ else:
+ if self.padder:
+ data = self.padder.update(data) + self.padder.finalize()
+ if self.encryptor:
+ data = self.encryptor.update(data) + self.encryptor.finalize()
+ if len(data) > 0:
+ yield index, data
+ break
+ index += len(data)
+
+ def process_chunk(self, chunk_data):
+ chunk_bytes = chunk_data[1]
+ chunk_offset = chunk_data[0]
+ return self._upload_chunk_with_progress(chunk_offset, chunk_bytes)
+
+ def _update_progress(self, length):
+ if self.progress_callback is not None:
+ if self.progress_lock is not None:
+ with self.progress_lock:
+ self.progress_total += length
+ total = self.progress_total
+ else:
+ self.progress_total += length
+ total = self.progress_total
+ self.progress_callback(total, self.blob_size)
+
+ def _upload_chunk_with_progress(self, chunk_offset, chunk_data):
+ range_id = self._upload_chunk(chunk_offset, chunk_data)
+ self._update_progress(len(chunk_data))
+ return range_id
+
+ def get_substream_blocks(self):
+ assert self.chunk_size is not None
+ lock = self.stream_lock
+ blob_length = self.blob_size
+
+ if blob_length is None:
+ blob_length = _len_plus(self.stream)
+ if blob_length is None:
+ raise ValueError(_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM.format('stream'))
+
+ blocks = int(ceil(blob_length / (self.chunk_size * 1.0)))
+ last_block_size = self.chunk_size if blob_length % self.chunk_size == 0 else blob_length % self.chunk_size
+
+ for i in range(blocks):
+ yield ('BlockId{}'.format("%05d" % i),
+ _SubStream(self.stream, i * self.chunk_size, last_block_size if i == blocks - 1 else self.chunk_size,
+ lock))
+
+ def process_substream_block(self, block_data):
+ return self._upload_substream_block_with_progress(block_data[0], block_data[1])
+
+ def _upload_substream_block_with_progress(self, block_id, block_stream):
+ range_id = self._upload_substream_block(block_id, block_stream)
+ self._update_progress(len(block_stream))
+ return range_id
+
+ def set_response_properties(self, resp):
+ self.etag = resp.etag
+ self.last_modified = resp.last_modified
+
+
+class _BlockBlobChunkUploader(_BlobChunkUploader):
+ def _upload_chunk(self, chunk_offset, chunk_data):
+ block_id = url_quote(_encode_base64('{0:032d}'.format(chunk_offset)))
+ self.blob_service._put_block(
+ self.container_name,
+ self.blob_name,
+ chunk_data,
+ block_id,
+ validate_content=self.validate_content,
+ lease_id=self.lease_id,
+ timeout=self.timeout,
+ )
+ return BlobBlock(block_id)
+
+ def _upload_substream_block(self, block_id, block_stream):
+ try:
+ self.blob_service._put_block(
+ self.container_name,
+ self.blob_name,
+ block_stream,
+ block_id,
+ validate_content=self.validate_content,
+ lease_id=self.lease_id,
+ timeout=self.timeout,
+ )
+ finally:
+ block_stream.close()
+ return BlobBlock(block_id)
+
+
+class _PageBlobChunkUploader(_BlobChunkUploader):
+ def _is_chunk_empty(self, chunk_data):
+ # read until non-zero byte is encountered
+ # if reached the end without returning, then chunk_data is all 0's
+ for each_byte in chunk_data:
+ if each_byte != 0:
+ return False
+ return True
+
+ def _upload_chunk(self, chunk_start, chunk_data):
+ # avoid uploading the empty pages
+ if not self._is_chunk_empty(chunk_data):
+ chunk_end = chunk_start + len(chunk_data) - 1
+ resp = self.blob_service._update_page(
+ self.container_name,
+ self.blob_name,
+ chunk_data,
+ chunk_start,
+ chunk_end,
+ validate_content=self.validate_content,
+ lease_id=self.lease_id,
+ if_match=self.if_match,
+ timeout=self.timeout,
+ )
+
+ if not self.parallel:
+ self.if_match = resp.etag
+
+ self.set_response_properties(resp)
+
+
+class _AppendBlobChunkUploader(_BlobChunkUploader):
+ def _upload_chunk(self, chunk_offset, chunk_data):
+ if not hasattr(self, 'current_length'):
+ resp = self.blob_service.append_block(
+ self.container_name,
+ self.blob_name,
+ chunk_data,
+ validate_content=self.validate_content,
+ lease_id=self.lease_id,
+ maxsize_condition=self.maxsize_condition,
+ timeout=self.timeout,
+ )
+
+ self.current_length = resp.append_offset
+ else:
+ resp = self.blob_service.append_block(
+ self.container_name,
+ self.blob_name,
+ chunk_data,
+ validate_content=self.validate_content,
+ lease_id=self.lease_id,
+ maxsize_condition=self.maxsize_condition,
+ appendpos_condition=self.current_length + chunk_offset,
+ timeout=self.timeout,
+ )
+
+ self.set_response_properties(resp)
+
+
+class _SubStream(IOBase):
+ def __init__(self, wrapped_stream, stream_begin_index, length, lockObj):
+ # Python 2.7: file-like objects created with open() typically support seek(), but are not
+ # derivations of io.IOBase and thus do not implement seekable().
+ # Python > 3.0: file-like objects created with open() are derived from io.IOBase.
+ try:
+ # only the main thread runs this, so there's no need grabbing the lock
+ wrapped_stream.seek(0, SEEK_CUR)
+ except:
+ raise ValueError("Wrapped stream must support seek().")
+
+ self._lock = lockObj
+ self._wrapped_stream = wrapped_stream
+ self._position = 0
+ self._stream_begin_index = stream_begin_index
+ self._length = length
+ self._buffer = BytesIO()
+
+ # we must avoid buffering more than necessary, and also not use up too much memory
+ # so the max buffer size is capped at 4MB
+ self._max_buffer_size = length if length < _LARGE_BLOB_UPLOAD_MAX_READ_BUFFER_SIZE \
+ else _LARGE_BLOB_UPLOAD_MAX_READ_BUFFER_SIZE
+ self._current_buffer_start = 0
+ self._current_buffer_size = 0
+
+ def __len__(self):
+ return self._length
+
+ def close(self):
+ if self._buffer:
+ self._buffer.close()
+ self._wrapped_stream = None
+ IOBase.close(self)
+
+ def fileno(self):
+ return self._wrapped_stream.fileno()
+
+ def flush(self):
+ pass
+
+ def read(self, n):
+ if self.closed:
+ raise ValueError("Stream is closed.")
+
+ # adjust if out of bounds
+ if n + self._position >= self._length:
+ n = self._length - self._position
+
+ # return fast
+ if n is 0 or self._buffer.closed:
+ return b''
+
+ # attempt first read from the read buffer and update position
+ read_buffer = self._buffer.read(n)
+ bytes_read = len(read_buffer)
+ bytes_remaining = n - bytes_read
+ self._position += bytes_read
+
+ # repopulate the read buffer from the underlying stream to fulfill the request
+ # ensure the seek and read operations are done atomically (only if a lock is provided)
+ if bytes_remaining > 0:
+ with self._buffer:
+ # either read in the max buffer size specified on the class
+ # or read in just enough data for the current block/sub stream
+ current_max_buffer_size = min(self._max_buffer_size, self._length - self._position)
+
+ # lock is only defined if max_connections > 1 (parallel uploads)
+ if self._lock:
+ with self._lock:
+ # reposition the underlying stream to match the start of the data to read
+ absolute_position = self._stream_begin_index + self._position
+ self._wrapped_stream.seek(absolute_position, SEEK_SET)
+ # If we can't seek to the right location, our read will be corrupted so fail fast.
+ if self._wrapped_stream.tell() != absolute_position:
+ raise IOError("Stream failed to seek to the desired location.")
+ buffer_from_stream = self._wrapped_stream.read(current_max_buffer_size)
+ else:
+ buffer_from_stream = self._wrapped_stream.read(current_max_buffer_size)
+
+ if buffer_from_stream:
+ # update the buffer with new data from the wrapped stream
+ # we need to note down the start position and size of the buffer, in case seek is performed later
+ self._buffer = BytesIO(buffer_from_stream)
+ self._current_buffer_start = self._position
+ self._current_buffer_size = len(buffer_from_stream)
+
+ # read the remaining bytes from the new buffer and update position
+ second_read_buffer = self._buffer.read(bytes_remaining)
+ read_buffer += second_read_buffer
+ self._position += len(second_read_buffer)
+
+ return read_buffer
+
+ def readable(self):
+ return True
+
+ def readinto(self, b):
+ raise UnsupportedOperation
+
+ def seek(self, offset, whence=0):
+ if whence is SEEK_SET:
+ start_index = 0
+ elif whence is SEEK_CUR:
+ start_index = self._position
+ elif whence is SEEK_END:
+ start_index = self._length
+ offset = - offset
+ else:
+ raise ValueError("Invalid argument for the 'whence' parameter.")
+
+ pos = start_index + offset
+
+ if pos > self._length:
+ pos = self._length
+ elif pos < 0:
+ pos = 0
+
+ # check if buffer is still valid
+ # if not, drop buffer
+ if pos < self._current_buffer_start or pos >= self._current_buffer_start + self._current_buffer_size:
+ self._buffer.close()
+ self._buffer = BytesIO()
+ else: # if yes seek to correct position
+ delta = pos - self._current_buffer_start
+ self._buffer.seek(delta, SEEK_SET)
+
+ self._position = pos
+ return pos
+
+ def seekable(self):
+ return True
+
+ def tell(self):
+ return self._position
+
+ def write(self):
+ raise UnsupportedOperation
+
+ def writelines(self):
+ raise UnsupportedOperation
+
+ def writeable(self):
+ return False
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/appendblobservice.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/appendblobservice.py
new file mode 100644
index 00000000000..7a83190bb7f
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/appendblobservice.py
@@ -0,0 +1,556 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+from os import path
+
+from ..common._common_conversion import (
+ _to_str,
+ _int_to_str,
+ _datetime_to_utc_string,
+ _get_content_md5,
+)
+from ..common._constants import (
+ SERVICE_HOST_BASE,
+ DEFAULT_PROTOCOL,
+)
+from ..common._error import (
+ _validate_not_none,
+ _validate_type_bytes,
+ _validate_encryption_unsupported,
+ _ERROR_VALUE_NEGATIVE,
+)
+from ..common._http import HTTPRequest
+from ..common._serialization import (
+ _get_data_bytes_only,
+ _add_metadata_headers,
+)
+from ._deserialization import (
+ _parse_append_block,
+ _parse_base_properties,
+)
+from ._serialization import (
+ _get_path,
+)
+from ._upload_chunking import (
+ _AppendBlobChunkUploader,
+ _upload_blob_chunks,
+)
+from .baseblobservice import BaseBlobService
+from .models import (
+ _BlobTypes,
+ ResourceProperties
+)
+
+if sys.version_info >= (3,):
+ from io import BytesIO
+else:
+ from cStringIO import StringIO as BytesIO
+
+
+class AppendBlobService(BaseBlobService):
+ '''
+ An append blob is comprised of blocks and is optimized for append operations.
+ When you modify an append blob, blocks are added to the end of the blob only,
+ via the append_block operation. Updating or deleting of existing blocks is not
+ supported. Unlike a block blob, an append blob does not expose its block IDs.
+
+ Each block in an append blob can be a different size, up to a maximum of 4 MB,
+ and an append blob can include up to 50,000 blocks. The maximum size of an
+ append blob is therefore slightly more than 195 GB (4 MB X 50,000 blocks).
+
+ :ivar int MAX_BLOCK_SIZE:
+ The size of the blocks put by append_blob_from_* methods. Smaller blocks
+ may be put if there is less data provided. The maximum block size the service
+ supports is 4MB.
+ '''
+ MAX_BLOCK_SIZE = 4 * 1024 * 1024
+
+ def __init__(self, account_name=None, account_key=None, sas_token=None, is_emulated=False,
+ protocol=DEFAULT_PROTOCOL, endpoint_suffix=SERVICE_HOST_BASE, custom_domain=None, request_session=None,
+ connection_string=None, socket_timeout=None, token_credential=None):
+ '''
+ :param str account_name:
+ The storage account name. This is used to authenticate requests
+ signed with an account key and to construct the storage endpoint. It
+ is required unless a connection string is given, or if a custom
+ domain is used with anonymous authentication.
+ :param str account_key:
+ The storage account key. This is used for shared key authentication.
+ If neither account key or sas token is specified, anonymous access
+ will be used.
+ :param str sas_token:
+ A shared access signature token to use to authenticate requests
+ instead of the account key. If account key and sas token are both
+ specified, account key will be used to sign. If neither are
+ specified, anonymous access will be used.
+ :param bool is_emulated:
+ Whether to use the emulator. Defaults to False. If specified, will
+ override all other parameters besides connection string and request
+ session.
+ :param str protocol:
+ The protocol to use for requests. Defaults to https.
+ :param str endpoint_suffix:
+ The host base component of the url, minus the account name. Defaults
+ to Azure (core.windows.net). Override this to use the China cloud
+ (core.chinacloudapi.cn).
+ :param str custom_domain:
+ The custom domain to use. This can be set in the Azure Portal. For
+ example, 'www.mydomain.com'.
+ :param requests.Session request_session:
+ The session object to use for http requests.
+ :param str connection_string:
+ If specified, this will override all other parameters besides
+ request session. See
+ http://azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/
+ for the connection string format.
+ :param int socket_timeout:
+ If specified, this will override the default socket timeout. The timeout specified is in seconds.
+ See DEFAULT_SOCKET_TIMEOUT in _constants.py for the default value.
+ :param token_credential:
+ A token credential used to authenticate HTTPS requests. The token value
+ should be updated before its expiration.
+ :type `~..common.TokenCredential`
+ '''
+ self.blob_type = _BlobTypes.AppendBlob
+ super(AppendBlobService, self).__init__(
+ account_name, account_key, sas_token, is_emulated, protocol, endpoint_suffix,
+ custom_domain, request_session, connection_string, socket_timeout, token_credential)
+
+ def create_blob(self, container_name, blob_name, content_settings=None,
+ metadata=None, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None):
+ '''
+ Creates a blob or overrides an existing blob. Use if_none_match=* to
+ prevent overriding an existing blob.
+
+ See create_blob_from_* for high level
+ functions that handle the creation and upload of large blobs with
+ automatic chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set blob properties.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to
+ perform the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Append Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {'timeout': _int_to_str(timeout)}
+ request.headers = {
+ 'x-ms-blob-type': _to_str(self.blob_type),
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match)
+ }
+ _add_metadata_headers(metadata, request)
+ if content_settings is not None:
+ request.headers.update(content_settings._to_headers())
+
+ return self._perform_request(request, _parse_base_properties)
+
+ def append_block(self, container_name, blob_name, block,
+ validate_content=False, maxsize_condition=None,
+ appendpos_condition=None,
+ lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Commits a new block of data to the end of an existing append blob.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param bytes block:
+ Content of the block in bytes.
+ :param bool validate_content:
+ If true, calculates an MD5 hash of the block content. The storage
+ service checks the hash of the content that has arrived
+ with the hash that was sent. This is primarily valuable for detecting
+ bitflips on the wire if using http instead of https as https (the default)
+ will already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param int maxsize_condition:
+ Optional conditional header. The max length in bytes permitted for
+ the append blob. If the Append Block operation would cause the blob
+ to exceed that limit or if the blob size is already greater than the
+ value specified in this header, the request will fail with
+ MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed).
+ :param int appendpos_condition:
+ Optional conditional header, used only for the Append Block operation.
+ A number indicating the byte offset to compare. Append Block will
+ succeed only if the append position is equal to this number. If it
+ is not, the request will fail with the
+ AppendPositionConditionNotMet error
+ (HTTP status code 412 - Precondition Failed).
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return:
+ ETag, last modified, append offset, and committed block count
+ properties for the updated Append Blob
+ :rtype: :class:`~azure.storage.blob.models.AppendBlockProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('block', block)
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'appendblock',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-blob-condition-maxsize': _to_str(maxsize_condition),
+ 'x-ms-blob-condition-appendpos': _to_str(appendpos_condition),
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match)
+ }
+ request.body = _get_data_bytes_only('block', block)
+
+ if validate_content:
+ computed_md5 = _get_content_md5(request.body)
+ request.headers['Content-MD5'] = _to_str(computed_md5)
+
+ return self._perform_request(request, _parse_append_block)
+
+ # ----Convenience APIs----------------------------------------------
+
+ def append_blob_from_path(
+ self, container_name, blob_name, file_path, validate_content=False,
+ maxsize_condition=None, progress_callback=None, lease_id=None, timeout=None):
+ '''
+ Appends to the content of an existing blob from a file path, with automatic
+ chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param str file_path:
+ Path of the file to upload as the blob content.
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each chunk of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param int maxsize_condition:
+ Optional conditional header. The max length in bytes permitted for
+ the append blob. If the Append Block operation would cause the blob
+ to exceed that limit or if the blob size is already greater than the
+ value specified in this header, the request will fail with
+ MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed).
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: ETag and last modified properties for the Append Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('file_path', file_path)
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ count = path.getsize(file_path)
+ with open(file_path, 'rb') as stream:
+ return self.append_blob_from_stream(
+ container_name,
+ blob_name,
+ stream,
+ count=count,
+ validate_content=validate_content,
+ maxsize_condition=maxsize_condition,
+ progress_callback=progress_callback,
+ lease_id=lease_id,
+ timeout=timeout)
+
+ def append_blob_from_bytes(
+ self, container_name, blob_name, blob, index=0, count=None,
+ validate_content=False, maxsize_condition=None, progress_callback=None,
+ lease_id=None, timeout=None):
+ '''
+ Appends to the content of an existing blob from an array of bytes, with
+ automatic chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param bytes blob:
+ Content of blob as an array of bytes.
+ :param int index:
+ Start index in the array of bytes.
+ :param int count:
+ Number of bytes to upload. Set to None or negative value to upload
+ all bytes starting from index.
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each chunk of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param int maxsize_condition:
+ Optional conditional header. The max length in bytes permitted for
+ the append blob. If the Append Block operation would cause the blob
+ to exceed that limit or if the blob size is already greater than the
+ value specified in this header, the request will fail with
+ MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed).
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: ETag and last modified properties for the Append Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('blob', blob)
+ _validate_not_none('index', index)
+ _validate_type_bytes('blob', blob)
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ if index < 0:
+ raise IndexError(_ERROR_VALUE_NEGATIVE.format('index'))
+
+ if count is None or count < 0:
+ count = len(blob) - index
+
+ stream = BytesIO(blob)
+ stream.seek(index)
+
+ return self.append_blob_from_stream(
+ container_name,
+ blob_name,
+ stream,
+ count=count,
+ validate_content=validate_content,
+ maxsize_condition=maxsize_condition,
+ lease_id=lease_id,
+ progress_callback=progress_callback,
+ timeout=timeout)
+
+ def append_blob_from_text(
+ self, container_name, blob_name, text, encoding='utf-8',
+ validate_content=False, maxsize_condition=None, progress_callback=None,
+ lease_id=None, timeout=None):
+ '''
+ Appends to the content of an existing blob from str/unicode, with
+ automatic chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param str text:
+ Text to upload to the blob.
+ :param str encoding:
+ Python encoding to use to convert the text to bytes.
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each chunk of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param int maxsize_condition:
+ Optional conditional header. The max length in bytes permitted for
+ the append blob. If the Append Block operation would cause the blob
+ to exceed that limit or if the blob size is already greater than the
+ value specified in this header, the request will fail with
+ MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed).
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: ETag and last modified properties for the Append Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('text', text)
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ if not isinstance(text, bytes):
+ _validate_not_none('encoding', encoding)
+ text = text.encode(encoding)
+
+ return self.append_blob_from_bytes(
+ container_name,
+ blob_name,
+ text,
+ index=0,
+ count=len(text),
+ validate_content=validate_content,
+ maxsize_condition=maxsize_condition,
+ lease_id=lease_id,
+ progress_callback=progress_callback,
+ timeout=timeout)
+
+ def append_blob_from_stream(
+ self, container_name, blob_name, stream, count=None,
+ validate_content=False, maxsize_condition=None, progress_callback=None,
+ lease_id=None, timeout=None):
+ '''
+ Appends to the content of an existing blob from a file/stream, with
+ automatic chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param io.IOBase stream:
+ Opened stream to upload as the blob content.
+ :param int count:
+ Number of bytes to read from the stream. This is optional, but
+ should be supplied for optimal performance.
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each chunk of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param int maxsize_condition:
+ Conditional header. The max length in bytes permitted for
+ the append blob. If the Append Block operation would cause the blob
+ to exceed that limit or if the blob size is already greater than the
+ value specified in this header, the request will fail with
+ MaxBlobSizeConditionNotMet error (HTTP status code 412 - Precondition Failed).
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: ETag and last modified properties for the Append Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('stream', stream)
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ # _upload_blob_chunks returns the block ids for block blobs so resource_properties
+ # is passed as a parameter to get the last_modified and etag for page and append blobs.
+ # this info is not needed for block_blobs since _put_block_list is called after which gets this info
+ resource_properties = ResourceProperties()
+ _upload_blob_chunks(
+ blob_service=self,
+ container_name=container_name,
+ blob_name=blob_name,
+ blob_size=count,
+ block_size=self.MAX_BLOCK_SIZE,
+ stream=stream,
+ max_connections=1, # upload not easily parallelizable
+ progress_callback=progress_callback,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ uploader_class=_AppendBlobChunkUploader,
+ maxsize_condition=maxsize_condition,
+ timeout=timeout,
+ resource_properties=resource_properties
+ )
+
+ return resource_properties
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/baseblobservice.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/baseblobservice.py
new file mode 100644
index 00000000000..804e7cb4155
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/baseblobservice.py
@@ -0,0 +1,3246 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+from abc import ABCMeta
+
+from azure.common import AzureHttpError
+
+from ..common._auth import (
+ _StorageSASAuthentication,
+ _StorageSharedKeyAuthentication,
+ _StorageNoAuthentication,
+ _StorageTokenAuthentication,
+)
+from ..common._common_conversion import (
+ _int_to_str,
+ _to_str,
+ _datetime_to_utc_string,
+)
+from ..common._connection import _ServiceParameters
+from ..common._constants import (
+ SERVICE_HOST_BASE,
+ DEFAULT_PROTOCOL,
+)
+from ..common._deserialization import (
+ _convert_xml_to_service_properties,
+ _parse_metadata,
+ _parse_properties,
+ _convert_xml_to_service_stats,
+ _parse_length_from_content_range,
+)
+from ..common._error import (
+ _dont_fail_not_exist,
+ _dont_fail_on_exist,
+ _validate_not_none,
+ _validate_decryption_required,
+ _validate_access_policies,
+ _ERROR_PARALLEL_NOT_SEEKABLE,
+)
+from ..common._http import HTTPRequest
+from ..common._serialization import (
+ _get_request_body,
+ _convert_signed_identifiers_to_xml,
+ _convert_service_properties_to_xml,
+ _add_metadata_headers,
+)
+from ..common.models import (
+ Services,
+ ListGenerator,
+ _OperationContext,
+)
+from .sharedaccesssignature import (
+ BlobSharedAccessSignature,
+)
+from ..common.storageclient import StorageClient
+from ._deserialization import (
+ _convert_xml_to_containers,
+ _parse_blob,
+ _convert_xml_to_blob_list,
+ _parse_container,
+ _parse_snapshot_blob,
+ _parse_lease,
+ _convert_xml_to_signed_identifiers_and_access,
+ _parse_base_properties,
+)
+from ._download_chunking import _download_blob_chunks
+from ._error import (
+ _ERROR_INVALID_LEASE_DURATION,
+ _ERROR_INVALID_LEASE_BREAK_PERIOD,
+)
+from ._serialization import (
+ _get_path,
+ _validate_and_format_range_headers,
+)
+from .models import (
+ BlobProperties,
+ _LeaseActions,
+ ContainerPermissions,
+ BlobPermissions,
+)
+
+from ._constants import (
+ X_MS_VERSION,
+ __version__ as package_version,
+)
+
+if sys.version_info >= (3,):
+ from io import BytesIO
+else:
+ from cStringIO import StringIO as BytesIO
+
+
+class BaseBlobService(StorageClient):
+ '''
+ This is the main class managing Blob resources.
+
+ The Blob service stores text and binary data as blobs in the cloud.
+ The Blob service offers the following three resources: the storage account,
+ containers, and blobs. Within your storage account, containers provide a
+ way to organize sets of blobs. For more information please see:
+ https://msdn.microsoft.com/en-us/library/azure/ee691964.aspx
+
+ :ivar int MAX_SINGLE_GET_SIZE:
+ The size of the first range get performed by get_blob_to_* methods if
+ max_connections is greater than 1. Less data will be returned if the
+ blob is smaller than this.
+ :ivar int MAX_CHUNK_GET_SIZE:
+ The size of subsequent range gets performed by get_blob_to_* methods if
+ max_connections is greater than 1 and the blob is larger than MAX_SINGLE_GET_SIZE.
+ Less data will be returned if the remainder of the blob is smaller than
+ this. If this is set to larger than 4MB, content_validation will throw an
+ error if enabled. However, if content_validation is not desired a size
+ greater than 4MB may be optimal. Setting this below 4MB is not recommended.
+ :ivar object key_encryption_key:
+ The key-encryption-key optionally provided by the user. If provided, will be used to
+ encrypt/decrypt in supported methods.
+ For methods requiring decryption, either the key_encryption_key OR the resolver must be provided.
+ If both are provided, the resolver will take precedence.
+ Must implement the following methods for APIs requiring encryption:
+ wrap_key(key)--wraps the specified key (bytes) using an algorithm of the user's choice. Returns the encrypted key as bytes.
+ get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.
+ get_kid()--returns a string key id for this key-encryption-key.
+ Must implement the following methods for APIs requiring decryption:
+ unwrap_key(key, algorithm)--returns the unwrapped form of the specified symmetric key using the string-specified algorithm.
+ get_kid()--returns a string key id for this key-encryption-key.
+ :ivar function key_resolver_function(kid):
+ A function to resolve keys optionally provided by the user. If provided, will be used to decrypt in supported methods.
+ For methods requiring decryption, either the key_encryption_key OR
+ the resolver must be provided. If both are provided, the resolver will take precedence.
+ It uses the kid string to return a key-encryption-key implementing the interface defined above.
+ :ivar bool require_encryption:
+ A flag that may be set to ensure that all messages successfully uploaded to the queue and all those downloaded and
+ successfully read from the queue are/were encrypted while on the server. If this flag is set, all required
+ parameters for encryption/decryption must be provided. See the above comments on the key_encryption_key and resolver.
+ '''
+
+ __metaclass__ = ABCMeta
+ MAX_SINGLE_GET_SIZE = 32 * 1024 * 1024
+ MAX_CHUNK_GET_SIZE = 4 * 1024 * 1024
+
+ def __init__(self, account_name=None, account_key=None, sas_token=None, is_emulated=False,
+ protocol=DEFAULT_PROTOCOL, endpoint_suffix=SERVICE_HOST_BASE, custom_domain=None, request_session=None,
+ connection_string=None, socket_timeout=None, token_credential=None):
+ '''
+ :param str account_name:
+ The storage account name. This is used to authenticate requests
+ signed with an account key and to construct the storage endpoint. It
+ is required unless a connection string is given, or if a custom
+ domain is used with anonymous authentication.
+ :param str account_key:
+ The storage account key. This is used for shared key authentication.
+ If neither account key or sas token is specified, anonymous access
+ will be used.
+ :param str sas_token:
+ A shared access signature token to use to authenticate requests
+ instead of the account key. If account key and sas token are both
+ specified, account key will be used to sign. If neither are
+ specified, anonymous access will be used.
+ :param bool is_emulated:
+ Whether to use the emulator. Defaults to False. If specified, will
+ override all other parameters besides connection string and request
+ session.
+ :param str protocol:
+ The protocol to use for requests. Defaults to https.
+ :param str endpoint_suffix:
+ The host base component of the url, minus the account name. Defaults
+ to Azure (core.windows.net). Override this to use the China cloud
+ (core.chinacloudapi.cn).
+ :param str custom_domain:
+ The custom domain to use. This can be set in the Azure Portal. For
+ example, 'www.mydomain.com'.
+ :param requests.Session request_session:
+ The session object to use for http requests.
+ :param str connection_string:
+ If specified, this will override all other parameters besides
+ request session. See
+ http://azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/
+ for the connection string format
+ :param int socket_timeout:
+ If specified, this will override the default socket timeout. The timeout specified is in seconds.
+ See DEFAULT_SOCKET_TIMEOUT in _constants.py for the default value.
+ :param token_credential:
+ A token credential used to authenticate HTTPS requests. The token value
+ should be updated before its expiration.
+ :type `~..common.TokenCredential`
+ '''
+ service_params = _ServiceParameters.get_service_parameters(
+ 'blob',
+ account_name=account_name,
+ account_key=account_key,
+ sas_token=sas_token,
+ token_credential=token_credential,
+ is_emulated=is_emulated,
+ protocol=protocol,
+ endpoint_suffix=endpoint_suffix,
+ custom_domain=custom_domain,
+ request_session=request_session,
+ connection_string=connection_string,
+ socket_timeout=socket_timeout)
+
+ super(BaseBlobService, self).__init__(service_params)
+
+ if self.account_key:
+ self.authentication = _StorageSharedKeyAuthentication(
+ self.account_name,
+ self.account_key,
+ self.is_emulated
+ )
+ elif self.sas_token:
+ self.authentication = _StorageSASAuthentication(self.sas_token)
+ elif self.token_credential:
+ self.authentication = _StorageTokenAuthentication(self.token_credential)
+ else:
+ self.authentication = _StorageNoAuthentication()
+
+ self.require_encryption = False
+ self.key_encryption_key = None
+ self.key_resolver_function = None
+ self._X_MS_VERSION = X_MS_VERSION
+ self._update_user_agent_string(package_version)
+
+ def make_blob_url(self, container_name, blob_name, protocol=None, sas_token=None, snapshot=None):
+ '''
+ Creates the url to access a blob.
+
+ :param str container_name:
+ Name of container.
+ :param str blob_name:
+ Name of blob.
+ :param str protocol:
+ Protocol to use: 'http' or 'https'. If not specified, uses the
+ protocol specified when BaseBlobService was initialized.
+ :param str sas_token:
+ Shared access signature token created with
+ generate_shared_access_signature.
+ :param str snapshot:
+ An string value that uniquely identifies the snapshot. The value of
+ this query parameter indicates the snapshot version.
+ :return: blob access URL.
+ :rtype: str
+ '''
+
+ url = '{}://{}/{}/{}'.format(
+ protocol or self.protocol,
+ self.primary_endpoint,
+ container_name,
+ blob_name,
+ )
+
+ if snapshot and sas_token:
+ url = '{}?snapshot={}&{}'.format(url, snapshot, sas_token)
+ elif snapshot:
+ url = '{}?snapshot={}'.format(url, snapshot)
+ elif sas_token:
+ url = '{}?{}'.format(url, sas_token)
+
+ return url
+
+ def make_container_url(self, container_name, protocol=None, sas_token=None):
+ '''
+ Creates the url to access a container.
+
+ :param str container_name:
+ Name of container.
+ :param str protocol:
+ Protocol to use: 'http' or 'https'. If not specified, uses the
+ protocol specified when BaseBlobService was initialized.
+ :param str sas_token:
+ Shared access signature token created with
+ generate_shared_access_signature.
+ :return: container access URL.
+ :rtype: str
+ '''
+
+ url = '{}://{}/{}?restype=container'.format(
+ protocol or self.protocol,
+ self.primary_endpoint,
+ container_name,
+ )
+
+ if sas_token:
+ url = '{}&{}'.format(url, sas_token)
+
+ return url
+
+ def generate_account_shared_access_signature(self, resource_types, permission,
+ expiry, start=None, ip=None, protocol=None):
+ '''
+ Generates a shared access signature for the blob service.
+ Use the returned signature with the sas_token parameter of any BlobService.
+
+ :param ResourceTypes resource_types:
+ Specifies the resource types that are accessible with the account SAS.
+ :param AccountPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :return: A Shared Access Signature (sas) token.
+ :rtype: str
+ '''
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = BlobSharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_account(Services.BLOB, resource_types, permission,
+ expiry, start=start, ip=ip, protocol=protocol)
+
+ def generate_container_shared_access_signature(self, container_name,
+ permission=None, expiry=None,
+ start=None, id=None, ip=None, protocol=None,
+ cache_control=None, content_disposition=None,
+ content_encoding=None, content_language=None,
+ content_type=None):
+ '''
+ Generates a shared access signature for the container.
+ Use the returned signature with the sas_token parameter of any BlobService.
+
+ :param str container_name:
+ Name of container.
+ :param ContainerPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, write, delete, list.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use
+ set_blob_service_properties.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :param str cache_control:
+ Response header value for Cache-Control when resource is accessed
+ using this shared access signature.
+ :param str content_disposition:
+ Response header value for Content-Disposition when resource is accessed
+ using this shared access signature.
+ :param str content_encoding:
+ Response header value for Content-Encoding when resource is accessed
+ using this shared access signature.
+ :param str content_language:
+ Response header value for Content-Language when resource is accessed
+ using this shared access signature.
+ :param str content_type:
+ Response header value for Content-Type when resource is accessed
+ using this shared access signature.
+ :return: A Shared Access Signature (sas) token.
+ :rtype: str
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = BlobSharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_container(
+ container_name,
+ permission,
+ expiry,
+ start=start,
+ id=id,
+ ip=ip,
+ protocol=protocol,
+ cache_control=cache_control,
+ content_disposition=content_disposition,
+ content_encoding=content_encoding,
+ content_language=content_language,
+ content_type=content_type,
+ )
+
+ def generate_blob_shared_access_signature(
+ self, container_name, blob_name, permission=None,
+ expiry=None, start=None, id=None, ip=None, protocol=None,
+ cache_control=None, content_disposition=None,
+ content_encoding=None, content_language=None,
+ content_type=None):
+ '''
+ Generates a shared access signature for the blob.
+ Use the returned signature with the sas_token parameter of any BlobService.
+
+ :param str container_name:
+ Name of container.
+ :param str blob_name:
+ Name of blob.
+ :param BlobPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, write, delete, list.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use :func:`~set_container_acl`.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :param str cache_control:
+ Response header value for Cache-Control when resource is accessed
+ using this shared access signature.
+ :param str content_disposition:
+ Response header value for Content-Disposition when resource is accessed
+ using this shared access signature.
+ :param str content_encoding:
+ Response header value for Content-Encoding when resource is accessed
+ using this shared access signature.
+ :param str content_language:
+ Response header value for Content-Language when resource is accessed
+ using this shared access signature.
+ :param str content_type:
+ Response header value for Content-Type when resource is accessed
+ using this shared access signature.
+ :return: A Shared Access Signature (sas) token.
+ :rtype: str
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = BlobSharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_blob(
+ container_name,
+ blob_name,
+ permission,
+ expiry,
+ start=start,
+ id=id,
+ ip=ip,
+ protocol=protocol,
+ cache_control=cache_control,
+ content_disposition=content_disposition,
+ content_encoding=content_encoding,
+ content_language=content_language,
+ content_type=content_type,
+ )
+
+ def list_containers(self, prefix=None, num_results=None, include_metadata=False,
+ marker=None, timeout=None):
+ '''
+ Returns a generator to list the containers under the specified account.
+ The generator will lazily follow the continuation tokens returned by
+ the service and stop when all containers have been returned or num_results is reached.
+
+ If num_results is specified and the account has more than that number of
+ containers, the generator will have a populated next_marker field once it
+ finishes. This marker can be used to create a new generator if more
+ results are desired.
+
+ :param str prefix:
+ Filters the results to return only containers whose names
+ begin with the specified prefix.
+ :param int num_results:
+ Specifies the maximum number of containers to return. A single list
+ request may return up to 1000 contianers and potentially a continuation
+ token which should be followed to get additional resutls.
+ :param bool include_metadata:
+ Specifies that container metadata be returned in the response.
+ :param str marker:
+ An opaque continuation token. This value can be retrieved from the
+ next_marker field of a previous generator object if num_results was
+ specified and that generator has finished enumerating results. If
+ specified, this generator will begin returning results from the point
+ where the previous generator stopped.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ include = 'metadata' if include_metadata else None
+ operation_context = _OperationContext(location_lock=True)
+ kwargs = {'prefix': prefix, 'marker': marker, 'max_results': num_results,
+ 'include': include, 'timeout': timeout, '_context': operation_context}
+ resp = self._list_containers(**kwargs)
+
+ return ListGenerator(resp, self._list_containers, (), kwargs)
+
+ def _list_containers(self, prefix=None, marker=None, max_results=None,
+ include=None, timeout=None, _context=None):
+ '''
+ Returns a list of the containers under the specified account.
+
+ :param str prefix:
+ Filters the results to return only containers whose names
+ begin with the specified prefix.
+ :param str marker:
+ A string value that identifies the portion of the list
+ to be returned with the next list operation. The operation returns
+ a next_marker value within the response body if the list returned was
+ not complete. The marker value may then be used in a subsequent
+ call to request the next set of list items. The marker value is
+ opaque to the client.
+ :param int max_results:
+ Specifies the maximum number of containers to return. A single list
+ request may return up to 1000 contianers and potentially a continuation
+ token which should be followed to get additional resutls.
+ :param str include:
+ Include this parameter to specify that the container's
+ metadata be returned as part of the response body. set this
+ parameter to string 'metadata' to get container's metadata.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path()
+ request.query = {
+ 'comp': 'list',
+ 'prefix': _to_str(prefix),
+ 'marker': _to_str(marker),
+ 'maxresults': _int_to_str(max_results),
+ 'include': _to_str(include),
+ 'timeout': _int_to_str(timeout)
+ }
+
+ return self._perform_request(request, _convert_xml_to_containers, operation_context=_context)
+
+ def create_container(self, container_name, metadata=None,
+ public_access=None, fail_on_exist=False, timeout=None):
+ '''
+ Creates a new container under the specified account. If the container
+ with the same name already exists, the operation fails if
+ fail_on_exist is True.
+
+ :param str container_name:
+ Name of container to create.
+ :param metadata:
+ A dict with name_value pairs to associate with the
+ container as metadata. Example:{'Category':'test'}
+ :type metadata: dict(str, str)
+ :param ~azure.storage.blob.models.PublicAccess public_access:
+ Possible values include: container, blob.
+ :param bool fail_on_exist:
+ Specify whether to throw an exception when the container exists.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: True if container is created, False if container already exists.
+ :rtype: bool
+ '''
+ _validate_not_none('container_name', container_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-blob-public-access': _to_str(public_access)
+ }
+ _add_metadata_headers(metadata, request)
+
+ if not fail_on_exist:
+ try:
+ self._perform_request(request)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_on_exist(ex)
+ return False
+ else:
+ self._perform_request(request)
+ return True
+
+ def get_container_properties(self, container_name, lease_id=None, timeout=None):
+ '''
+ Returns all user-defined metadata and system properties for the specified
+ container. The data returned does not include the container's list of blobs.
+
+ :param str container_name:
+ Name of existing container.
+ :param str lease_id:
+ If specified, get_container_properties only succeeds if the
+ container's lease is active and matches this ID.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: properties for the specified container within a container object.
+ :rtype: :class:`~azure.storage.blob.models.Container`
+ '''
+ _validate_not_none('container_name', container_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {'x-ms-lease-id': _to_str(lease_id)}
+
+ return self._perform_request(request, _parse_container, [container_name])
+
+ def get_container_metadata(self, container_name, lease_id=None, timeout=None):
+ '''
+ Returns all user-defined metadata for the specified container.
+
+ :param str container_name:
+ Name of existing container.
+ :param str lease_id:
+ If specified, get_container_metadata only succeeds if the
+ container's lease is active and matches this ID.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return:
+ A dictionary representing the container metadata name, value pairs.
+ :rtype: dict(str, str)
+ '''
+ _validate_not_none('container_name', container_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {'x-ms-lease-id': _to_str(lease_id)}
+
+ return self._perform_request(request, _parse_metadata)
+
+ def set_container_metadata(self, container_name, metadata=None,
+ lease_id=None, if_modified_since=None, timeout=None):
+ '''
+ Sets one or more user-defined name-value pairs for the specified
+ container. Each call to this operation replaces all existing metadata
+ attached to the container. To remove all metadata from the container,
+ call this operation with no metadata dict.
+
+ :param str container_name:
+ Name of existing container.
+ :param metadata:
+ A dict containing name-value pairs to associate with the container as
+ metadata. Example: {'category':'test'}
+ :type metadata: dict(str, str)
+ :param str lease_id:
+ If specified, set_container_metadata only succeeds if the
+ container's lease is active and matches this ID.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Container
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'x-ms-lease-id': _to_str(lease_id),
+ }
+ _add_metadata_headers(metadata, request)
+
+ return self._perform_request(request, _parse_base_properties)
+
+ def get_container_acl(self, container_name, lease_id=None, timeout=None):
+ '''
+ Gets the permissions for the specified container.
+ The permissions indicate whether container data may be accessed publicly.
+
+ :param str container_name:
+ Name of existing container.
+ :param lease_id:
+ If specified, get_container_acl only succeeds if the
+ container's lease is active and matches this ID.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: A dictionary of access policies associated with the container. dict of str to
+ :class:`..common.models.AccessPolicy` and a public_access property
+ if public access is turned on
+ '''
+ _validate_not_none('container_name', container_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'comp': 'acl',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {'x-ms-lease-id': _to_str(lease_id)}
+
+ return self._perform_request(request, _convert_xml_to_signed_identifiers_and_access)
+
+ def set_container_acl(self, container_name, signed_identifiers=None,
+ public_access=None, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, timeout=None):
+ '''
+ Sets the permissions for the specified container or stored access
+ policies that may be used with Shared Access Signatures. The permissions
+ indicate whether blobs in a container may be accessed publicly.
+
+ :param str container_name:
+ Name of existing container.
+ :param signed_identifiers:
+ A dictionary of access policies to associate with the container. The
+ dictionary may contain up to 5 elements. An empty dictionary
+ will clear the access policies set on the service.
+ :type signed_identifiers: dict(str, :class:`~..common.models.AccessPolicy`)
+ :param ~azure.storage.blob.models.PublicAccess public_access:
+ Possible values include: container, blob.
+ :param str lease_id:
+ If specified, set_container_acl only succeeds if the
+ container's lease is active and matches this ID.
+ :param datetime if_modified_since:
+ A datetime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified date/time.
+ :param datetime if_unmodified_since:
+ A datetime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Container
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_access_policies(signed_identifiers)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'comp': 'acl',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-blob-public-access': _to_str(public_access),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'x-ms-lease-id': _to_str(lease_id),
+ }
+ request.body = _get_request_body(
+ _convert_signed_identifiers_to_xml(signed_identifiers))
+
+ return self._perform_request(request, _parse_base_properties)
+
+ def delete_container(self, container_name, fail_not_exist=False,
+ lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, timeout=None):
+ '''
+ Marks the specified container for deletion. The container and any blobs
+ contained within it are later deleted during garbage collection.
+
+ :param str container_name:
+ Name of container to delete.
+ :param bool fail_not_exist:
+ Specify whether to throw an exception when the container doesn't
+ exist.
+ :param str lease_id:
+ If specified, delete_container only succeeds if the
+ container's lease is active and matches this ID.
+ Required if the container has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: True if container is deleted, False container doesn't exist.
+ :rtype: bool
+ '''
+ _validate_not_none('container_name', container_name)
+ request = HTTPRequest()
+ request.method = 'DELETE'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ }
+
+ if not fail_not_exist:
+ try:
+ self._perform_request(request)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_not_exist(ex)
+ return False
+ else:
+ self._perform_request(request)
+ return True
+
+ def _lease_container_impl(
+ self, container_name, lease_action, lease_id, lease_duration,
+ lease_break_period, proposed_lease_id, if_modified_since,
+ if_unmodified_since, timeout):
+ '''
+ Establishes and manages a lease on a container.
+ The Lease Container operation can be called in one of five modes
+ Acquire, to request a new lease
+ Renew, to renew an existing lease
+ Change, to change the ID of an existing lease
+ Release, to free the lease if it is no longer needed so that another
+ client may immediately acquire a lease against the container
+ Break, to end the lease but ensure that another client cannot acquire
+ a new lease until the current lease period has expired
+
+ :param str container_name:
+ Name of existing container.
+ :param str lease_action:
+ Possible _LeaseActions values: acquire|renew|release|break|change
+ :param str lease_id:
+ Required if the container has an active lease.
+ :param int lease_duration:
+ Specifies the duration of the lease, in seconds, or negative one
+ (-1) for a lease that never expires. A non-infinite lease can be
+ between 15 and 60 seconds. A lease duration cannot be changed
+ using renew or change. For backwards compatibility, the default is
+ 60, and the value is only used on an acquire operation.
+ :param int lease_break_period:
+ For a break operation, this is the proposed duration of
+ seconds that the lease should continue before it is broken, between
+ 0 and 60 seconds. This break period is only used if it is shorter
+ than the time remaining on the lease. If longer, the time remaining
+ on the lease is used. A new lease will not be available before the
+ break period has expired, but the lease may be held for longer than
+ the break period. If this header does not appear with a break
+ operation, a fixed-duration lease breaks after the remaining lease
+ period elapses, and an infinite lease breaks immediately.
+ :param str proposed_lease_id:
+ Optional for Acquire, required for Change. Proposed lease ID, in a
+ GUID string format. The Blob service returns 400 (Invalid request)
+ if the proposed lease ID is not in the correct format.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return:
+ Response headers returned from the service call.
+ :rtype: dict(str, str)
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('lease_action', lease_action)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'comp': 'lease',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'x-ms-lease-action': _to_str(lease_action),
+ 'x-ms-lease-duration': _to_str(lease_duration),
+ 'x-ms-lease-break-period': _to_str(lease_break_period),
+ 'x-ms-proposed-lease-id': _to_str(proposed_lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ }
+
+ return self._perform_request(request, _parse_lease)
+
+ def acquire_container_lease(
+ self, container_name, lease_duration=-1, proposed_lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, timeout=None):
+ '''
+ Requests a new lease. If the container does not have an active lease,
+ the Blob service creates a lease on the container and returns a new
+ lease ID.
+
+ :param str container_name:
+ Name of existing container.
+ :param int lease_duration:
+ Specifies the duration of the lease, in seconds, or negative one
+ (-1) for a lease that never expires. A non-infinite lease can be
+ between 15 and 60 seconds. A lease duration cannot be changed
+ using renew or change. Default is -1 (infinite lease).
+ :param str proposed_lease_id:
+ Proposed lease ID, in a GUID string format. The Blob service returns
+ 400 (Invalid request) if the proposed lease ID is not in the correct format.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: the lease ID of the newly created lease.
+ :return: str
+ '''
+ _validate_not_none('lease_duration', lease_duration)
+ if lease_duration is not -1 and \
+ (lease_duration < 15 or lease_duration > 60):
+ raise ValueError(_ERROR_INVALID_LEASE_DURATION)
+
+ lease = self._lease_container_impl(container_name,
+ _LeaseActions.Acquire,
+ None, # lease_id
+ lease_duration,
+ None, # lease_break_period
+ proposed_lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ timeout)
+ return lease['id']
+
+ def renew_container_lease(
+ self, container_name, lease_id, if_modified_since=None,
+ if_unmodified_since=None, timeout=None):
+ '''
+ Renews the lease. The lease can be renewed if the lease ID specified
+ matches that associated with the container. Note that
+ the lease may be renewed even if it has expired as long as the container
+ has not been leased again since the expiration of that lease. When you
+ renew a lease, the lease duration clock resets.
+
+ :param str container_name:
+ Name of existing container.
+ :param str lease_id:
+ Lease ID for active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: the lease ID of the renewed lease.
+ :return: str
+ '''
+ _validate_not_none('lease_id', lease_id)
+
+ lease = self._lease_container_impl(container_name,
+ _LeaseActions.Renew,
+ lease_id,
+ None, # lease_duration
+ None, # lease_break_period
+ None, # proposed_lease_id
+ if_modified_since,
+ if_unmodified_since,
+ timeout)
+ return lease['id']
+
+ def release_container_lease(
+ self, container_name, lease_id, if_modified_since=None,
+ if_unmodified_since=None, timeout=None):
+ '''
+ Release the lease. The lease may be released if the lease_id specified matches
+ that associated with the container. Releasing the lease allows another client
+ to immediately acquire the lease for the container as soon as the release is complete.
+
+ :param str container_name:
+ Name of existing container.
+ :param str lease_id:
+ Lease ID for active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('lease_id', lease_id)
+
+ self._lease_container_impl(container_name,
+ _LeaseActions.Release,
+ lease_id,
+ None, # lease_duration
+ None, # lease_break_period
+ None, # proposed_lease_id
+ if_modified_since,
+ if_unmodified_since,
+ timeout)
+
+ def break_container_lease(
+ self, container_name, lease_break_period=None,
+ if_modified_since=None, if_unmodified_since=None, timeout=None):
+ '''
+ Break the lease, if the container has an active lease. Once a lease is
+ broken, it cannot be renewed. Any authorized request can break the lease;
+ the request is not required to specify a matching lease ID. When a lease
+ is broken, the lease break period is allowed to elapse, during which time
+ no lease operation except break and release can be performed on the container.
+ When a lease is successfully broken, the response indicates the interval
+ in seconds until a new lease can be acquired.
+
+ :param str container_name:
+ Name of existing container.
+ :param int lease_break_period:
+ This is the proposed duration of seconds that the lease
+ should continue before it is broken, between 0 and 60 seconds. This
+ break period is only used if it is shorter than the time remaining
+ on the lease. If longer, the time remaining on the lease is used.
+ A new lease will not be available before the break period has
+ expired, but the lease may be held for longer than the break
+ period. If this header does not appear with a break
+ operation, a fixed-duration lease breaks after the remaining lease
+ period elapses, and an infinite lease breaks immediately.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: Approximate time remaining in the lease period, in seconds.
+ :return: int
+ '''
+ if (lease_break_period is not None) and (lease_break_period < 0 or lease_break_period > 60):
+ raise ValueError(_ERROR_INVALID_LEASE_BREAK_PERIOD)
+
+ lease = self._lease_container_impl(container_name,
+ _LeaseActions.Break,
+ None, # lease_id
+ None, # lease_duration
+ lease_break_period,
+ None, # proposed_lease_id
+ if_modified_since,
+ if_unmodified_since,
+ timeout)
+ return lease['time']
+
+ def change_container_lease(
+ self, container_name, lease_id, proposed_lease_id,
+ if_modified_since=None, if_unmodified_since=None, timeout=None):
+ '''
+ Change the lease ID of an active lease. A change must include the current
+ lease ID and a new lease ID.
+
+ :param str container_name:
+ Name of existing container.
+ :param str lease_id:
+ Lease ID for active lease.
+ :param str proposed_lease_id:
+ Proposed lease ID, in a GUID string format. The Blob service returns 400
+ (Invalid request) if the proposed lease ID is not in the correct format.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('lease_id', lease_id)
+
+ self._lease_container_impl(container_name,
+ _LeaseActions.Change,
+ lease_id,
+ None, # lease_duration
+ None, # lease_break_period
+ proposed_lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ timeout)
+
+ def list_blobs(self, container_name, prefix=None, num_results=None, include=None,
+ delimiter=None, marker=None, timeout=None):
+ '''
+ Returns a generator to list the blobs under the specified container.
+ The generator will lazily follow the continuation tokens returned by
+ the service and stop when all blobs have been returned or num_results is reached.
+
+ If num_results is specified and the account has more than that number of
+ blobs, the generator will have a populated next_marker field once it
+ finishes. This marker can be used to create a new generator if more
+ results are desired.
+
+ :param str container_name:
+ Name of existing container.
+ :param str prefix:
+ Filters the results to return only blobs whose names
+ begin with the specified prefix.
+ :param int num_results:
+ Specifies the maximum number of blobs to return,
+ including all :class:`BlobPrefix` elements. If the request does not specify
+ num_results or specifies a value greater than 5,000, the server will
+ return up to 5,000 items. Setting num_results to a value less than
+ or equal to zero results in error response code 400 (Bad Request).
+ :param ~azure.storage.blob.models.Include include:
+ Specifies one or more additional datasets to include in the response.
+ :param str delimiter:
+ When the request includes this parameter, the operation
+ returns a :class:`~azure.storage.blob.models.BlobPrefix` element in the
+ result list that acts as a placeholder for all blobs whose names begin
+ with the same substring up to the appearance of the delimiter character.
+ The delimiter may be a single character or a string.
+ :param str marker:
+ An opaque continuation token. This value can be retrieved from the
+ next_marker field of a previous generator object if num_results was
+ specified and that generator has finished enumerating results. If
+ specified, this generator will begin returning results from the point
+ where the previous generator stopped.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ operation_context = _OperationContext(location_lock=True)
+ args = (container_name,)
+ kwargs = {'prefix': prefix, 'marker': marker, 'max_results': num_results,
+ 'include': include, 'delimiter': delimiter, 'timeout': timeout,
+ '_context': operation_context}
+ resp = self._list_blobs(*args, **kwargs)
+
+ return ListGenerator(resp, self._list_blobs, args, kwargs)
+
+ def _list_blobs(self, container_name, prefix=None, marker=None,
+ max_results=None, include=None, delimiter=None, timeout=None,
+ _context=None):
+ '''
+ Returns the list of blobs under the specified container.
+
+ :param str container_name:
+ Name of existing container.
+ :parm str prefix:
+ Filters the results to return only blobs whose names
+ begin with the specified prefix.
+ :param str marker:
+ A string value that identifies the portion of the list
+ to be returned with the next list operation. The operation returns
+ a next_marker value within the response body if the list returned was
+ not complete. The marker value may then be used in a subsequent
+ call to request the next set of list items. The marker value is
+ opaque to the client.
+ :param int max_results:
+ Specifies the maximum number of blobs to return,
+ including all :class:`~azure.storage.blob.models.BlobPrefix` elements. If the request does not specify
+ max_results or specifies a value greater than 5,000, the server will
+ return up to 5,000 items. Setting max_results to a value less than
+ or equal to zero results in error response code 400 (Bad Request).
+ :param str include:
+ Specifies one or more datasets to include in the
+ response. To specify more than one of these options on the URI,
+ you must separate each option with a comma. Valid values are:
+ snapshots:
+ Specifies that snapshots should be included in the
+ enumeration. Snapshots are listed from oldest to newest in
+ the response.
+ metadata:
+ Specifies that blob metadata be returned in the response.
+ uncommittedblobs:
+ Specifies that blobs for which blocks have been uploaded,
+ but which have not been committed using Put Block List
+ (REST API), be included in the response.
+ copy:
+ Version 2012-02-12 and newer. Specifies that metadata
+ related to any current or previous Copy Blob operation
+ should be included in the response.
+ deleted:
+ Version 2017-07-29 and newer. Specifies that soft deleted blobs
+ which are retained by the service should be included
+ in the response.
+ :param str delimiter:
+ When the request includes this parameter, the operation
+ returns a :class:`~azure.storage.blob.models.BlobPrefix` element in the response body that acts as a
+ placeholder for all blobs whose names begin with the same
+ substring up to the appearance of the delimiter character. The
+ delimiter may be a single character or a string.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('container_name', container_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name)
+ request.query = {
+ 'restype': 'container',
+ 'comp': 'list',
+ 'prefix': _to_str(prefix),
+ 'delimiter': _to_str(delimiter),
+ 'marker': _to_str(marker),
+ 'maxresults': _int_to_str(max_results),
+ 'include': _to_str(include),
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_blob_list, operation_context=_context)
+
+ def get_blob_service_stats(self, timeout=None):
+ '''
+ Retrieves statistics related to replication for the Blob service. It is
+ only available when read-access geo-redundant replication is enabled for
+ the storage account.
+
+ With geo-redundant replication, Azure Storage maintains your data durable
+ in two locations. In both locations, Azure Storage constantly maintains
+ multiple healthy replicas of your data. The location where you read,
+ create, update, or delete data is the primary storage account location.
+ The primary location exists in the region you choose at the time you
+ create an account via the Azure Management Azure classic portal, for
+ example, North Central US. The location to which your data is replicated
+ is the secondary location. The secondary location is automatically
+ determined based on the location of the primary; it is in a second data
+ center that resides in the same region as the primary location. Read-only
+ access is available from the secondary location, if read-access geo-redundant
+ replication is enabled for your storage account.
+
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: The blob service stats.
+ :rtype: :class:`~..common.models.ServiceStats`
+ '''
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(primary=False, secondary=True)
+ request.path = _get_path()
+ request.query = {
+ 'restype': 'service',
+ 'comp': 'stats',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_service_stats)
+
+ def set_blob_service_properties(
+ self, logging=None, hour_metrics=None, minute_metrics=None,
+ cors=None, target_version=None, timeout=None, delete_retention_policy=None):
+ '''
+ Sets the properties of a storage account's Blob service, including
+ Azure Storage Analytics. If an element (ex Logging) is left as None, the
+ existing settings on the service for that functionality are preserved.
+
+ :param logging:
+ Groups the Azure Analytics Logging settings.
+ :type logging:
+ :class:`~..common.models.Logging`
+ :param hour_metrics:
+ The hour metrics settings provide a summary of request
+ statistics grouped by API in hourly aggregates for blobs.
+ :type hour_metrics:
+ :class:`~..common.models.Metrics`
+ :param minute_metrics:
+ The minute metrics settings provide request statistics
+ for each minute for blobs.
+ :type minute_metrics:
+ :class:`~..common.models.Metrics`
+ :param cors:
+ You can include up to five CorsRule elements in the
+ list. If an empty list is specified, all CORS rules will be deleted,
+ and CORS will be disabled for the service.
+ :type cors: list(:class:`~..common.models.CorsRule`)
+ :param str target_version:
+ Indicates the default version to use for requests if an incoming
+ request's version is not specified.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param delete_retention_policy:
+ The delete retention policy specifies whether to retain deleted blobs.
+ It also specifies the number of days and versions of blob to keep.
+ :type delete_retention_policy:
+ :class:`~..common.models.DeleteRetentionPolicy`
+ '''
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path()
+ request.query = {
+ 'restype': 'service',
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.body = _get_request_body(
+ _convert_service_properties_to_xml(logging, hour_metrics, minute_metrics,
+ cors, target_version, delete_retention_policy))
+
+ self._perform_request(request)
+
+ def get_blob_service_properties(self, timeout=None):
+ '''
+ Gets the properties of a storage account's Blob service, including
+ Azure Storage Analytics.
+
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: The blob :class:`~..common.models.ServiceProperties` with an attached
+ target_version property.
+ '''
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path()
+ request.query = {
+ 'restype': 'service',
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_service_properties)
+
+ def get_blob_properties(
+ self, container_name, blob_name, snapshot=None, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Returns all user-defined metadata, standard HTTP properties, and
+ system properties for the blob. It does not return the content of the blob.
+ Returns :class:`~azure.storage.blob.models.Blob`
+ with :class:`~azure.storage.blob.models.BlobProperties` and a metadata dict.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the blob snapshot to retrieve.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: a blob object including properties and metadata.
+ :rtype: :class:`~azure.storage.blob.models.Blob`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'HEAD'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'snapshot': _to_str(snapshot),
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+
+ return self._perform_request(request, _parse_blob, [blob_name, snapshot])
+
+ def set_blob_properties(
+ self, container_name, blob_name, content_settings=None, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Sets system properties on the blob. If one property is set for the
+ content_settings, all properties will be overriden.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set blob properties.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ 'x-ms-lease-id': _to_str(lease_id)
+ }
+ if content_settings is not None:
+ request.headers.update(content_settings._to_headers())
+
+ return self._perform_request(request, _parse_base_properties)
+
+ def exists(self, container_name, blob_name=None, snapshot=None, timeout=None):
+ '''
+ Returns a boolean indicating whether the container exists (if blob_name
+ is None), or otherwise a boolean indicating whether the blob exists.
+
+ :param str container_name:
+ Name of a container.
+ :param str blob_name:
+ Name of a blob. If None, the container will be checked for existence.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the snapshot.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: A boolean indicating whether the resource exists.
+ :rtype: bool
+ '''
+ _validate_not_none('container_name', container_name)
+ try:
+ if blob_name is None:
+ self.get_container_properties(container_name, timeout=timeout)
+ else:
+ self.get_blob_properties(container_name, blob_name, snapshot=snapshot, timeout=timeout)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_not_exist(ex)
+ return False
+
+ def _get_blob(
+ self, container_name, blob_name, snapshot=None, start_range=None,
+ end_range=None, validate_content=False, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None,
+ _context=None):
+ '''
+ Downloads a blob's content, metadata, and properties. You can also
+ call this API to read a snapshot. You can specify a range if you don't
+ need to download the blob in its entirety. If no range is specified,
+ the full blob will be downloaded.
+
+ See get_blob_to_* for high level functions that handle the download
+ of large blobs with automatic chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the blob snapshot to retrieve.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the blob.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param int end_range:
+ End of byte range to use for downloading a section of the blob.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param bool validate_content:
+ When this is set to True and specified together with the Range header,
+ the service returns the MD5 hash for the range, as long as the range
+ is less than or equal to 4 MB in size.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: A Blob with content, properties, and metadata.
+ :rtype: :class:`~azure.storage.blob.models.Blob`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_decryption_required(self.require_encryption,
+ self.key_encryption_key,
+ self.key_resolver_function)
+
+ start_offset, end_offset = 0, 0
+ if self.key_encryption_key is not None or self.key_resolver_function is not None:
+ if start_range is not None:
+ # Align the start of the range along a 16 byte block
+ start_offset = start_range % 16
+ start_range -= start_offset
+
+ # Include an extra 16 bytes for the IV if necessary
+ # Because of the previous offsetting, start_range will always
+ # be a multiple of 16.
+ if start_range > 0:
+ start_offset += 16
+ start_range -= 16
+
+ if end_range is not None:
+ # Align the end of the range along a 16 byte block
+ end_offset = 15 - (end_range % 16)
+ end_range += end_offset
+
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'snapshot': _to_str(snapshot),
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+ _validate_and_format_range_headers(
+ request,
+ start_range,
+ end_range,
+ start_range_required=False,
+ end_range_required=False,
+ check_content_md5=validate_content)
+
+ return self._perform_request(request, _parse_blob,
+ [blob_name, snapshot, validate_content, self.require_encryption,
+ self.key_encryption_key, self.key_resolver_function,
+ start_offset, end_offset],
+ operation_context=_context)
+
+ def get_blob_to_path(
+ self, container_name, blob_name, file_path, open_mode='wb',
+ snapshot=None, start_range=None, end_range=None,
+ validate_content=False, progress_callback=None,
+ max_connections=2, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None,
+ timeout=None):
+ '''
+ Downloads a blob to a file path, with automatic chunking and progress
+ notifications. Returns an instance of :class:`~azure.storage.blob.models.Blob` with
+ properties and metadata.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str file_path:
+ Path of file to write out to.
+ :param str open_mode:
+ Mode to use when opening the file. Note that specifying append only
+ open_mode prevents parallel download. So, max_connections must be set
+ to 1 if this open_mode is used.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the blob snapshot to retrieve.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the blob.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param int end_range:
+ End of byte range to use for downloading a section of the blob.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param bool validate_content:
+ If set to true, validates an MD5 hash for each retrieved portion of
+ the blob. This is primarily valuable for detecting bitflips on the wire
+ if using http instead of https as https (the default) will already
+ validate. Note that the service will only return transactional MD5s
+ for chunks 4MB or less so the first get request will be of size
+ self.MAX_CHUNK_GET_SIZE instead of self.MAX_SINGLE_GET_SIZE. If
+ self.MAX_CHUNK_GET_SIZE was set to greater than 4MB an error will be
+ thrown. As computing the MD5 takes processing time and more requests
+ will need to be done due to the reduced chunk size there may be some
+ increase in latency.
+ :param progress_callback:
+ Callback for progress with signature function(current, total)
+ where current is the number of bytes transfered so far, and total is
+ the size of the blob if known.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ If set to 2 or greater, an initial get will be done for the first
+ self.MAX_SINGLE_GET_SIZE bytes of the blob. If this is the entire blob,
+ the method returns at this point. If it is not, it will download the
+ remaining data parallel using the number of threads equal to
+ max_connections. Each chunk will be of size self.MAX_CHUNK_GET_SIZE.
+ If set to 1, a single large get request will be done. This is not
+ generally recommended but available if very few threads should be
+ used, network requests are very expensive, or a non-seekable stream
+ prevents parallel download. This may also be useful if many blobs are
+ expected to be empty as an extra request is required for empty blobs
+ if max_connections is greater than 1.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: A Blob with properties and metadata. If max_connections is greater
+ than 1, the content_md5 (if set on the blob) will not be returned. If you
+ require this value, either use get_blob_properties or set max_connections
+ to 1.
+ :rtype: :class:`~azure.storage.blob.models.Blob`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('file_path', file_path)
+ _validate_not_none('open_mode', open_mode)
+
+ if max_connections > 1 and 'a' in open_mode:
+ raise ValueError(_ERROR_PARALLEL_NOT_SEEKABLE)
+
+ with open(file_path, open_mode) as stream:
+ blob = self.get_blob_to_stream(
+ container_name,
+ blob_name,
+ stream,
+ snapshot,
+ start_range,
+ end_range,
+ validate_content,
+ progress_callback,
+ max_connections,
+ lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout)
+
+ return blob
+
+ def get_blob_to_stream(
+ self, container_name, blob_name, stream, snapshot=None,
+ start_range=None, end_range=None, validate_content=False,
+ progress_callback=None, max_connections=2, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+
+ '''
+ Downloads a blob to a stream, with automatic chunking and progress
+ notifications. Returns an instance of :class:`~azure.storage.blob.models.Blob` with
+ properties and metadata.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param io.IOBase stream:
+ Opened stream to write to.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the blob snapshot to retrieve.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the blob.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param int end_range:
+ End of byte range to use for downloading a section of the blob.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param bool validate_content:
+ If set to true, validates an MD5 hash for each retrieved portion of
+ the blob. This is primarily valuable for detecting bitflips on the wire
+ if using http instead of https as https (the default) will already
+ validate. Note that the service will only return transactional MD5s
+ for chunks 4MB or less so the first get request will be of size
+ self.MAX_CHUNK_GET_SIZE instead of self.MAX_SINGLE_GET_SIZE. If
+ self.MAX_CHUNK_GET_SIZE was set to greater than 4MB an error will be
+ thrown. As computing the MD5 takes processing time and more requests
+ will need to be done due to the reduced chunk size there may be some
+ increase in latency.
+ :param progress_callback:
+ Callback for progress with signature function(current, total)
+ where current is the number of bytes transfered so far, and total is
+ the size of the blob if known.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ If set to 2 or greater, an initial get will be done for the first
+ self.MAX_SINGLE_GET_SIZE bytes of the blob. If this is the entire blob,
+ the method returns at this point. If it is not, it will download the
+ remaining data parallel using the number of threads equal to
+ max_connections. Each chunk will be of size self.MAX_CHUNK_GET_SIZE.
+ If set to 1, a single large get request will be done. This is not
+ generally recommended but available if very few threads should be
+ used, network requests are very expensive, or a non-seekable stream
+ prevents parallel download. This may also be useful if many blobs are
+ expected to be empty as an extra request is required for empty blobs
+ if max_connections is greater than 1.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: A Blob with properties and metadata. If max_connections is greater
+ than 1, the content_md5 (if set on the blob) will not be returned. If you
+ require this value, either use get_blob_properties or set max_connections
+ to 1.
+ :rtype: :class:`~azure.storage.blob.models.Blob`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('stream', stream)
+
+ if end_range is not None:
+ _validate_not_none("start_range", start_range)
+
+ # If the user explicitly sets max_connections to 1, do a single shot download
+ if max_connections == 1:
+ blob = self._get_blob(container_name,
+ blob_name,
+ snapshot,
+ start_range=start_range,
+ end_range=end_range,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout)
+
+ # Set the download size
+ download_size = blob.properties.content_length
+
+ # If max_connections is greater than 1, do the first get to establish the
+ # size of the blob and get the first segment of data
+ else:
+ if sys.version_info >= (3,) and not stream.seekable():
+ raise ValueError(_ERROR_PARALLEL_NOT_SEEKABLE)
+
+ # The service only provides transactional MD5s for chunks under 4MB.
+ # If validate_content is on, get only self.MAX_CHUNK_GET_SIZE for the first
+ # chunk so a transactional MD5 can be retrieved.
+ first_get_size = self.MAX_SINGLE_GET_SIZE if not validate_content else self.MAX_CHUNK_GET_SIZE
+
+ initial_request_start = start_range if start_range is not None else 0
+
+ if end_range is not None and end_range - start_range < first_get_size:
+ initial_request_end = end_range
+ else:
+ initial_request_end = initial_request_start + first_get_size - 1
+
+ # Send a context object to make sure we always retry to the initial location
+ operation_context = _OperationContext(location_lock=True)
+ try:
+ blob = self._get_blob(container_name,
+ blob_name,
+ snapshot,
+ start_range=initial_request_start,
+ end_range=initial_request_end,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout,
+ _context=operation_context)
+
+ # Parse the total blob size and adjust the download size if ranges
+ # were specified
+ blob_size = _parse_length_from_content_range(blob.properties.content_range)
+ if end_range is not None:
+ # Use the end_range unless it is over the end of the blob
+ download_size = min(blob_size, end_range - start_range + 1)
+ elif start_range is not None:
+ download_size = blob_size - start_range
+ else:
+ download_size = blob_size
+ except AzureHttpError as ex:
+ if start_range is None and ex.status_code == 416:
+ # Get range will fail on an empty blob. If the user did not
+ # request a range, do a regular get request in order to get
+ # any properties.
+ blob = self._get_blob(container_name,
+ blob_name,
+ snapshot,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout,
+ _context=operation_context)
+
+ # Set the download size to empty
+ download_size = 0
+ else:
+ raise ex
+
+ # Mark the first progress chunk. If the blob is small or this is a single
+ # shot download, this is the only call
+ if progress_callback:
+ progress_callback(blob.properties.content_length, download_size)
+
+ # Write the content to the user stream
+ # Clear blob content since output has been written to user stream
+ if blob.content is not None:
+ stream.write(blob.content)
+ blob.content = None
+
+ # If the blob is small or single shot download was used, the download is
+ # complete at this point. If blob size is large, use parallel download.
+ if blob.properties.content_length != download_size:
+ # Lock on the etag. This can be overriden by the user by specifying '*'
+ if_match = if_match if if_match is not None else blob.properties.etag
+
+ end_blob = blob_size
+ if end_range is not None:
+ # Use the end_range unless it is over the end of the blob
+ end_blob = min(blob_size, end_range + 1)
+
+ _download_blob_chunks(
+ self,
+ container_name,
+ blob_name,
+ snapshot,
+ download_size,
+ self.MAX_CHUNK_GET_SIZE,
+ first_get_size,
+ initial_request_end + 1, # start where the first download ended
+ end_blob,
+ stream,
+ max_connections,
+ progress_callback,
+ validate_content,
+ lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout,
+ operation_context
+ )
+
+ # Set the content length to the download size instead of the size of
+ # the last range
+ blob.properties.content_length = download_size
+
+ # Overwrite the content range to the user requested range
+ blob.properties.content_range = 'bytes {0}-{1}/{2}'.format(start_range, end_range, blob_size)
+
+ # Overwrite the content MD5 as it is the MD5 for the last range instead
+ # of the stored MD5
+ # TODO: Set to the stored MD5 when the service returns this
+ blob.properties.content_md5 = None
+
+ return blob
+
+ def get_blob_to_bytes(
+ self, container_name, blob_name, snapshot=None,
+ start_range=None, end_range=None, validate_content=False,
+ progress_callback=None, max_connections=2, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Downloads a blob as an array of bytes, with automatic chunking and
+ progress notifications. Returns an instance of :class:`~azure.storage.blob.models.Blob` with
+ properties, metadata, and content.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the blob snapshot to retrieve.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the blob.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param int end_range:
+ End of byte range to use for downloading a section of the blob.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param bool validate_content:
+ If set to true, validates an MD5 hash for each retrieved portion of
+ the blob. This is primarily valuable for detecting bitflips on the wire
+ if using http instead of https as https (the default) will already
+ validate. Note that the service will only return transactional MD5s
+ for chunks 4MB or less so the first get request will be of size
+ self.MAX_CHUNK_GET_SIZE instead of self.MAX_SINGLE_GET_SIZE. If
+ self.MAX_CHUNK_GET_SIZE was set to greater than 4MB an error will be
+ thrown. As computing the MD5 takes processing time and more requests
+ will need to be done due to the reduced chunk size there may be some
+ increase in latency.
+ :param progress_callback:
+ Callback for progress with signature function(current, total)
+ where current is the number of bytes transfered so far, and total is
+ the size of the blob if known.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ If set to 2 or greater, an initial get will be done for the first
+ self.MAX_SINGLE_GET_SIZE bytes of the blob. If this is the entire blob,
+ the method returns at this point. If it is not, it will download the
+ remaining data parallel using the number of threads equal to
+ max_connections. Each chunk will be of size self.MAX_CHUNK_GET_SIZE.
+ If set to 1, a single large get request will be done. This is not
+ generally recommended but available if very few threads should be
+ used, network requests are very expensive, or a non-seekable stream
+ prevents parallel download. This may also be useful if many blobs are
+ expected to be empty as an extra request is required for empty blobs
+ if max_connections is greater than 1.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: A Blob with properties and metadata. If max_connections is greater
+ than 1, the content_md5 (if set on the blob) will not be returned. If you
+ require this value, either use get_blob_properties or set max_connections
+ to 1.
+ :rtype: :class:`~azure.storage.blob.models.Blob`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+
+ stream = BytesIO()
+ blob = self.get_blob_to_stream(
+ container_name,
+ blob_name,
+ stream,
+ snapshot,
+ start_range,
+ end_range,
+ validate_content,
+ progress_callback,
+ max_connections,
+ lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout)
+
+ blob.content = stream.getvalue()
+ return blob
+
+ def get_blob_to_text(
+ self, container_name, blob_name, encoding='utf-8', snapshot=None,
+ start_range=None, end_range=None, validate_content=False,
+ progress_callback=None, max_connections=2, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Downloads a blob as unicode text, with automatic chunking and progress
+ notifications. Returns an instance of :class:`~azure.storage.blob.models.Blob` with
+ properties, metadata, and content.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str encoding:
+ Python encoding to use when decoding the blob data.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the blob snapshot to retrieve.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the blob.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param int end_range:
+ End of byte range to use for downloading a section of the blob.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of blob.
+ :param bool validate_content:
+ If set to true, validates an MD5 hash for each retrieved portion of
+ the blob. This is primarily valuable for detecting bitflips on the wire
+ if using http instead of https as https (the default) will already
+ validate. Note that the service will only return transactional MD5s
+ for chunks 4MB or less so the first get request will be of size
+ self.MAX_CHUNK_GET_SIZE instead of self.MAX_SINGLE_GET_SIZE. If
+ self.MAX_CHUNK_GET_SIZE was set to greater than 4MB an error will be
+ thrown. As computing the MD5 takes processing time and more requests
+ will need to be done due to the reduced chunk size there may be some
+ increase in latency.
+ :param progress_callback:
+ Callback for progress with signature function(current, total)
+ where current is the number of bytes transfered so far, and total is
+ the size of the blob if known.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ If set to 2 or greater, an initial get will be done for the first
+ self.MAX_SINGLE_GET_SIZE bytes of the blob. If this is the entire blob,
+ the method returns at this point. If it is not, it will download the
+ remaining data parallel using the number of threads equal to
+ max_connections. Each chunk will be of size self.MAX_CHUNK_GET_SIZE.
+ If set to 1, a single large get request will be done. This is not
+ generally recommended but available if very few threads should be
+ used, network requests are very expensive, or a non-seekable stream
+ prevents parallel download. This may also be useful if many blobs are
+ expected to be empty as an extra request is required for empty blobs
+ if max_connections is greater than 1.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: A Blob with properties and metadata. If max_connections is greater
+ than 1, the content_md5 (if set on the blob) will not be returned. If you
+ require this value, either use get_blob_properties or set max_connections
+ to 1.
+ :rtype: :class:`~azure.storage.blob.models.Blob`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('encoding', encoding)
+
+ blob = self.get_blob_to_bytes(container_name,
+ blob_name,
+ snapshot,
+ start_range,
+ end_range,
+ validate_content,
+ progress_callback,
+ max_connections,
+ lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout)
+ blob.content = blob.content.decode(encoding)
+ return blob
+
+ def get_blob_metadata(
+ self, container_name, blob_name, snapshot=None, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Returns all user-defined metadata for the specified blob or snapshot.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str snapshot:
+ The snapshot parameter is an opaque value that,
+ when present, specifies the blob snapshot to retrieve.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return:
+ A dictionary representing the blob metadata name, value pairs.
+ :rtype: dict(str, str)
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'snapshot': _to_str(snapshot),
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+
+ return self._perform_request(request, _parse_metadata)
+
+ def set_blob_metadata(self, container_name, blob_name,
+ metadata=None, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None):
+ '''
+ Sets user-defined metadata for the specified blob as one or more
+ name-value pairs.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param metadata:
+ Dict containing name and value pairs. Each call to this operation
+ replaces all existing metadata attached to the blob. To remove all
+ metadata from the blob, call this operation with no metadata headers.
+ :type metadata: dict(str, str)
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ 'x-ms-lease-id': _to_str(lease_id),
+ }
+ _add_metadata_headers(metadata, request)
+
+ return self._perform_request(request, _parse_base_properties)
+
+ def _lease_blob_impl(self, container_name, blob_name,
+ lease_action, lease_id,
+ lease_duration, lease_break_period,
+ proposed_lease_id, if_modified_since,
+ if_unmodified_since, if_match, if_none_match, timeout=None):
+ '''
+ Establishes and manages a lease on a blob for write and delete operations.
+ The Lease Blob operation can be called in one of five modes:
+ Acquire, to request a new lease.
+ Renew, to renew an existing lease.
+ Change, to change the ID of an existing lease.
+ Release, to free the lease if it is no longer needed so that another
+ client may immediately acquire a lease against the blob.
+ Break, to end the lease but ensure that another client cannot acquire
+ a new lease until the current lease period has expired.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str lease_action:
+ Possible _LeaseActions acquire|renew|release|break|change
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int lease_duration:
+ Specifies the duration of the lease, in seconds, or negative one
+ (-1) for a lease that never expires. A non-infinite lease can be
+ between 15 and 60 seconds. A lease duration cannot be changed
+ using renew or change.
+ :param int lease_break_period:
+ For a break operation, this is the proposed duration of
+ seconds that the lease should continue before it is broken, between
+ 0 and 60 seconds. This break period is only used if it is shorter
+ than the time remaining on the lease. If longer, the time remaining
+ on the lease is used. A new lease will not be available before the
+ break period has expired, but the lease may be held for longer than
+ the break period. If this header does not appear with a break
+ operation, a fixed-duration lease breaks after the remaining lease
+ period elapses, and an infinite lease breaks immediately.
+ :param str proposed_lease_id:
+ Optional for acquire, required for change. Proposed lease ID, in a
+ GUID string format. The Blob service returns 400 (Invalid request)
+ if the proposed lease ID is not in the correct format.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return:
+ Response headers returned from the service call.
+ :rtype: dict(str, str)
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('lease_action', lease_action)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'lease',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'x-ms-lease-action': _to_str(lease_action),
+ 'x-ms-lease-duration': _to_str(lease_duration),
+ 'x-ms-lease-break-period': _to_str(lease_break_period),
+ 'x-ms-proposed-lease-id': _to_str(proposed_lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+
+ return self._perform_request(request, _parse_lease)
+
+ def acquire_blob_lease(self, container_name, blob_name,
+ lease_duration=-1,
+ proposed_lease_id=None,
+ if_modified_since=None,
+ if_unmodified_since=None,
+ if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Requests a new lease. If the blob does not have an active lease, the Blob
+ service creates a lease on the blob and returns a new lease ID.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param int lease_duration:
+ Specifies the duration of the lease, in seconds, or negative one
+ (-1) for a lease that never expires. A non-infinite lease can be
+ between 15 and 60 seconds. A lease duration cannot be changed
+ using renew or change. Default is -1 (infinite lease).
+ :param str proposed_lease_id:
+ Proposed lease ID, in a GUID string format. The Blob service
+ returns 400 (Invalid request) if the proposed lease ID is not
+ in the correct format.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: the lease ID of the newly created lease.
+ :return: str
+ '''
+ _validate_not_none('lease_duration', lease_duration)
+
+ if lease_duration is not -1 and \
+ (lease_duration < 15 or lease_duration > 60):
+ raise ValueError(_ERROR_INVALID_LEASE_DURATION)
+ lease = self._lease_blob_impl(container_name,
+ blob_name,
+ _LeaseActions.Acquire,
+ None, # lease_id
+ lease_duration,
+ None, # lease_break_period
+ proposed_lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout)
+ return lease['id']
+
+ def renew_blob_lease(self, container_name, blob_name,
+ lease_id, if_modified_since=None,
+ if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Renews the lease. The lease can be renewed if the lease ID specified on
+ the request matches that associated with the blob. Note that the lease may
+ be renewed even if it has expired as long as the blob has not been modified
+ or leased again since the expiration of that lease. When you renew a lease,
+ the lease duration clock resets.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str lease_id:
+ Lease ID for active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: the lease ID of the renewed lease.
+ :return: str
+ '''
+ _validate_not_none('lease_id', lease_id)
+
+ lease = self._lease_blob_impl(container_name,
+ blob_name,
+ _LeaseActions.Renew,
+ lease_id,
+ None, # lease_duration
+ None, # lease_break_period
+ None, # proposed_lease_id
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout)
+ return lease['id']
+
+ def release_blob_lease(self, container_name, blob_name,
+ lease_id, if_modified_since=None,
+ if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Releases the lease. The lease may be released if the lease ID specified on the
+ request matches that associated with the blob. Releasing the lease allows another
+ client to immediately acquire the lease for the blob as soon as the release is complete.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str lease_id:
+ Lease ID for active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('lease_id', lease_id)
+
+ self._lease_blob_impl(container_name,
+ blob_name,
+ _LeaseActions.Release,
+ lease_id,
+ None, # lease_duration
+ None, # lease_break_period
+ None, # proposed_lease_id
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout)
+
+ def break_blob_lease(self, container_name, blob_name,
+ lease_break_period=None,
+ if_modified_since=None,
+ if_unmodified_since=None,
+ if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Breaks the lease, if the blob has an active lease. Once a lease is broken,
+ it cannot be renewed. Any authorized request can break the lease; the request
+ is not required to specify a matching lease ID. When a lease is broken,
+ the lease break period is allowed to elapse, during which time no lease operation
+ except break and release can be performed on the blob. When a lease is successfully
+ broken, the response indicates the interval in seconds until a new lease can be acquired.
+
+ A lease that has been broken can also be released, in which case another client may
+ immediately acquire the lease on the blob.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param int lease_break_period:
+ For a break operation, this is the proposed duration of
+ seconds that the lease should continue before it is broken, between
+ 0 and 60 seconds. This break period is only used if it is shorter
+ than the time remaining on the lease. If longer, the time remaining
+ on the lease is used. A new lease will not be available before the
+ break period has expired, but the lease may be held for longer than
+ the break period. If this header does not appear with a break
+ operation, a fixed-duration lease breaks after the remaining lease
+ period elapses, and an infinite lease breaks immediately.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: Approximate time remaining in the lease period, in seconds.
+ :return: int
+ '''
+ if (lease_break_period is not None) and (lease_break_period < 0 or lease_break_period > 60):
+ raise ValueError(_ERROR_INVALID_LEASE_BREAK_PERIOD)
+
+ lease = self._lease_blob_impl(container_name,
+ blob_name,
+ _LeaseActions.Break,
+ None, # lease_id
+ None, # lease_duration
+ lease_break_period,
+ None, # proposed_lease_id
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout)
+ return lease['time']
+
+ def change_blob_lease(self, container_name, blob_name,
+ lease_id,
+ proposed_lease_id,
+ if_modified_since=None,
+ if_unmodified_since=None,
+ if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Changes the lease ID of an active lease. A change must include the current
+ lease ID and a new lease ID.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param str proposed_lease_id:
+ Proposed lease ID, in a GUID string format. The Blob service returns
+ 400 (Invalid request) if the proposed lease ID is not in the correct format.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ self._lease_blob_impl(container_name,
+ blob_name,
+ _LeaseActions.Change,
+ lease_id,
+ None, # lease_duration
+ None, # lease_break_period
+ proposed_lease_id,
+ if_modified_since,
+ if_unmodified_since,
+ if_match,
+ if_none_match,
+ timeout)
+
+ def snapshot_blob(self, container_name, blob_name,
+ metadata=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None,
+ if_none_match=None, lease_id=None, timeout=None):
+ '''
+ Creates a read-only snapshot of a blob.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param metadata:
+ Specifies a user-defined name-value pair associated with the blob.
+ If no name-value pairs are specified, the operation will copy the
+ base blob metadata to the snapshot. If one or more name-value pairs
+ are specified, the snapshot is created with the specified metadata,
+ and metadata is not copied from the base blob.
+ :type metadata: dict(str, str)
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: snapshot properties
+ :rtype: :class:`~azure.storage.blob.models.Blob`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'snapshot',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ 'x-ms-lease-id': _to_str(lease_id)
+ }
+ _add_metadata_headers(metadata, request)
+
+ return self._perform_request(request, _parse_snapshot_blob, [blob_name])
+
+ def copy_blob(self, container_name, blob_name, copy_source,
+ metadata=None,
+ source_if_modified_since=None,
+ source_if_unmodified_since=None,
+ source_if_match=None, source_if_none_match=None,
+ destination_if_modified_since=None,
+ destination_if_unmodified_since=None,
+ destination_if_match=None,
+ destination_if_none_match=None,
+ destination_lease_id=None,
+ source_lease_id=None, timeout=None):
+ '''
+ Copies a blob asynchronously. This operation returns a copy operation
+ properties object, including a copy ID you can use to check or abort the
+ copy operation. The Blob service copies blobs on a best-effort basis.
+
+ The source blob for a copy operation may be a block blob, an append blob,
+ or a page blob. If the destination blob already exists, it must be of the
+ same blob type as the source blob. Any existing destination blob will be
+ overwritten. The destination blob cannot be modified while a copy operation
+ is in progress.
+
+ When copying from a page blob, the Blob service creates a destination page
+ blob of the source blob's length, initially containing all zeroes. Then
+ the source page ranges are enumerated, and non-empty ranges are copied.
+
+ For a block blob or an append blob, the Blob service creates a committed
+ blob of zero length before returning from this operation. When copying
+ from a block blob, all committed blocks and their block IDs are copied.
+ Uncommitted blocks are not copied. At the end of the copy operation, the
+ destination blob will have the same committed block count as the source.
+
+ When copying from an append blob, all committed blocks are copied. At the
+ end of the copy operation, the destination blob will have the same committed
+ block count as the source.
+
+ For all blob types, you can call get_blob_properties on the destination
+ blob to check the status of the copy operation. The final blob will be
+ committed when the copy completes.
+
+ :param str container_name:
+ Name of the destination container. The container must exist.
+ :param str blob_name:
+ Name of the destination blob. If the destination blob exists, it will
+ be overwritten. Otherwise, it will be created.
+ :param str copy_source:
+ A URL of up to 2 KB in length that specifies an Azure file or blob.
+ The value should be URL-encoded as it would appear in a request URI.
+ If the source is in another account, the source must either be public
+ or must be authenticated via a shared access signature. If the source
+ is public, no authentication is required.
+ Examples:
+ https://myaccount.blob.core.windows.net/mycontainer/myblob
+ https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=
+ https://otheraccount.blob.core.windows.net/mycontainer/myblob?sastoken
+ :param metadata:
+ Name-value pairs associated with the blob as metadata. If no name-value
+ pairs are specified, the operation will copy the metadata from the
+ source blob or file to the destination blob. If one or more name-value
+ pairs are specified, the destination blob is created with the specified
+ metadata, and metadata is not copied from the source blob or file.
+ :type metadata: dict(str, str)
+ :param datetime source_if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only if the source
+ blob has been modified since the specified date/time.
+ :param datetime source_if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only if the source blob
+ has not been modified since the specified date/time.
+ :param ETag source_if_match:
+ An ETag value, or the wildcard character (*). Specify this conditional
+ header to copy the source blob only if its ETag matches the value
+ specified. If the ETag values do not match, the Blob service returns
+ status code 412 (Precondition Failed). This header cannot be specified
+ if the source is an Azure File.
+ :param ETag source_if_none_match:
+ An ETag value, or the wildcard character (*). Specify this conditional
+ header to copy the blob only if its ETag does not match the value
+ specified. If the values are identical, the Blob service returns status
+ code 412 (Precondition Failed). This header cannot be specified if the
+ source is an Azure File.
+ :param datetime destination_if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only
+ if the destination blob has been modified since the specified date/time.
+ If the destination blob has not been modified, the Blob service returns
+ status code 412 (Precondition Failed).
+ :param datetime destination_if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only
+ if the destination blob has not been modified since the specified
+ date/time. If the destination blob has been modified, the Blob service
+ returns status code 412 (Precondition Failed).
+ :param ETag destination_if_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for
+ this conditional header to copy the blob only if the specified ETag value
+ matches the ETag value for an existing destination blob. If the ETag for
+ the destination blob does not match the ETag specified for If-Match, the
+ Blob service returns status code 412 (Precondition Failed).
+ :param ETag destination_if_none_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for
+ this conditional header to copy the blob only if the specified ETag value
+ does not match the ETag value for the destination blob. Specify the wildcard
+ character (*) to perform the operation only if the destination blob does not
+ exist. If the specified condition isn't met, the Blob service returns status
+ code 412 (Precondition Failed).
+ :param str destination_lease_id:
+ The lease ID specified for this header must match the lease ID of the
+ destination blob. If the request does not include the lease ID or it is not
+ valid, the operation fails with status code 412 (Precondition Failed).
+ :param str source_lease_id:
+ Specify this to perform the Copy Blob operation only if
+ the lease ID given matches the active lease ID of the source blob.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: Copy operation properties such as status, source, and ID.
+ :rtype: :class:`~azure.storage.blob.models.CopyProperties`
+ '''
+ return self._copy_blob(container_name, blob_name, copy_source,
+ metadata,
+ None,
+ source_if_modified_since, source_if_unmodified_since,
+ source_if_match, source_if_none_match,
+ destination_if_modified_since,
+ destination_if_unmodified_since,
+ destination_if_match,
+ destination_if_none_match,
+ destination_lease_id,
+ source_lease_id, timeout,
+ False)
+
+ def _copy_blob(self, container_name, blob_name, copy_source,
+ metadata=None,
+ premium_page_blob_tier=None,
+ source_if_modified_since=None,
+ source_if_unmodified_since=None,
+ source_if_match=None, source_if_none_match=None,
+ destination_if_modified_since=None,
+ destination_if_unmodified_since=None,
+ destination_if_match=None,
+ destination_if_none_match=None,
+ destination_lease_id=None,
+ source_lease_id=None, timeout=None,
+ incremental_copy=False):
+ '''
+ See copy_blob for more details. This helper method
+ allows for standard copies as well as incremental copies which are only supported for page blobs.
+ :param bool incremental_copy:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('copy_source', copy_source)
+
+ if copy_source.startswith('/'):
+ # Backwards compatibility for earlier versions of the SDK where
+ # the copy source can be in the following formats:
+ # - Blob in named container:
+ # /accountName/containerName/blobName
+ # - Snapshot in named container:
+ # /accountName/containerName/blobName?snapshot=
+ # - Blob in root container:
+ # /accountName/blobName
+ # - Snapshot in root container:
+ # /accountName/blobName?snapshot=
+ account, _, source = \
+ copy_source.partition('/')[2].partition('/')
+ copy_source = self.protocol + '://' + \
+ self.primary_endpoint + '/' + source
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+
+ if incremental_copy:
+ request.query = {
+ 'comp': 'incrementalcopy',
+ 'timeout': _int_to_str(timeout),
+ }
+ else:
+ request.query = {'timeout': _int_to_str(timeout)}
+
+ request.headers = {
+ 'x-ms-copy-source': _to_str(copy_source),
+ 'x-ms-source-if-modified-since': _to_str(source_if_modified_since),
+ 'x-ms-source-if-unmodified-since': _to_str(source_if_unmodified_since),
+ 'x-ms-source-if-match': _to_str(source_if_match),
+ 'x-ms-source-if-none-match': _to_str(source_if_none_match),
+ 'If-Modified-Since': _datetime_to_utc_string(destination_if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(destination_if_unmodified_since),
+ 'If-Match': _to_str(destination_if_match),
+ 'If-None-Match': _to_str(destination_if_none_match),
+ 'x-ms-lease-id': _to_str(destination_lease_id),
+ 'x-ms-source-lease-id': _to_str(source_lease_id),
+ 'x-ms-access-tier': _to_str(premium_page_blob_tier)
+ }
+ _add_metadata_headers(metadata, request)
+
+ return self._perform_request(request, _parse_properties, [BlobProperties]).copy
+
+ def abort_copy_blob(self, container_name, blob_name, copy_id,
+ lease_id=None, timeout=None):
+ '''
+ Aborts a pending copy_blob operation, and leaves a destination blob
+ with zero length and full metadata.
+
+ :param str container_name:
+ Name of destination container.
+ :param str blob_name:
+ Name of destination blob.
+ :param str copy_id:
+ Copy identifier provided in the copy.id of the original
+ copy_blob operation.
+ :param str lease_id:
+ Required if the destination blob has an active infinite lease.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('copy_id', copy_id)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'copy',
+ 'copyid': _to_str(copy_id),
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'x-ms-copy-action': 'abort',
+ }
+
+ self._perform_request(request)
+
+ def delete_blob(self, container_name, blob_name, snapshot=None,
+ lease_id=None, delete_snapshots=None,
+ if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None):
+ '''
+ Marks the specified blob or snapshot for deletion.
+ The blob is later deleted during garbage collection.
+
+ Note that in order to delete a blob, you must delete all of its
+ snapshots. You can delete both at the same time with the Delete
+ Blob operation.
+
+ If a delete retention policy is enabled for the service, then this operation soft deletes the blob or snapshot
+ and retains the blob or snapshot for specified number of days.
+ After specified number of days, blob's data is removed from the service during garbage collection.
+ Soft deleted blob or snapshot is accessible through List Blobs API specifying include=Include.Deleted option.
+ Soft-deleted blob or snapshot can be restored using Undelete API.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the blob snapshot to delete.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param ~azure.storage.blob.models.DeleteSnapshot delete_snapshots:
+ Required if the blob has associated snapshots.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'DELETE'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'x-ms-delete-snapshots': _to_str(delete_snapshots),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+ request.query = {
+ 'snapshot': _to_str(snapshot),
+ 'timeout': _int_to_str(timeout)
+ }
+
+ self._perform_request(request)
+
+ def undelete_blob(self, container_name, blob_name, timeout=None):
+ '''
+ The undelete Blob operation restores the contents and metadata of soft deleted blob or snapshot.
+ Attempting to undelete a blob or snapshot that is not soft deleted will succeed without any changes.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'undelete',
+ 'timeout': _int_to_str(timeout)
+ }
+
+ self._perform_request(request)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/blockblobservice.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/blockblobservice.py
new file mode 100644
index 00000000000..aafed26b94a
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/blockblobservice.py
@@ -0,0 +1,1007 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from io import (
+ BytesIO
+)
+from os import (
+ path,
+)
+
+from ..common._common_conversion import (
+ _encode_base64,
+ _to_str,
+ _int_to_str,
+ _datetime_to_utc_string,
+ _get_content_md5,
+)
+from ..common._constants import (
+ SERVICE_HOST_BASE,
+ DEFAULT_PROTOCOL,
+)
+from ..common._error import (
+ _validate_not_none,
+ _validate_type_bytes,
+ _validate_encryption_required,
+ _validate_encryption_unsupported,
+ _ERROR_VALUE_NEGATIVE,
+ _ERROR_VALUE_SHOULD_BE_STREAM
+)
+from ..common._http import HTTPRequest
+from ..common._serialization import (
+ _get_request_body,
+ _get_data_bytes_only,
+ _get_data_bytes_or_stream_only,
+ _add_metadata_headers,
+)
+from ..common._serialization import (
+ _len_plus
+)
+from ._deserialization import (
+ _convert_xml_to_block_list,
+ _parse_base_properties,
+)
+from ._encryption import (
+ _encrypt_blob,
+ _generate_blob_encryption_data,
+)
+from ._serialization import (
+ _convert_block_list_to_xml,
+ _get_path,
+)
+from ._upload_chunking import (
+ _BlockBlobChunkUploader,
+ _upload_blob_chunks,
+ _upload_blob_substream_blocks,
+)
+from .baseblobservice import BaseBlobService
+from .models import (
+ _BlobTypes,
+)
+
+
+class BlockBlobService(BaseBlobService):
+ '''
+ Block blobs let you upload large blobs efficiently. Block blobs are comprised
+ of blocks, each of which is identified by a block ID. You create or modify a
+ block blob by writing a set of blocks and committing them by their block IDs.
+ Each block can be a different size, up to a maximum of 100 MB, and a block blob
+ can include up to 50,000 blocks. The maximum size of a block blob is therefore
+ approximately 4.75 TB (100 MB X 50,000 blocks). If you are writing a block
+ blob that is no more than 64 MB in size, you can upload it in its entirety with
+ a single write operation; see create_blob_from_bytes.
+
+ :ivar int MAX_SINGLE_PUT_SIZE:
+ The largest size upload supported in a single put call. This is used by
+ the create_blob_from_* methods if the content length is known and is less
+ than this value.
+ :ivar int MAX_BLOCK_SIZE:
+ The size of the blocks put by create_blob_from_* methods if the content
+ length is unknown or is larger than MAX_SINGLE_PUT_SIZE. Smaller blocks
+ may be put. The maximum block size the service supports is 100MB.
+ :ivar int MIN_LARGE_BLOCK_UPLOAD_THRESHOLD:
+ The minimum block size at which the the memory-optimized, block upload
+ algorithm is considered. This algorithm is only applicable to the create_blob_from_file and
+ create_blob_from_stream methods and will prevent the full buffering of blocks.
+ In addition to the block size, ContentMD5 validation and Encryption must be disabled as
+ these options require the blocks to be buffered.
+ '''
+
+ MAX_SINGLE_PUT_SIZE = 64 * 1024 * 1024
+ MAX_BLOCK_SIZE = 4 * 1024 * 1024
+ MIN_LARGE_BLOCK_UPLOAD_THRESHOLD = 4 * 1024 * 1024 + 1
+
+ def __init__(self, account_name=None, account_key=None, sas_token=None, is_emulated=False,
+ protocol=DEFAULT_PROTOCOL, endpoint_suffix=SERVICE_HOST_BASE, custom_domain=None,
+ request_session=None, connection_string=None, socket_timeout=None, token_credential=None):
+ '''
+ :param str account_name:
+ The storage account name. This is used to authenticate requests
+ signed with an account key and to construct the storage endpoint. It
+ is required unless a connection string is given, or if a custom
+ domain is used with anonymous authentication.
+ :param str account_key:
+ The storage account key. This is used for shared key authentication.
+ If neither account key or sas token is specified, anonymous access
+ will be used.
+ :param str sas_token:
+ A shared access signature token to use to authenticate requests
+ instead of the account key. If account key and sas token are both
+ specified, account key will be used to sign. If neither are
+ specified, anonymous access will be used.
+ :param bool is_emulated:
+ Whether to use the emulator. Defaults to False. If specified, will
+ override all other parameters besides connection string and request
+ session.
+ :param str protocol:
+ The protocol to use for requests. Defaults to https.
+ :param str endpoint_suffix:
+ The host base component of the url, minus the account name. Defaults
+ to Azure (core.windows.net). Override this to use the China cloud
+ (core.chinacloudapi.cn).
+ :param str custom_domain:
+ The custom domain to use. This can be set in the Azure Portal. For
+ example, 'www.mydomain.com'.
+ :param requests.Session request_session:
+ The session object to use for http requests.
+ :param str connection_string:
+ If specified, this will override all other parameters besides
+ request session. See
+ http://azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/
+ for the connection string format.
+ :param int socket_timeout:
+ If specified, this will override the default socket timeout. The timeout specified is in seconds.
+ See DEFAULT_SOCKET_TIMEOUT in _constants.py for the default value.
+ :param token_credential:
+ A token credential used to authenticate HTTPS requests. The token value
+ should be updated before its expiration.
+ :type `~..common.TokenCredential`
+ '''
+ self.blob_type = _BlobTypes.BlockBlob
+ super(BlockBlobService, self).__init__(
+ account_name, account_key, sas_token, is_emulated, protocol, endpoint_suffix,
+ custom_domain, request_session, connection_string, socket_timeout, token_credential)
+
+ def put_block(self, container_name, blob_name, block, block_id,
+ validate_content=False, lease_id=None, timeout=None):
+ '''
+ Creates a new block to be committed as part of a blob.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param block: Content of the block.
+ :type block: io.IOBase or bytes
+ Content of the block.
+ :param str block_id:
+ A valid Base64 string value that identifies the block. Prior to
+ encoding, the string must be less than or equal to 64 bytes in size.
+ For a given blob, the length of the value specified for the blockid
+ parameter must be the same size for each block. Note that the Base64
+ string must be URL-encoded.
+ :param bool validate_content:
+ If true, calculates an MD5 hash of the block content. The storage
+ service checks the hash of the content that has arrived
+ with the hash that was sent. This is primarily valuable for detecting
+ bitflips on the wire if using http instead of https as https (the default)
+ will already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ self._put_block(
+ container_name,
+ blob_name,
+ block,
+ block_id,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ timeout=timeout
+ )
+
+ def put_block_list(
+ self, container_name, blob_name, block_list, content_settings=None,
+ metadata=None, validate_content=False, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None,
+ timeout=None):
+ '''
+ Writes a blob by specifying the list of block IDs that make up the blob.
+ In order to be written as part of a blob, a block must have been
+ successfully written to the server in a prior Put Block operation.
+
+ You can call Put Block List to update a blob by uploading only those
+ blocks that have changed, then committing the new and existing blocks
+ together. You can do this by specifying whether to commit a block from
+ the committed block list or from the uncommitted block list, or to commit
+ the most recently uploaded version of the block, whichever list it may
+ belong to.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param block_list:
+ A list of :class:`~azure.storeage.blob.models.BlobBlock` containing the block ids and block state.
+ :type block_list: list(:class:`~azure.storage.blob.models.BlobBlock`)
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set properties on the blob.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash of the block list content. The storage
+ service checks the hash of the block list content that has arrived
+ with the hash that was sent. This is primarily valuable for detecting
+ bitflips on the wire if using http instead of https as https (the default)
+ will already validate. Note that this check is associated with
+ the block list content, and not with the content of the blob itself.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Block Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ return self._put_block_list(
+ container_name,
+ blob_name,
+ block_list,
+ content_settings=content_settings,
+ metadata=metadata,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout
+ )
+
+ def get_block_list(self, container_name, blob_name, snapshot=None,
+ block_list_type=None, lease_id=None, timeout=None):
+ '''
+ Retrieves the list of blocks that have been uploaded as part of a
+ block blob. There are two block lists maintained for a blob:
+ Committed Block List:
+ The list of blocks that have been successfully committed to a
+ given blob with Put Block List.
+ Uncommitted Block List:
+ The list of blocks that have been uploaded for a blob using
+ Put Block, but that have not yet been committed. These blocks
+ are stored in Azure in association with a blob, but do not yet
+ form part of the blob.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str snapshot:
+ Datetime to determine the time to retrieve the blocks.
+ :param str block_list_type:
+ Specifies whether to return the list of committed blocks, the list
+ of uncommitted blocks, or both lists together. Valid values are:
+ committed, uncommitted, or all.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: list committed and/or uncommitted blocks for Block Blob
+ :rtype: :class:`~azure.storage.blob.models.BlobBlockList`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'blocklist',
+ 'snapshot': _to_str(snapshot),
+ 'blocklisttype': _to_str(block_list_type),
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {'x-ms-lease-id': _to_str(lease_id)}
+
+ return self._perform_request(request, _convert_xml_to_block_list)
+
+ # ----Convenience APIs-----------------------------------------------------
+
+ def create_blob_from_path(
+ self, container_name, blob_name, file_path, content_settings=None,
+ metadata=None, validate_content=False, progress_callback=None,
+ max_connections=2, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None):
+ '''
+ Creates a new blob from a file path, or updates the content of an
+ existing blob, with automatic chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param str file_path:
+ Path of the file to upload as the blob content.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set blob properties.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each chunk of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob. Also note that if enabled, the memory-efficient upload algorithm
+ will not be used, because computing the MD5 hash requires buffering
+ entire blocks, and doing so defeats the purpose of the memory-efficient algorithm.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use when the blob size exceeds
+ 64MB.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: ETag and last modified properties for the Block Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('file_path', file_path)
+
+ count = path.getsize(file_path)
+ with open(file_path, 'rb') as stream:
+ return self.create_blob_from_stream(
+ container_name=container_name,
+ blob_name=blob_name,
+ stream=stream,
+ count=count,
+ content_settings=content_settings,
+ metadata=metadata,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ progress_callback=progress_callback,
+ max_connections=max_connections,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout)
+
+ def create_blob_from_stream(
+ self, container_name, blob_name, stream, count=None,
+ content_settings=None, metadata=None, validate_content=False,
+ progress_callback=None, max_connections=2, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None, use_byte_buffer=False):
+ '''
+ Creates a new blob from a file/stream, or updates the content of
+ an existing blob, with automatic chunking and progress
+ notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param io.IOBase stream:
+ Opened file/stream to upload as the blob content.
+ :param int count:
+ Number of bytes to read from the stream. This is optional, but
+ should be supplied for optimal performance.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set blob properties.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each chunk of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob. Also note that if enabled, the memory-efficient upload algorithm
+ will not be used, because computing the MD5 hash requires buffering
+ entire blocks, and doing so defeats the purpose of the memory-efficient algorithm.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use when the blob size exceeds
+ 64MB. Note that parallel upload requires the stream to be seekable.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :param bool use_byte_buffer:
+ If True, this will force usage of the original full block buffering upload path.
+ By default, this value is False and will employ a memory-efficient,
+ streaming upload algorithm under the following conditions:
+ The provided stream is seekable, 'require_encryption' is False, and
+ MAX_BLOCK_SIZE >= MIN_LARGE_BLOCK_UPLOAD_THRESHOLD.
+ One should consider the drawbacks of using this approach. In order to achieve
+ memory-efficiency, a IOBase stream or file-like object is segmented into logical blocks
+ using a SubStream wrapper. In order to read the correct data, each SubStream must acquire
+ a lock so that it can safely seek to the right position on the shared, underlying stream.
+ If max_connections > 1, the concurrency will result in a considerable amount of seeking on
+ the underlying stream. For the most common inputs such as a file-like stream object, seeking
+ is an inexpensive operation and this is not much of a concern. However, for other variants of streams
+ this may not be the case. The trade-off for memory-efficiency must be weighed against the cost of seeking
+ with your input stream.
+ The SubStream class will attempt to buffer up to 4 MB internally to reduce the amount of
+ seek and read calls to the underlying stream. This is particularly beneficial when uploading larger blocks.
+ :return: ETag and last modified properties for the Block Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('stream', stream)
+ _validate_encryption_required(self.require_encryption, self.key_encryption_key)
+
+ # Adjust count to include padding if we are expected to encrypt.
+ adjusted_count = count
+ if (self.key_encryption_key is not None) and (adjusted_count is not None):
+ adjusted_count += (16 - (count % 16))
+
+ # Do single put if the size is smaller than MAX_SINGLE_PUT_SIZE
+ if adjusted_count is not None and (adjusted_count < self.MAX_SINGLE_PUT_SIZE):
+ if progress_callback:
+ progress_callback(0, count)
+
+ data = stream.read(count)
+ resp = self._put_blob(
+ container_name=container_name,
+ blob_name=blob_name,
+ blob=data,
+ content_settings=content_settings,
+ metadata=metadata,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout)
+
+ if progress_callback:
+ progress_callback(count, count)
+
+ return resp
+ else: # Size is larger than MAX_SINGLE_PUT_SIZE, must upload with multiple put_block calls
+ cek, iv, encryption_data = None, None, None
+
+ use_original_upload_path = use_byte_buffer or validate_content or self.require_encryption or \
+ self.MAX_BLOCK_SIZE < self.MIN_LARGE_BLOCK_UPLOAD_THRESHOLD or \
+ hasattr(stream, 'seekable') and not stream.seekable() or \
+ not hasattr(stream, 'seek') or not hasattr(stream, 'tell')
+
+ if use_original_upload_path:
+ if self.key_encryption_key:
+ cek, iv, encryption_data = _generate_blob_encryption_data(self.key_encryption_key)
+
+ block_ids = _upload_blob_chunks(
+ blob_service=self,
+ container_name=container_name,
+ blob_name=blob_name,
+ blob_size=count,
+ block_size=self.MAX_BLOCK_SIZE,
+ stream=stream,
+ max_connections=max_connections,
+ progress_callback=progress_callback,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ uploader_class=_BlockBlobChunkUploader,
+ timeout=timeout,
+ content_encryption_key=cek,
+ initialization_vector=iv
+ )
+ else:
+ block_ids = _upload_blob_substream_blocks(
+ blob_service=self,
+ container_name=container_name,
+ blob_name=blob_name,
+ blob_size=count,
+ block_size=self.MAX_BLOCK_SIZE,
+ stream=stream,
+ max_connections=max_connections,
+ progress_callback=progress_callback,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ uploader_class=_BlockBlobChunkUploader,
+ timeout=timeout,
+ )
+
+ return self._put_block_list(
+ container_name=container_name,
+ blob_name=blob_name,
+ block_list=block_ids,
+ content_settings=content_settings,
+ metadata=metadata,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout,
+ encryption_data=encryption_data
+ )
+
+ def create_blob_from_bytes(
+ self, container_name, blob_name, blob, index=0, count=None,
+ content_settings=None, metadata=None, validate_content=False,
+ progress_callback=None, max_connections=2, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Creates a new blob from an array of bytes, or updates the content
+ of an existing blob, with automatic chunking and progress
+ notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param bytes blob:
+ Content of blob as an array of bytes.
+ :param int index:
+ Start index in the array of bytes.
+ :param int count:
+ Number of bytes to upload. Set to None or negative value to upload
+ all bytes starting from index.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set blob properties.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each chunk of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use when the blob size exceeds
+ 64MB.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: ETag and last modified properties for the Block Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('blob', blob)
+ _validate_not_none('index', index)
+ _validate_type_bytes('blob', blob)
+
+ if index < 0:
+ raise IndexError(_ERROR_VALUE_NEGATIVE.format('index'))
+
+ if count is None or count < 0:
+ count = len(blob) - index
+
+ stream = BytesIO(blob)
+ stream.seek(index)
+
+ return self.create_blob_from_stream(
+ container_name=container_name,
+ blob_name=blob_name,
+ stream=stream,
+ count=count,
+ content_settings=content_settings,
+ metadata=metadata,
+ validate_content=validate_content,
+ progress_callback=progress_callback,
+ max_connections=max_connections,
+ lease_id=lease_id,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout,
+ use_byte_buffer=True
+ )
+
+ def create_blob_from_text(
+ self, container_name, blob_name, text, encoding='utf-8',
+ content_settings=None, metadata=None, validate_content=False,
+ progress_callback=None, max_connections=2, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None):
+ '''
+ Creates a new blob from str/unicode, or updates the content of an
+ existing blob, with automatic chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param str text:
+ Text to upload to the blob.
+ :param str encoding:
+ Python encoding to use to convert the text to bytes.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set blob properties.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each chunk of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use when the blob size exceeds
+ 64MB.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :return: ETag and last modified properties for the Block Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('text', text)
+
+ if not isinstance(text, bytes):
+ _validate_not_none('encoding', encoding)
+ text = text.encode(encoding)
+
+ return self.create_blob_from_bytes(
+ container_name=container_name,
+ blob_name=blob_name,
+ blob=text,
+ index=0,
+ count=len(text),
+ content_settings=content_settings,
+ metadata=metadata,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ progress_callback=progress_callback,
+ max_connections=max_connections,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout)
+
+ def set_standard_blob_tier(
+ self, container_name, blob_name, standard_blob_tier, timeout=None):
+ '''
+ Sets the block blob tiers on the blob. This API is only supported for block blobs on standard storage accounts.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to update.
+ :param StandardBlobTier standard_blob_tier:
+ A standard blob tier value to set the blob to. For this version of the library,
+ this is only applicable to block blobs on standard storage accounts.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('standard_blob_tier', standard_blob_tier)
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'tier',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-access-tier': _to_str(standard_blob_tier)
+ }
+
+ self._perform_request(request)
+
+ # -----Helper methods------------------------------------
+ def _put_blob(self, container_name, blob_name, blob, content_settings=None,
+ metadata=None, validate_content=False, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None,
+ timeout=None):
+ '''
+ Creates a blob or updates an existing blob.
+
+ See create_blob_from_* for high level
+ functions that handle the creation and upload of large blobs with
+ automatic chunking and progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param bytes blob:
+ Content of blob as bytes (size < 64MB). For larger size, you
+ must call put_block and put_block_list to set content of blob.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set properties on the blob.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :param bool validate_content:
+ If true, calculates an MD5 hash of the blob content. The storage
+ service checks the hash of the content that has arrived
+ with the hash that was sent. This is primarily valuable for detecting
+ bitflips on the wire if using http instead of https as https (the default)
+ will already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the new Block Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_encryption_required(self.require_encryption, self.key_encryption_key)
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {'timeout': _int_to_str(timeout)}
+ request.headers = {
+ 'x-ms-blob-type': _to_str(self.blob_type),
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match)
+ }
+ _add_metadata_headers(metadata, request)
+ if content_settings is not None:
+ request.headers.update(content_settings._to_headers())
+ blob = _get_data_bytes_only('blob', blob)
+ if self.key_encryption_key:
+ encryption_data, blob = _encrypt_blob(blob, self.key_encryption_key)
+ request.headers['x-ms-meta-encryptiondata'] = encryption_data
+ request.body = blob
+
+ if validate_content:
+ computed_md5 = _get_content_md5(request.body)
+ request.headers['Content-MD5'] = _to_str(computed_md5)
+
+ return self._perform_request(request, _parse_base_properties)
+
+ def _put_block(self, container_name, blob_name, block, block_id,
+ validate_content=False, lease_id=None, timeout=None):
+ '''
+ See put_block for more details. This helper method
+ allows for encryption or other such special behavior because
+ it is safely handled by the library. These behaviors are
+ prohibited in the public version of this function.
+ '''
+
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('block', block)
+ _validate_not_none('block_id', block_id)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'block',
+ 'blockid': _encode_base64(_to_str(block_id)),
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id)
+ }
+ request.body = _get_data_bytes_or_stream_only('block', block)
+ if hasattr(request.body, 'read'):
+ if _len_plus(request.body) is None:
+ try:
+ data = b''
+ for chunk in iter(lambda: request.body.read(4096), b""):
+ data += chunk
+ request.body = data
+ except AttributeError:
+ raise ValueError(_ERROR_VALUE_SHOULD_BE_STREAM.format('request.body'))
+
+ if validate_content:
+ computed_md5 = _get_content_md5(request.body)
+ request.headers['Content-MD5'] = _to_str(computed_md5)
+
+ self._perform_request(request)
+
+ def _put_block_list(
+ self, container_name, blob_name, block_list, content_settings=None,
+ metadata=None, validate_content=False, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None,
+ timeout=None, encryption_data=None):
+ '''
+ See put_block_list for more details. This helper method
+ allows for encryption or other such special behavior because
+ it is safely handled by the library. These behaviors are
+ prohibited in the public version of this function.
+ :param str encryption_data:
+ A JSON formatted string containing the encryption metadata generated for this
+ blob if it was encrypted all at once upon upload. This should only be passed
+ in by internal methods.
+ '''
+
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('block_list', block_list)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'blocklist',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+ _add_metadata_headers(metadata, request)
+ if content_settings is not None:
+ request.headers.update(content_settings._to_headers())
+ request.body = _get_request_body(
+ _convert_block_list_to_xml(block_list))
+
+ if validate_content:
+ computed_md5 = _get_content_md5(request.body)
+ request.headers['Content-MD5'] = _to_str(computed_md5)
+
+ if encryption_data is not None:
+ request.headers['x-ms-meta-encryptiondata'] = encryption_data
+
+ return self._perform_request(request, _parse_base_properties)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/models.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/models.py
new file mode 100644
index 00000000000..1f9cd20cb28
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/models.py
@@ -0,0 +1,755 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from ..common._common_conversion import _to_str
+
+
+class Container(object):
+ '''
+ Blob container class.
+
+ :ivar str name:
+ The name of the container.
+ :ivar metadata:
+ A dict containing name-value pairs associated with the container as metadata.
+ This var is set to None unless the include=metadata param was included
+ for the list containers operation. If this parameter was specified but the
+ container has no metadata, metadata will be set to an empty dictionary.
+ :vartype metadata: dict(str, str)
+ :ivar ContainerProperties properties:
+ System properties for the container.
+ '''
+
+ def __init__(self, name=None, props=None, metadata=None):
+ self.name = name
+ self.properties = props or ContainerProperties()
+ self.metadata = metadata
+
+
+class ContainerProperties(object):
+ '''
+ Blob container's properties class.
+
+ :ivar datetime last_modified:
+ A datetime object representing the last time the container was modified.
+ :ivar str etag:
+ The ETag contains a value that you can use to perform operations
+ conditionally.
+ :ivar LeaseProperties lease:
+ Stores all the lease information for the container.
+ '''
+
+ def __init__(self):
+ self.last_modified = None
+ self.etag = None
+ self.lease = LeaseProperties()
+ self.public_access = None
+
+
+class Blob(object):
+ '''
+ Blob class.
+
+ :ivar str name:
+ Name of blob.
+ :ivar str snapshot:
+ A DateTime value that uniquely identifies the snapshot. The value of
+ this header indicates the snapshot version, and may be used in
+ subsequent requests to access the snapshot.
+ :ivar content:
+ Blob content.
+ :vartype content: str or bytes
+ :ivar BlobProperties properties:
+ Stores all the system properties for the blob.
+ :ivar metadata:
+ Name-value pairs associated with the blob as metadata.
+ :ivar bool deleted:
+ Specify whether the blob was soft deleted.
+ In other words, if the blob is being retained by the delete retention policy,
+ this field would be True. The blob could be undeleted or it will be garbage collected after the specified
+ time period.
+ '''
+
+ def __init__(self, name=None, snapshot=None, content=None, props=None, metadata=None, deleted=False):
+ self.name = name
+ self.snapshot = snapshot
+ self.content = content
+ self.properties = props or BlobProperties()
+ self.metadata = metadata
+ self.deleted = deleted
+
+
+class BlobProperties(object):
+ '''
+ Blob Properties
+
+ :ivar str blob_type:
+ String indicating this blob's type.
+ :ivar datetime last_modified:
+ A datetime object representing the last time the blob was modified.
+ :ivar str etag:
+ The ETag contains a value that you can use to perform operations
+ conditionally.
+ :ivar int content_length:
+ The length of the content returned. If the entire blob was requested,
+ the length of blob in bytes. If a subset of the blob was requested, the
+ length of the returned subset.
+ :ivar str content_range:
+ Indicates the range of bytes returned in the event that the client
+ requested a subset of the blob.
+ :ivar int append_blob_committed_block_count:
+ (For Append Blobs) Number of committed blocks in the blob.
+ :ivar int page_blob_sequence_number:
+ (For Page Blobs) Sequence number for page blob used for coordinating
+ concurrent writes.
+ :ivar bool server_encrypted:
+ Set to true if the blob is encrypted on the server.
+ :ivar ~azure.storage.blob.models.CopyProperties copy:
+ Stores all the copy properties for the blob.
+ :ivar ~azure.storage.blob.models.ContentSettings content_settings:
+ Stores all the content settings for the blob.
+ :ivar ~azure.storage.blob.models.LeaseProperties lease:
+ Stores all the lease information for the blob.
+ :ivar StandardBlobTier blob_tier:
+ Indicates the access tier of the blob. The hot tier is optimized
+ for storing data that is accessed frequently. The cool storage tier
+ is optimized for storing data that is infrequently accessed and stored
+ for at least a month. The archive tier is optimized for storing
+ data that is rarely accessed and stored for at least six months
+ with flexible latency requirements.
+ :ivar datetime blob_tier_change_time:
+ Indicates when the access tier was last changed.
+ :ivar bool blob_tier_inferred:
+ Indicates whether the access tier was inferred by the service.
+ If false, it indicates that the tier was set explicitly.
+ :ivar datetime deleted_time:
+ A datetime object representing the time at which the blob was deleted.
+ :ivar int remaining_retention_days:
+ The number of days that the blob will be retained before being permanently deleted by the service.
+ '''
+
+ def __init__(self):
+ self.blob_type = None
+ self.last_modified = None
+ self.etag = None
+ self.content_length = None
+ self.content_range = None
+ self.append_blob_committed_block_count = None
+ self.page_blob_sequence_number = None
+ self.server_encrypted = None
+ self.copy = CopyProperties()
+ self.content_settings = ContentSettings()
+ self.lease = LeaseProperties()
+ self.blob_tier = None
+ self.blob_tier_change_time = None
+ self.blob_tier_inferred = False
+ self.deleted_time = None
+ self.remaining_retention_days = None
+
+
+class ContentSettings(object):
+ '''
+ Used to store the content settings of a blob.
+
+ :ivar str content_type:
+ The content type specified for the blob. If no content type was
+ specified, the default content type is application/octet-stream.
+ :ivar str content_encoding:
+ If the content_encoding has previously been set
+ for the blob, that value is stored.
+ :ivar str content_language:
+ If the content_language has previously been set
+ for the blob, that value is stored.
+ :ivar str content_disposition:
+ content_disposition conveys additional information about how to
+ process the response payload, and also can be used to attach
+ additional metadata. If content_disposition has previously been set
+ for the blob, that value is stored.
+ :ivar str cache_control:
+ If the cache_control has previously been set for
+ the blob, that value is stored.
+ :ivar str content_md5:
+ If the content_md5 has been set for the blob, this response
+ header is stored so that the client can check for message content
+ integrity.
+ '''
+
+ def __init__(
+ self, content_type=None, content_encoding=None,
+ content_language=None, content_disposition=None,
+ cache_control=None, content_md5=None):
+ self.content_type = content_type
+ self.content_encoding = content_encoding
+ self.content_language = content_language
+ self.content_disposition = content_disposition
+ self.cache_control = cache_control
+ self.content_md5 = content_md5
+
+ def _to_headers(self):
+ return {
+ 'x-ms-blob-cache-control': _to_str(self.cache_control),
+ 'x-ms-blob-content-type': _to_str(self.content_type),
+ 'x-ms-blob-content-disposition': _to_str(self.content_disposition),
+ 'x-ms-blob-content-md5': _to_str(self.content_md5),
+ 'x-ms-blob-content-encoding': _to_str(self.content_encoding),
+ 'x-ms-blob-content-language': _to_str(self.content_language),
+ }
+
+
+class CopyProperties(object):
+ '''
+ Blob Copy Properties.
+
+ :ivar str id:
+ String identifier for the last attempted Copy Blob operation where this blob
+ was the destination blob. This header does not appear if this blob has never
+ been the destination in a Copy Blob operation, or if this blob has been
+ modified after a concluded Copy Blob operation using Set Blob Properties,
+ Put Blob, or Put Block List.
+ :ivar str source:
+ URL up to 2 KB in length that specifies the source blob used in the last attempted
+ Copy Blob operation where this blob was the destination blob. This header does not
+ appear if this blob has never been the destination in a Copy Blob operation, or if
+ this blob has been modified after a concluded Copy Blob operation using
+ Set Blob Properties, Put Blob, or Put Block List.
+ :ivar str status:
+ State of the copy operation identified by Copy ID, with these values:
+ success:
+ Copy completed successfully.
+ pending:
+ Copy is in progress. Check copy_status_description if intermittent,
+ non-fatal errors impede copy progress but don't cause failure.
+ aborted:
+ Copy was ended by Abort Copy Blob.
+ failed:
+ Copy failed. See copy_status_description for failure details.
+ :ivar str progress:
+ Contains the number of bytes copied and the total bytes in the source in the last
+ attempted Copy Blob operation where this blob was the destination blob. Can show
+ between 0 and Content-Length bytes copied.
+ :ivar datetime completion_time:
+ Conclusion time of the last attempted Copy Blob operation where this blob was the
+ destination blob. This value can specify the time of a completed, aborted, or
+ failed copy attempt.
+ :ivar str status_description:
+ only appears when x-ms-copy-status is failed or pending. Describes cause of fatal
+ or non-fatal copy operation failure.
+ '''
+
+ def __init__(self):
+ self.id = None
+ self.source = None
+ self.status = None
+ self.progress = None
+ self.completion_time = None
+ self.status_description = None
+
+
+class LeaseProperties(object):
+ '''
+ Blob Lease Properties.
+
+ :ivar str status:
+ The lease status of the blob.
+ Possible values: locked|unlocked
+ :ivar str state:
+ Lease state of the blob.
+ Possible values: available|leased|expired|breaking|broken
+ :ivar str duration:
+ When a blob is leased, specifies whether the lease is of infinite or fixed duration.
+ '''
+
+ def __init__(self):
+ self.status = None
+ self.state = None
+ self.duration = None
+
+
+class BlobPrefix(object):
+ '''
+ BlobPrefix objects may potentially returned in the blob list when
+ :func:`~azure.storage.blob.baseblobservice.BaseBlobService.list_blobs` is
+ used with a delimiter. Prefixes can be thought of as virtual blob directories.
+
+ :ivar str name: The name of the blob prefix.
+ '''
+
+ def __init__(self):
+ self.name = None
+
+
+class BlobBlockState(object):
+ '''Block blob block types.'''
+
+ Committed = 'Committed'
+ '''Committed blocks.'''
+
+ Latest = 'Latest'
+ '''Latest blocks.'''
+
+ Uncommitted = 'Uncommitted'
+ '''Uncommitted blocks.'''
+
+
+class BlobBlock(object):
+ '''
+ BlockBlob Block class.
+
+ :ivar str id:
+ Block id.
+ :ivar str state:
+ Block state.
+ Possible valuse: committed|uncommitted
+ :ivar int size:
+ Block size in bytes.
+ '''
+
+ def __init__(self, id=None, state=BlobBlockState.Latest):
+ self.id = id
+ self.state = state
+
+ def _set_size(self, size):
+ self.size = size
+
+
+class BlobBlockList(object):
+ '''
+ Blob Block List class.
+
+ :ivar committed_blocks:
+ List of committed blocks.
+ :vartype committed_blocks: list(:class:`~azure.storage.blob.models.BlobBlock`)
+ :ivar uncommitted_blocks:
+ List of uncommitted blocks.
+ :vartype uncommitted_blocks: list(:class:`~azure.storage.blob.models.BlobBlock`)
+ '''
+
+ def __init__(self):
+ self.committed_blocks = list()
+ self.uncommitted_blocks = list()
+
+
+class PageRange(object):
+ '''
+ Page Range for page blob.
+
+ :ivar int start:
+ Start of page range in bytes.
+ :ivar int end:
+ End of page range in bytes.
+ :ivar bool is_cleared:
+ Indicates if a page range is cleared or not. Only applicable
+ for get_page_range_diff API.
+ '''
+
+ def __init__(self, start=None, end=None, is_cleared=False):
+ self.start = start
+ self.end = end
+ self.is_cleared = is_cleared
+
+
+class ResourceProperties(object):
+ '''
+ Base response for a resource request.
+
+ :ivar str etag:
+ Opaque etag value that can be used to check if resource
+ has been modified.
+ :ivar datetime last_modified:
+ Datetime for last time resource was modified.
+ '''
+
+ def __init__(self):
+ self.last_modified = None
+ self.etag = None
+
+
+class AppendBlockProperties(ResourceProperties):
+ '''
+ Response for an append block request.
+
+ :ivar int append_offset:
+ Position to start next append.
+ :ivar int committed_block_count:
+ Number of committed append blocks.
+ '''
+
+ def __init__(self):
+ super(ResourceProperties, self).__init__()
+ self.append_offset = None
+ self.committed_block_count = None
+
+
+class PageBlobProperties(ResourceProperties):
+ '''
+ Response for a page request.
+
+ :ivar int sequence_number:
+ Identifer for page blobs to help handle concurrent writes.
+ '''
+
+ def __init__(self):
+ super(ResourceProperties, self).__init__()
+ self.sequence_number = None
+
+
+class PublicAccess(object):
+ '''
+ Specifies whether data in the container may be accessed publicly and the level of access.
+ '''
+
+ OFF = 'off'
+ '''
+ Specifies that there is no public read access for both the container and blobs within the container.
+ Clients cannot enumerate the containers within the storage account as well as the blobs within the container.
+ '''
+
+ Blob = 'blob'
+ '''
+ Specifies public read access for blobs. Blob data within this container can be read
+ via anonymous request, but container data is not available. Clients cannot enumerate
+ blobs within the container via anonymous request.
+ '''
+
+ Container = 'container'
+ '''
+ Specifies full public read access for container and blob data. Clients can enumerate
+ blobs within the container via anonymous request, but cannot enumerate containers
+ within the storage account.
+ '''
+
+
+class DeleteSnapshot(object):
+ '''
+ Required if the blob has associated snapshots. Specifies how to handle the snapshots.
+ '''
+
+ Include = 'include'
+ '''
+ Delete the base blob and all of its snapshots.
+ '''
+
+ Only = 'only'
+ '''
+ Delete only the blob's snapshots and not the blob itself.
+ '''
+
+
+class BlockListType(object):
+ '''
+ Specifies whether to return the list of committed blocks, the list of uncommitted
+ blocks, or both lists together.
+ '''
+
+ All = 'all'
+ '''Both committed and uncommitted blocks.'''
+
+ Committed = 'committed'
+ '''Committed blocks.'''
+
+ Uncommitted = 'uncommitted'
+ '''Uncommitted blocks.'''
+
+
+class SequenceNumberAction(object):
+ '''Sequence number actions.'''
+
+ Increment = 'increment'
+ '''
+ Increments the value of the sequence number by 1. If specifying this option,
+ do not include the x-ms-blob-sequence-number header.
+ '''
+
+ Max = 'max'
+ '''
+ Sets the sequence number to be the higher of the value included with the
+ request and the value currently stored for the blob.
+ '''
+
+ Update = 'update'
+ '''Sets the sequence number to the value included with the request.'''
+
+
+class _LeaseActions(object):
+ '''Actions for a lease.'''
+
+ Acquire = 'acquire'
+ '''Acquire the lease.'''
+
+ Break = 'break'
+ '''Break the lease.'''
+
+ Change = 'change'
+ '''Change the lease ID.'''
+
+ Release = 'release'
+ '''Release the lease.'''
+
+ Renew = 'renew'
+ '''Renew the lease.'''
+
+
+class _BlobTypes(object):
+ '''Blob type options.'''
+
+ AppendBlob = 'AppendBlob'
+ '''Append blob type.'''
+
+ BlockBlob = 'BlockBlob'
+ '''Block blob type.'''
+
+ PageBlob = 'PageBlob'
+ '''Page blob type.'''
+
+
+class Include(object):
+ '''
+ Specifies the datasets to include in the blob list response.
+
+ :ivar ~azure.storage.blob.models.Include Include.COPY:
+ Specifies that metadata related to any current or previous Copy Blob operation
+ should be included in the response.
+ :ivar ~azure.storage.blob.models.Include Include.METADATA:
+ Specifies that metadata be returned in the response.
+ :ivar ~azure.storage.blob.models.Include Include.SNAPSHOTS:
+ Specifies that snapshots should be included in the enumeration.
+ :ivar ~azure.storage.blob.models.Include Include.UNCOMMITTED_BLOBS:
+ Specifies that blobs for which blocks have been uploaded, but which have not
+ been committed using Put Block List, be included in the response.
+ :ivar ~azure.storage.blob.models.Include Include.DELETED:
+ Specifies that deleted blobs should be returned in the response.
+ '''
+
+ def __init__(self, snapshots=False, metadata=False, uncommitted_blobs=False,
+ copy=False, deleted=False, _str=None):
+ '''
+ :param bool snapshots:
+ Specifies that snapshots should be included in the enumeration.
+ :param bool metadata:
+ Specifies that metadata be returned in the response.
+ :param bool uncommitted_blobs:
+ Specifies that blobs for which blocks have been uploaded, but which have
+ not been committed using Put Block List, be included in the response.
+ :param bool copy:
+ Specifies that metadata related to any current or previous Copy Blob
+ operation should be included in the response.
+ :param bool deleted:
+ Specifies that deleted blobs should be returned in the response.
+ :param str _str:
+ A string representing the includes.
+ '''
+ if not _str:
+ _str = ''
+ components = _str.split(',')
+ self.snapshots = snapshots or ('snapshots' in components)
+ self.metadata = metadata or ('metadata' in components)
+ self.uncommitted_blobs = uncommitted_blobs or ('uncommittedblobs' in components)
+ self.copy = copy or ('copy' in components)
+ self.deleted = deleted or ('deleted' in components)
+
+ def __or__(self, other):
+ return Include(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return Include(_str=str(self) + str(other))
+
+ def __str__(self):
+ include = (('snapshots,' if self.snapshots else '') +
+ ('metadata,' if self.metadata else '') +
+ ('uncommittedblobs,' if self.uncommitted_blobs else '') +
+ ('copy,' if self.copy else '') +
+ ('deleted,' if self.deleted else ''))
+ return include.rstrip(',')
+
+
+Include.COPY = Include(copy=True)
+Include.METADATA = Include(metadata=True)
+Include.SNAPSHOTS = Include(snapshots=True)
+Include.UNCOMMITTED_BLOBS = Include(uncommitted_blobs=True)
+Include.DELETED = Include(deleted=True)
+
+
+class BlobPermissions(object):
+ '''
+ BlobPermissions class to be used with
+ :func:`~azure.storage.blob.baseblobservice.BaseBlobService.generate_blob_shared_access_signature` API.
+
+ :ivar BlobPermissions BlobPermissions.ADD:
+ Add a block to an append blob.
+ :ivar BlobPermissions BlobPermissions.CREATE:
+ Write a new blob, snapshot a blob, or copy a blob to a new blob.
+ :ivar BlobPermissions BlobPermissions.DELETE:
+ Delete the blob.
+ :ivar BlobPermissions BlobPermissions.READ:
+ Read the content, properties, metadata and block list. Use the blob as the source of a copy operation.
+ :ivar BlobPermissions BlobPermissions.WRITE:
+ Create or write content, properties, metadata, or block list. Snapshot or lease
+ the blob. Resize the blob (page blob only). Use the blob as the destination of a
+ copy operation within the same account.
+ '''
+
+ def __init__(self, read=False, add=False, create=False, write=False,
+ delete=False, _str=None):
+ '''
+ :param bool read:
+ Read the content, properties, metadata and block list. Use the blob as
+ the source of a copy operation.
+ :param bool add:
+ Add a block to an append blob.
+ :param bool create:
+ Write a new blob, snapshot a blob, or copy a blob to a new blob.
+ :param bool write:
+ Create or write content, properties, metadata, or block list. Snapshot
+ or lease the blob. Resize the blob (page blob only). Use the blob as the
+ destination of a copy operation within the same account.
+ :param bool delete:
+ Delete the blob.
+ :param str _str:
+ A string representing the permissions.
+ '''
+ if not _str:
+ _str = ''
+ self.read = read or ('r' in _str)
+ self.add = add or ('a' in _str)
+ self.create = create or ('c' in _str)
+ self.write = write or ('w' in _str)
+ self.delete = delete or ('d' in _str)
+
+ def __or__(self, other):
+ return BlobPermissions(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return BlobPermissions(_str=str(self) + str(other))
+
+ def __str__(self):
+ return (('r' if self.read else '') +
+ ('a' if self.add else '') +
+ ('c' if self.create else '') +
+ ('w' if self.write else '') +
+ ('d' if self.delete else ''))
+
+
+BlobPermissions.ADD = BlobPermissions(add=True)
+BlobPermissions.CREATE = BlobPermissions(create=True)
+BlobPermissions.DELETE = BlobPermissions(delete=True)
+BlobPermissions.READ = BlobPermissions(read=True)
+BlobPermissions.WRITE = BlobPermissions(write=True)
+
+
+class ContainerPermissions(object):
+ '''
+ ContainerPermissions class to be used with :func:`~azure.storage.blob.baseblobservice.BaseBlobService.generate_container_shared_access_signature`
+ API and for the AccessPolicies used with :func:`~azure.storage.blob.baseblobservice.BaseBlobService.set_container_acl`.
+
+ :ivar ContainerPermissions ContainerPermissions.DELETE:
+ Delete any blob in the container. Note: You cannot grant permissions to
+ delete a container with a container SAS. Use an account SAS instead.
+ :ivar ContainerPermissions ContainerPermissions.LIST:
+ List blobs in the container.
+ :ivar ContainerPermissions ContainerPermissions.READ:
+ Read the content, properties, metadata or block list of any blob in the
+ container. Use any blob in the container as the source of a copy operation.
+ :ivar ContainerPermissions ContainerPermissions.WRITE:
+ For any blob in the container, create or write content, properties,
+ metadata, or block list. Snapshot or lease the blob. Resize the blob
+ (page blob only). Use the blob as the destination of a copy operation
+ within the same account. Note: You cannot grant permissions to read or
+ write container properties or metadata, nor to lease a container, with
+ a container SAS. Use an account SAS instead.
+ '''
+
+ def __init__(self, read=False, write=False, delete=False, list=False,
+ _str=None):
+ '''
+ :param bool read:
+ Read the content, properties, metadata or block list of any blob in the
+ container. Use any blob in the container as the source of a copy operation.
+ :param bool write:
+ For any blob in the container, create or write content, properties,
+ metadata, or block list. Snapshot or lease the blob. Resize the blob
+ (page blob only). Use the blob as the destination of a copy operation
+ within the same account. Note: You cannot grant permissions to read or
+ write container properties or metadata, nor to lease a container, with
+ a container SAS. Use an account SAS instead.
+ :param bool delete:
+ Delete any blob in the container. Note: You cannot grant permissions to
+ delete a container with a container SAS. Use an account SAS instead.
+ :param bool list:
+ List blobs in the container.
+ :param str _str:
+ A string representing the permissions.
+ '''
+ if not _str:
+ _str = ''
+ self.read = read or ('r' in _str)
+ self.write = write or ('w' in _str)
+ self.delete = delete or ('d' in _str)
+ self.list = list or ('l' in _str)
+
+ def __or__(self, other):
+ return ContainerPermissions(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return ContainerPermissions(_str=str(self) + str(other))
+
+ def __str__(self):
+ return (('r' if self.read else '') +
+ ('w' if self.write else '') +
+ ('d' if self.delete else '') +
+ ('l' if self.list else ''))
+
+
+ContainerPermissions.DELETE = ContainerPermissions(delete=True)
+ContainerPermissions.LIST = ContainerPermissions(list=True)
+ContainerPermissions.READ = ContainerPermissions(read=True)
+ContainerPermissions.WRITE = ContainerPermissions(write=True)
+
+
+class PremiumPageBlobTier(object):
+ '''
+ Specifies the page blob tier to set the blob to. This is only applicable to page
+ blobs on premium storage accounts.
+ Please take a look at https://docs.microsoft.com/en-us/azure/storage/storage-premium-storage#scalability-and-performance-targets
+ for detailed information on the corresponding IOPS and throughtput per PageBlobTier.
+ '''
+
+ P4 = 'P4'
+ ''' P4 Tier '''
+
+ P6 = 'P6'
+ ''' P6 Tier '''
+
+ P10 = 'P10'
+ ''' P10 Tier '''
+
+ P20 = 'P20'
+ ''' P20 Tier '''
+
+ P30 = 'P30'
+ ''' P30 Tier '''
+
+ P40 = 'P40'
+ ''' P40 Tier '''
+
+ P50 = 'P50'
+ ''' P50 Tier '''
+
+ P60 = 'P60'
+ ''' P60 Tier '''
+
+
+class StandardBlobTier(object):
+ '''
+ Specifies the blob tier to set the blob to. This is only applicable for block blobs on standard storage accounts.
+ '''
+
+ Archive = 'Archive'
+ ''' Archive '''
+
+ Cool = 'Cool'
+ ''' Cool '''
+
+ Hot = 'Hot'
+ ''' Hot '''
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/pageblobservice.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/pageblobservice.py
new file mode 100644
index 00000000000..cfeea646fa6
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/pageblobservice.py
@@ -0,0 +1,1392 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+from os import path
+
+from ..common._common_conversion import (
+ _int_to_str,
+ _to_str,
+ _datetime_to_utc_string,
+ _get_content_md5,
+)
+from ..common._constants import (
+ SERVICE_HOST_BASE,
+ DEFAULT_PROTOCOL,
+)
+from ..common._error import (
+ _validate_not_none,
+ _validate_type_bytes,
+ _validate_encryption_required,
+ _validate_encryption_unsupported,
+ _ERROR_VALUE_NEGATIVE,
+)
+from ..common._http import HTTPRequest
+from ..common._serialization import (
+ _get_data_bytes_only,
+ _add_metadata_headers,
+)
+from ._deserialization import (
+ _convert_xml_to_page_ranges,
+ _parse_page_properties,
+ _parse_base_properties,
+)
+from ._encryption import _generate_blob_encryption_data
+from ._error import (
+ _ERROR_PAGE_BLOB_SIZE_ALIGNMENT,
+)
+from ._serialization import (
+ _get_path,
+ _validate_and_format_range_headers,
+)
+from ._upload_chunking import (
+ _PageBlobChunkUploader,
+ _upload_blob_chunks,
+)
+from .baseblobservice import BaseBlobService
+from .models import (
+ _BlobTypes,
+ ResourceProperties)
+
+if sys.version_info >= (3,):
+ from io import BytesIO
+else:
+ from cStringIO import StringIO as BytesIO
+
+# Keep this value sync with _ERROR_PAGE_BLOB_SIZE_ALIGNMENT
+_PAGE_ALIGNMENT = 512
+
+
+class PageBlobService(BaseBlobService):
+ '''
+ Page blobs are a collection of 512-byte pages optimized for random read and
+ write operations. To create a page blob, you initialize the page blob and
+ specify the maximum size the page blob will grow. To add or update the
+ contents of a page blob, you write a page or pages by specifying an offset
+ and a range that align to 512-byte page boundaries. A write to a page blob
+ can overwrite just one page, some pages, or up to 4 MB of the page blob.
+ Writes to page blobs happen in-place and are immediately committed to the
+ blob. The maximum size for a page blob is 8 TB.
+
+ :ivar int MAX_PAGE_SIZE:
+ The size of the pages put by create_blob_from_* methods. Smaller pages
+ may be put if there is less data provided. The maximum page size the service
+ supports is 4MB. When using the create_blob_from_* methods, empty pages are skipped.
+ '''
+
+ MAX_PAGE_SIZE = 4 * 1024 * 1024
+
+ def __init__(self, account_name=None, account_key=None, sas_token=None, is_emulated=False,
+ protocol=DEFAULT_PROTOCOL, endpoint_suffix=SERVICE_HOST_BASE, custom_domain=None,
+ request_session=None, connection_string=None, socket_timeout=None, token_credential=None):
+ '''
+ :param str account_name:
+ The storage account name. This is used to authenticate requests
+ signed with an account key and to construct the storage endpoint. It
+ is required unless a connection string is given, or if a custom
+ domain is used with anonymous authentication.
+ :param str account_key:
+ The storage account key. This is used for shared key authentication.
+ If neither account key or sas token is specified, anonymous access
+ will be used.
+ :param str sas_token:
+ A shared access signature token to use to authenticate requests
+ instead of the account key. If account key and sas token are both
+ specified, account key will be used to sign. If neither are
+ specified, anonymous access will be used.
+ :param bool is_emulated:
+ Whether to use the emulator. Defaults to False. If specified, will
+ override all other parameters besides connection string and request
+ session.
+ :param str protocol:
+ The protocol to use for requests. Defaults to https.
+ :param str endpoint_suffix:
+ The host base component of the url, minus the account name. Defaults
+ to Azure (core.windows.net). Override this to use the China cloud
+ (core.chinacloudapi.cn).
+ :param str custom_domain:
+ The custom domain to use. This can be set in the Azure Portal. For
+ example, 'www.mydomain.com'.
+ :param requests.Session request_session:
+ The session object to use for http requests.
+ :param str connection_string:
+ If specified, this will override all other parameters besides
+ request session. See
+ http://azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/
+ for the connection string format.
+ :param int socket_timeout:
+ If specified, this will override the default socket timeout. The timeout specified is in seconds.
+ See DEFAULT_SOCKET_TIMEOUT in _constants.py for the default value.
+ :param token_credential:
+ A token credential used to authenticate HTTPS requests. The token value
+ should be updated before its expiration.
+ :type `~..common.TokenCredential`
+ '''
+ self.blob_type = _BlobTypes.PageBlob
+ super(PageBlobService, self).__init__(
+ account_name, account_key, sas_token, is_emulated, protocol, endpoint_suffix,
+ custom_domain, request_session, connection_string, socket_timeout, token_credential)
+
+ def create_blob(
+ self, container_name, blob_name, content_length, content_settings=None,
+ sequence_number=None, metadata=None, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None, premium_page_blob_tier=None):
+ '''
+ Creates a new Page Blob.
+
+ See create_blob_from_* for high level functions that handle the
+ creation and upload of large blobs with automatic chunking and
+ progress notifications.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param int content_length:
+ Required. This header specifies the maximum size
+ for the page blob, up to 1 TB. The page blob size must be aligned
+ to a 512-byte boundary.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set properties on the blob.
+ :param int sequence_number:
+ The sequence number is a user-controlled value that you can use to
+ track requests. The value of the sequence number must be between 0
+ and 2^63 - 1.The default value is 0.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param PremiumPageBlobTier premium_page_blob_tier:
+ A page blob tier value to set the blob to. The tier correlates to the size of the
+ blob and number of allowed IOPS. This is only applicable to page blobs on
+ premium storage accounts.
+ :return: ETag and last modified properties for the new Page Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ return self._create_blob(
+ container_name,
+ blob_name,
+ content_length,
+ content_settings=content_settings,
+ sequence_number=sequence_number,
+ metadata=metadata,
+ lease_id=lease_id,
+ premium_page_blob_tier=premium_page_blob_tier,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout
+ )
+
+ def incremental_copy_blob(self, container_name, blob_name, copy_source,
+ metadata=None, destination_if_modified_since=None, destination_if_unmodified_since=None,
+ destination_if_match=None, destination_if_none_match=None, destination_lease_id=None,
+ source_lease_id=None, timeout=None):
+ '''
+ Copies an incremental copy of a blob asynchronously. This operation returns a copy operation
+ properties object, including a copy ID you can use to check or abort the
+ copy operation. The Blob service copies blobs on a best-effort basis.
+
+ The source blob for an incremental copy operation must be a page blob.
+ Call get_blob_properties on the destination blob to check the status of the copy operation.
+ The final blob will be committed when the copy completes.
+
+ :param str container_name:
+ Name of the destination container. The container must exist.
+ :param str blob_name:
+ Name of the destination blob. If the destination blob exists, it will
+ be overwritten. Otherwise, it will be created.
+ :param str copy_source:
+ A URL of up to 2 KB in length that specifies an Azure page blob.
+ The value should be URL-encoded as it would appear in a request URI.
+ The copy source must be a snapshot and include a valid SAS token or be public.
+ Example:
+ https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=&sastoken
+ :param metadata:
+ Name-value pairs associated with the blob as metadata. If no name-value
+ pairs are specified, the operation will copy the metadata from the
+ source blob or file to the destination blob. If one or more name-value
+ pairs are specified, the destination blob is created with the specified
+ metadata, and metadata is not copied from the source blob or file.
+ :type metadata: dict(str, str).
+ :param datetime destination_if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only
+ if the destination blob has been modified since the specified date/time.
+ If the destination blob has not been modified, the Blob service returns
+ status code 412 (Precondition Failed).
+ :param datetime destination_if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only if the destination blob
+ has not been modified since the specified ate/time. If the destination blob
+ has been modified, the Blob service returns status code 412 (Precondition Failed).
+ :param ETag destination_if_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for
+ this conditional header to copy the blob only if the specified ETag value
+ matches the ETag value for an existing destination blob. If the ETag for
+ the destination blob does not match the ETag specified for If-Match, the
+ Blob service returns status code 412 (Precondition Failed).
+ :param ETag destination_if_none_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for
+ this conditional header to copy the blob only if the specified ETag value
+ does not match the ETag value for the destination blob. Specify the wildcard
+ character (*) to perform the operation only if the destination blob does not
+ exist. If the specified condition isn't met, the Blob service returns status
+ code 412 (Precondition Failed).
+ :param str destination_lease_id:
+ The lease ID specified for this header must match the lease ID of the
+ destination blob. If the request does not include the lease ID or it is not
+ valid, the operation fails with status code 412 (Precondition Failed).
+ :param str source_lease_id:
+ Specify this to perform the Copy Blob operation only if
+ the lease ID given matches the active lease ID of the source blob.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: Copy operation properties such as status, source, and ID.
+ :rtype: :class:`~azure.storage.blob.models.CopyProperties`
+ '''
+ return self._copy_blob(container_name, blob_name, copy_source,
+ metadata,
+ source_if_modified_since=None, source_if_unmodified_since=None,
+ source_if_match=None, source_if_none_match=None,
+ destination_if_modified_since=destination_if_modified_since,
+ destination_if_unmodified_since=destination_if_unmodified_since,
+ destination_if_match=destination_if_match,
+ destination_if_none_match=destination_if_none_match,
+ destination_lease_id=destination_lease_id,
+ source_lease_id=source_lease_id, timeout=timeout,
+ incremental_copy=True)
+
+ def update_page(
+ self, container_name, blob_name, page, start_range, end_range,
+ validate_content=False, lease_id=None, if_sequence_number_lte=None,
+ if_sequence_number_lt=None, if_sequence_number_eq=None,
+ if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None):
+ '''
+ Updates a range of pages.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param bytes page:
+ Content of the page.
+ :param int start_range:
+ Start of byte range to use for writing to a section of the blob.
+ Pages must be aligned with 512-byte boundaries, the start offset
+ must be a modulus of 512 and the end offset must be a modulus of
+ 512-1. Examples of valid byte ranges are 0-511, 512-1023, etc.
+ :param int end_range:
+ End of byte range to use for writing to a section of the blob.
+ Pages must be aligned with 512-byte boundaries, the start offset
+ must be a modulus of 512 and the end offset must be a modulus of
+ 512-1. Examples of valid byte ranges are 0-511, 512-1023, etc.
+ :param bool validate_content:
+ If true, calculates an MD5 hash of the page content. The storage
+ service checks the hash of the content that has arrived
+ with the hash that was sent. This is primarily valuable for detecting
+ bitflips on the wire if using http instead of https as https (the default)
+ will already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int if_sequence_number_lte:
+ If the blob's sequence number is less than or equal to
+ the specified value, the request proceeds; otherwise it fails.
+ :param int if_sequence_number_lt:
+ If the blob's sequence number is less than the specified
+ value, the request proceeds; otherwise it fails.
+ :param int if_sequence_number_eq:
+ If the blob's sequence number is equal to the specified
+ value, the request proceeds; otherwise it fails.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for this conditional
+ header to write the page only if the blob's ETag value matches the
+ value specified. If the values do not match, the Blob service fails.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for this conditional
+ header to write the page only if the blob's ETag value does not
+ match the value specified. If the values are identical, the Blob
+ service fails.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Page Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+
+ _validate_encryption_unsupported(self.require_encryption, self.key_encryption_key)
+
+ return self._update_page(
+ container_name,
+ blob_name,
+ page,
+ start_range,
+ end_range,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ if_sequence_number_lte=if_sequence_number_lte,
+ if_sequence_number_lt=if_sequence_number_lt,
+ if_sequence_number_eq=if_sequence_number_eq,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout
+ )
+
+ def clear_page(
+ self, container_name, blob_name, start_range, end_range,
+ lease_id=None, if_sequence_number_lte=None,
+ if_sequence_number_lt=None, if_sequence_number_eq=None,
+ if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None):
+ '''
+ Clears a range of pages.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param int start_range:
+ Start of byte range to use for writing to a section of the blob.
+ Pages must be aligned with 512-byte boundaries, the start offset
+ must be a modulus of 512 and the end offset must be a modulus of
+ 512-1. Examples of valid byte ranges are 0-511, 512-1023, etc.
+ :param int end_range:
+ End of byte range to use for writing to a section of the blob.
+ Pages must be aligned with 512-byte boundaries, the start offset
+ must be a modulus of 512 and the end offset must be a modulus of
+ 512-1. Examples of valid byte ranges are 0-511, 512-1023, etc.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param int if_sequence_number_lte:
+ If the blob's sequence number is less than or equal to
+ the specified value, the request proceeds; otherwise it fails.
+ :param int if_sequence_number_lt:
+ If the blob's sequence number is less than the specified
+ value, the request proceeds; otherwise it fails.
+ :param int if_sequence_number_eq:
+ If the blob's sequence number is equal to the specified
+ value, the request proceeds; otherwise it fails.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for this conditional
+ header to write the page only if the blob's ETag value matches the
+ value specified. If the values do not match, the Blob service fails.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for this conditional
+ header to write the page only if the blob's ETag value does not
+ match the value specified. If the values are identical, the Blob
+ service fails.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Page Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'page',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-page-write': 'clear',
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'x-ms-if-sequence-number-le': _to_str(if_sequence_number_lte),
+ 'x-ms-if-sequence-number-lt': _to_str(if_sequence_number_lt),
+ 'x-ms-if-sequence-number-eq': _to_str(if_sequence_number_eq),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match)
+ }
+ _validate_and_format_range_headers(
+ request,
+ start_range,
+ end_range,
+ align_to_page=True)
+
+ return self._perform_request(request, _parse_page_properties)
+
+ def get_page_ranges(
+ self, container_name, blob_name, snapshot=None, start_range=None,
+ end_range=None, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None):
+ '''
+ Returns the list of valid page ranges for a Page Blob or snapshot
+ of a page blob.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that,
+ when present, specifies the blob snapshot to retrieve information
+ from.
+ :param int start_range:
+ Start of byte range to use for getting valid page ranges.
+ If no end_range is given, all bytes after the start_range will be searched.
+ Pages must be aligned with 512-byte boundaries, the start offset
+ must be a modulus of 512 and the end offset must be a modulus of
+ 512-1. Examples of valid byte ranges are 0-511, 512-, etc.
+ :param int end_range:
+ End of byte range to use for getting valid page ranges.
+ If end_range is given, start_range must be provided.
+ This range will return valid page ranges for from the offset start up to
+ offset end.
+ Pages must be aligned with 512-byte boundaries, the start offset
+ must be a modulus of 512 and the end offset must be a modulus of
+ 512-1. Examples of valid byte ranges are 0-511, 512-, etc.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: A list of valid Page Ranges for the Page Blob.
+ :rtype: list(:class:`~azure.storage.blob.models.PageRange`)
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'pagelist',
+ 'snapshot': _to_str(snapshot),
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+ if start_range is not None:
+ _validate_and_format_range_headers(
+ request,
+ start_range,
+ end_range,
+ start_range_required=False,
+ end_range_required=False,
+ align_to_page=True)
+
+ return self._perform_request(request, _convert_xml_to_page_ranges)
+
+ def get_page_ranges_diff(
+ self, container_name, blob_name, previous_snapshot, snapshot=None,
+ start_range=None, end_range=None, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None):
+ '''
+ The response will include only the pages that are different between either a
+ recent snapshot or the current blob and a previous snapshot, including pages
+ that were cleared.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str previous_snapshot:
+ The snapshot parameter is an opaque DateTime value that
+ specifies a previous blob snapshot to be compared
+ against a more recent snapshot or the current blob.
+ :param str snapshot:
+ The snapshot parameter is an opaque DateTime value that
+ specifies a more recent blob snapshot to be compared
+ against a previous snapshot (previous_snapshot).
+ :param int start_range:
+ Start of byte range to use for getting different page ranges.
+ If no end_range is given, all bytes after the start_range will be searched.
+ Pages must be aligned with 512-byte boundaries, the start offset
+ must be a modulus of 512 and the end offset must be a modulus of
+ 512-1. Examples of valid byte ranges are 0-511, 512-, etc.
+ :param int end_range:
+ End of byte range to use for getting different page ranges.
+ If end_range is given, start_range must be provided.
+ This range will return valid page ranges for from the offset start up to
+ offset end.
+ Pages must be aligned with 512-byte boundaries, the start offset
+ must be a modulus of 512 and the end offset must be a modulus of
+ 512-1. Examples of valid byte ranges are 0-511, 512-, etc.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: A list of different Page Ranges for the Page Blob.
+ :rtype: list(:class:`~azure.storage.blob.models.PageRange`)
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('previous_snapshot', previous_snapshot)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'pagelist',
+ 'snapshot': _to_str(snapshot),
+ 'prevsnapshot': _to_str(previous_snapshot),
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+ if start_range is not None:
+ _validate_and_format_range_headers(
+ request,
+ start_range,
+ end_range,
+ start_range_required=False,
+ end_range_required=False,
+ align_to_page=True)
+
+ return self._perform_request(request, _convert_xml_to_page_ranges)
+
+ def set_sequence_number(
+ self, container_name, blob_name, sequence_number_action, sequence_number=None,
+ lease_id=None, if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None):
+
+ '''
+ Sets the blob sequence number.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param str sequence_number_action:
+ This property indicates how the service should modify the blob's sequence
+ number. See :class:`~azure.storage.blob.models.SequenceNumberAction` for more information.
+ :param str sequence_number:
+ This property sets the blob's sequence number. The sequence number is a
+ user-controlled property that you can use to track requests and manage
+ concurrency issues.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Page Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('sequence_number_action', sequence_number_action)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-blob-sequence-number': _to_str(sequence_number),
+ 'x-ms-sequence-number-action': _to_str(sequence_number_action),
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+
+ return self._perform_request(request, _parse_page_properties)
+
+ def resize_blob(
+ self, container_name, blob_name, content_length,
+ lease_id=None, if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None):
+
+ '''
+ Resizes a page blob to the specified size. If the specified value is less
+ than the current size of the blob, then all pages above the specified value
+ are cleared.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of existing blob.
+ :param int content_length:
+ Size to resize blob to.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: ETag and last modified properties for the updated Page Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('content_length', content_length)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-blob-content-length': _to_str(content_length),
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match),
+ }
+
+ return self._perform_request(request, _parse_page_properties)
+
+ # ----Convenience APIs-----------------------------------------------------
+
+ def create_blob_from_path(
+ self, container_name, blob_name, file_path, content_settings=None,
+ metadata=None, validate_content=False, progress_callback=None, max_connections=2,
+ lease_id=None, if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None, premium_page_blob_tier=None):
+ '''
+ Creates a new blob from a file path, or updates the content of an
+ existing blob, with automatic chunking and progress notifications.
+ Empty chunks are skipped, while non-emtpy ones(even if only partly filled) are uploaded.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param str file_path:
+ Path of the file to upload as the blob content.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set blob properties.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each page of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :param premium_page_blob_tier:
+ A page blob tier value to set the blob to. The tier correlates to the size of the
+ blob and number of allowed IOPS. This is only applicable to page blobs on
+ premium storage accounts.
+ :return: ETag and last modified properties for the Page Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('file_path', file_path)
+
+ count = path.getsize(file_path)
+ with open(file_path, 'rb') as stream:
+ return self.create_blob_from_stream(
+ container_name=container_name,
+ blob_name=blob_name,
+ stream=stream,
+ count=count,
+ content_settings=content_settings,
+ metadata=metadata,
+ validate_content=validate_content,
+ progress_callback=progress_callback,
+ max_connections=max_connections,
+ lease_id=lease_id,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout,
+ premium_page_blob_tier=premium_page_blob_tier)
+
+ def create_blob_from_stream(
+ self, container_name, blob_name, stream, count, content_settings=None,
+ metadata=None, validate_content=False, progress_callback=None,
+ max_connections=2, lease_id=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None,
+ premium_page_blob_tier=None):
+ '''
+ Creates a new blob from a file/stream, or updates the content of an
+ existing blob, with automatic chunking and progress notifications.
+ Empty chunks are skipped, while non-emtpy ones(even if only partly filled) are uploaded.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param io.IOBase stream:
+ Opened file/stream to upload as the blob content.
+ :param int count:
+ Number of bytes to read from the stream. This is required, a page
+ blob cannot be created if the count is unknown.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set the blob properties.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each page of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use. Note that parallel upload
+ requires the stream to be seekable.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :param premium_page_blob_tier:
+ A page blob tier value to set the blob to. The tier correlates to the size of the
+ blob and number of allowed IOPS. This is only applicable to page blobs on
+ premium storage accounts.
+ :return: ETag and last modified properties for the Page Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('stream', stream)
+ _validate_not_none('count', count)
+ _validate_encryption_required(self.require_encryption, self.key_encryption_key)
+
+ if count < 0:
+ raise ValueError(_ERROR_VALUE_NEGATIVE.format('count'))
+
+ if count % _PAGE_ALIGNMENT != 0:
+ raise ValueError(_ERROR_PAGE_BLOB_SIZE_ALIGNMENT.format(count))
+
+ cek, iv, encryption_data = None, None, None
+ if self.key_encryption_key is not None:
+ cek, iv, encryption_data = _generate_blob_encryption_data(self.key_encryption_key)
+
+ response = self._create_blob(
+ container_name=container_name,
+ blob_name=blob_name,
+ content_length=count,
+ content_settings=content_settings,
+ metadata=metadata,
+ lease_id=lease_id,
+ premium_page_blob_tier=premium_page_blob_tier,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout,
+ encryption_data=encryption_data
+ )
+
+ if count == 0:
+ return response
+
+ # _upload_blob_chunks returns the block ids for block blobs so resource_properties
+ # is passed as a parameter to get the last_modified and etag for page and append blobs.
+ # this info is not needed for block_blobs since _put_block_list is called after which gets this info
+ resource_properties = ResourceProperties()
+ _upload_blob_chunks(
+ blob_service=self,
+ container_name=container_name,
+ blob_name=blob_name,
+ blob_size=count,
+ block_size=self.MAX_PAGE_SIZE,
+ stream=stream,
+ max_connections=max_connections,
+ progress_callback=progress_callback,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ uploader_class=_PageBlobChunkUploader,
+ if_match=response.etag,
+ timeout=timeout,
+ content_encryption_key=cek,
+ initialization_vector=iv,
+ resource_properties=resource_properties
+ )
+
+ return resource_properties
+
+ def create_blob_from_bytes(
+ self, container_name, blob_name, blob, index=0, count=None,
+ content_settings=None, metadata=None, validate_content=False,
+ progress_callback=None, max_connections=2, lease_id=None,
+ if_modified_since=None, if_unmodified_since=None, if_match=None,
+ if_none_match=None, timeout=None, premium_page_blob_tier=None):
+ '''
+ Creates a new blob from an array of bytes, or updates the content
+ of an existing blob, with automatic chunking and progress
+ notifications. Empty chunks are skipped, while non-emtpy ones(even if only partly filled) are uploaded.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to create or update.
+ :param bytes blob:
+ Content of blob as an array of bytes.
+ :param int index:
+ Start index in the byte array.
+ :param int count:
+ Number of bytes to upload. Set to None or negative value to upload
+ all bytes starting from index.
+ :param ~azure.storage.blob.models.ContentSettings content_settings:
+ ContentSettings object used to set blob properties.
+ :param metadata:
+ Name-value pairs associated with the blob as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each page of the blob. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ blob.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far, and total is the
+ size of the blob, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use.
+ :param str lease_id:
+ Required if the blob has an active lease.
+ :param datetime if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only
+ if the resource has been modified since the specified time.
+ :param datetime if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this header to perform the operation only if
+ the resource has not been modified since the specified date/time.
+ :param str if_match:
+ An ETag value, or the wildcard character (*). Specify this header to perform
+ the operation only if the resource's ETag matches the value specified.
+ :param str if_none_match:
+ An ETag value, or the wildcard character (*). Specify this header
+ to perform the operation only if the resource's ETag does not match
+ the value specified. Specify the wildcard character (*) to perform
+ the operation only if the resource does not exist, and fail the
+ operation if it does exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :param premium_page_blob_tier:
+ A page blob tier value to set the blob to. The tier correlates to the size of the
+ blob and number of allowed IOPS. This is only applicable to page blobs on
+ premium storage accounts.
+ :return: ETag and last modified properties for the Page Blob
+ :rtype: :class:`~azure.storage.blob.models.ResourceProperties`
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('blob', blob)
+ _validate_type_bytes('blob', blob)
+
+ if index < 0:
+ raise IndexError(_ERROR_VALUE_NEGATIVE.format('index'))
+
+ if count is None or count < 0:
+ count = len(blob) - index
+
+ stream = BytesIO(blob)
+ stream.seek(index)
+
+ return self.create_blob_from_stream(
+ container_name=container_name,
+ blob_name=blob_name,
+ stream=stream,
+ count=count,
+ content_settings=content_settings,
+ metadata=metadata,
+ validate_content=validate_content,
+ lease_id=lease_id,
+ progress_callback=progress_callback,
+ max_connections=max_connections,
+ if_modified_since=if_modified_since,
+ if_unmodified_since=if_unmodified_since,
+ if_match=if_match,
+ if_none_match=if_none_match,
+ timeout=timeout,
+ premium_page_blob_tier=premium_page_blob_tier)
+
+ def set_premium_page_blob_tier(
+ self, container_name, blob_name, premium_page_blob_tier,
+ timeout=None):
+ '''
+ Sets the page blob tiers on the blob. This API is only supported for page blobs on premium accounts.
+
+ :param str container_name:
+ Name of existing container.
+ :param str blob_name:
+ Name of blob to update.
+ :param PremiumPageBlobTier premium_page_blob_tier:
+ A page blob tier value to set the blob to. The tier correlates to the size of the
+ blob and number of allowed IOPS. This is only applicable to page blobs on
+ premium storage accounts.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ '''
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('premium_page_blob_tier', premium_page_blob_tier)
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'tier',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-access-tier': _to_str(premium_page_blob_tier)
+ }
+
+ self._perform_request(request)
+
+ def copy_blob(self, container_name, blob_name, copy_source,
+ metadata=None,
+ source_if_modified_since=None,
+ source_if_unmodified_since=None,
+ source_if_match=None, source_if_none_match=None,
+ destination_if_modified_since=None,
+ destination_if_unmodified_since=None,
+ destination_if_match=None,
+ destination_if_none_match=None,
+ destination_lease_id=None,
+ source_lease_id=None, timeout=None,
+ premium_page_blob_tier=None):
+ '''
+ Copies a blob asynchronously. This operation returns a copy operation
+ properties object, including a copy ID you can use to check or abort the
+ copy operation. The Blob service copies blobs on a best-effort basis.
+
+ The source blob for a copy operation must be a page blob. If the destination
+ blob already exists, it must be of the same blob type as the source blob.
+ Any existing destination blob will be overwritten.
+ The destination blob cannot be modified while a copy operation is in progress.
+
+ When copying from a page blob, the Blob service creates a destination page
+ blob of the source blob's length, initially containing all zeroes. Then
+ the source page ranges are enumerated, and non-empty ranges are copied.
+
+ If the tier on the source blob is larger than the tier being passed to this
+ copy operation or if the size of the blob exceeds the tier being passed to
+ this copy operation then the operation will fail.
+
+ You can call get_blob_properties on the destination
+ blob to check the status of the copy operation. The final blob will be
+ committed when the copy completes.
+
+ :param str container_name:
+ Name of the destination container. The container must exist.
+ :param str blob_name:
+ Name of the destination blob. If the destination blob exists, it will
+ be overwritten. Otherwise, it will be created.
+ :param str copy_source:
+ A URL of up to 2 KB in length that specifies an Azure file or blob.
+ The value should be URL-encoded as it would appear in a request URI.
+ If the source is in another account, the source must either be public
+ or must be authenticated via a shared access signature. If the source
+ is public, no authentication is required.
+ Examples:
+ https://myaccount.blob.core.windows.net/mycontainer/myblob
+ https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=
+ https://otheraccount.blob.core.windows.net/mycontainer/myblob?sastoken
+ :param metadata:
+ Name-value pairs associated with the blob as metadata. If no name-value
+ pairs are specified, the operation will copy the metadata from the
+ source blob or file to the destination blob. If one or more name-value
+ pairs are specified, the destination blob is created with the specified
+ metadata, and metadata is not copied from the source blob or file.
+ :type metadata: dict(str, str).
+ :param datetime source_if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only if the source
+ blob has been modified since the specified date/time.
+ :param datetime source_if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only if the source blob
+ has not been modified since the specified date/time.
+ :param ETag source_if_match:
+ An ETag value, or the wildcard character (*). Specify this conditional
+ header to copy the source blob only if its ETag matches the value
+ specified. If the ETag values do not match, the Blob service returns
+ status code 412 (Precondition Failed). This header cannot be specified
+ if the source is an Azure File.
+ :param ETag source_if_none_match:
+ An ETag value, or the wildcard character (*). Specify this conditional
+ header to copy the blob only if its ETag does not match the value
+ specified. If the values are identical, the Blob service returns status
+ code 412 (Precondition Failed). This header cannot be specified if the
+ source is an Azure File.
+ :param datetime destination_if_modified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only
+ if the destination blob has been modified since the specified date/time.
+ If the destination blob has not been modified, the Blob service returns
+ status code 412 (Precondition Failed).
+ :param datetime destination_if_unmodified_since:
+ A DateTime value. Azure expects the date value passed in to be UTC.
+ If timezone is included, any non-UTC datetimes will be converted to UTC.
+ If a date is passed in without timezone info, it is assumed to be UTC.
+ Specify this conditional header to copy the blob only
+ if the destination blob has not been modified since the specified
+ date/time. If the destination blob has been modified, the Blob service
+ returns status code 412 (Precondition Failed).
+ :param ETag destination_if_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for
+ this conditional header to copy the blob only if the specified ETag value
+ matches the ETag value for an existing destination blob. If the ETag for
+ the destination blob does not match the ETag specified for If-Match, the
+ Blob service returns status code 412 (Precondition Failed).
+ :param ETag destination_if_none_match:
+ An ETag value, or the wildcard character (*). Specify an ETag value for
+ this conditional header to copy the blob only if the specified ETag value
+ does not match the ETag value for the destination blob. Specify the wildcard
+ character (*) to perform the operation only if the destination blob does not
+ exist. If the specified condition isn't met, the Blob service returns status
+ code 412 (Precondition Failed).
+ :param str destination_lease_id:
+ The lease ID specified for this header must match the lease ID of the
+ destination blob. If the request does not include the lease ID or it is not
+ valid, the operation fails with status code 412 (Precondition Failed).
+ :param str source_lease_id:
+ Specify this to perform the Copy Blob operation only if
+ the lease ID given matches the active lease ID of the source blob.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param PageBlobTier premium_page_blob_tier:
+ A page blob tier value to set on the destination blob. The tier correlates to
+ the size of the blob and number of allowed IOPS. This is only applicable to
+ page blobs on premium storage accounts.
+ If the tier on the source blob is larger than the tier being passed to this
+ copy operation or if the size of the blob exceeds the tier being passed to
+ this copy operation then the operation will fail.
+ :return: Copy operation properties such as status, source, and ID.
+ :rtype: :class:`~azure.storage.blob.models.CopyProperties`
+ '''
+ return self._copy_blob(container_name, blob_name, copy_source,
+ metadata, premium_page_blob_tier,
+ source_if_modified_since, source_if_unmodified_since,
+ source_if_match, source_if_none_match,
+ destination_if_modified_since,
+ destination_if_unmodified_since,
+ destination_if_match,
+ destination_if_none_match,
+ destination_lease_id,
+ source_lease_id, timeout,
+ False)
+
+ # -----Helper methods-----------------------------------------------------
+
+ def _create_blob(
+ self, container_name, blob_name, content_length, content_settings=None,
+ sequence_number=None, metadata=None, lease_id=None, premium_page_blob_tier=None, if_modified_since=None,
+ if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None,
+ encryption_data=None):
+ '''
+ See create_blob for more details. This helper method
+ allows for encryption or other such special behavior because
+ it is safely handled by the library. These behaviors are
+ prohibited in the public version of this function.
+ :param str encryption_data:
+ The JSON formatted encryption metadata to upload as a part of the blob.
+ This should only be passed internally from other methods and only applied
+ when uploading entire blob contents immediately follows creation of the blob.
+ '''
+
+ _validate_not_none('container_name', container_name)
+ _validate_not_none('blob_name', blob_name)
+ _validate_not_none('content_length', content_length)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {'timeout': _int_to_str(timeout)}
+ request.headers = {
+ 'x-ms-blob-type': _to_str(self.blob_type),
+ 'x-ms-blob-content-length': _to_str(content_length),
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'x-ms-blob-sequence-number': _to_str(sequence_number),
+ 'x-ms-access-tier': _to_str(premium_page_blob_tier),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match)
+ }
+ _add_metadata_headers(metadata, request)
+ if content_settings is not None:
+ request.headers.update(content_settings._to_headers())
+
+ if encryption_data is not None:
+ request.headers['x-ms-meta-encryptiondata'] = encryption_data
+
+ return self._perform_request(request, _parse_base_properties)
+
+ def _update_page(
+ self, container_name, blob_name, page, start_range, end_range,
+ validate_content=False, lease_id=None, if_sequence_number_lte=None,
+ if_sequence_number_lt=None, if_sequence_number_eq=None,
+ if_modified_since=None, if_unmodified_since=None,
+ if_match=None, if_none_match=None, timeout=None):
+ '''
+ See update_page for more details. This helper method
+ allows for encryption or other such special behavior because
+ it is safely handled by the library. These behaviors are
+ prohibited in the public version of this function.
+ '''
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(container_name, blob_name)
+ request.query = {
+ 'comp': 'page',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-page-write': 'update',
+ 'x-ms-lease-id': _to_str(lease_id),
+ 'x-ms-if-sequence-number-le': _to_str(if_sequence_number_lte),
+ 'x-ms-if-sequence-number-lt': _to_str(if_sequence_number_lt),
+ 'x-ms-if-sequence-number-eq': _to_str(if_sequence_number_eq),
+ 'If-Modified-Since': _datetime_to_utc_string(if_modified_since),
+ 'If-Unmodified-Since': _datetime_to_utc_string(if_unmodified_since),
+ 'If-Match': _to_str(if_match),
+ 'If-None-Match': _to_str(if_none_match)
+ }
+ _validate_and_format_range_headers(
+ request,
+ start_range,
+ end_range,
+ align_to_page=True)
+ request.body = _get_data_bytes_only('page', page)
+
+ if validate_content:
+ computed_md5 = _get_content_md5(request.body)
+ request.headers['Content-MD5'] = _to_str(computed_md5)
+
+ return self._perform_request(request, _parse_page_properties)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/sharedaccesssignature.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/sharedaccesssignature.py
new file mode 100644
index 00000000000..472ce7875ce
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/blob/sharedaccesssignature.py
@@ -0,0 +1,179 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+from ..common.sharedaccesssignature import (
+ SharedAccessSignature,
+ _SharedAccessHelper,
+)
+from ._constants import X_MS_VERSION
+
+
+class BlobSharedAccessSignature(SharedAccessSignature):
+ '''
+ Provides a factory for creating blob and container access
+ signature tokens with a common account name and account key. Users can either
+ use the factory or can construct the appropriate service and use the
+ generate_*_shared_access_signature method directly.
+ '''
+
+ def __init__(self, account_name, account_key):
+ '''
+ :param str account_name:
+ The storage account name used to generate the shared access signatures.
+ :param str account_key:
+ The access key to generate the shares access signatures.
+ '''
+ super(BlobSharedAccessSignature, self).__init__(account_name, account_key, x_ms_version=X_MS_VERSION)
+
+ def generate_blob(self, container_name, blob_name, permission=None,
+ expiry=None, start=None, id=None, ip=None, protocol=None,
+ cache_control=None, content_disposition=None,
+ content_encoding=None, content_language=None,
+ content_type=None):
+ '''
+ Generates a shared access signature for the blob.
+ Use the returned signature with the sas_token parameter of any BlobService.
+
+ :param str container_name:
+ Name of container.
+ :param str blob_name:
+ Name of blob.
+ :param BlobPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, write, delete, list.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use
+ set_blob_service_properties.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :param str cache_control:
+ Response header value for Cache-Control when resource is accessed
+ using this shared access signature.
+ :param str content_disposition:
+ Response header value for Content-Disposition when resource is accessed
+ using this shared access signature.
+ :param str content_encoding:
+ Response header value for Content-Encoding when resource is accessed
+ using this shared access signature.
+ :param str content_language:
+ Response header value for Content-Language when resource is accessed
+ using this shared access signature.
+ :param str content_type:
+ Response header value for Content-Type when resource is accessed
+ using this shared access signature.
+ '''
+ resource_path = container_name + '/' + blob_name
+
+ sas = _SharedAccessHelper()
+ sas.add_base(permission, expiry, start, ip, protocol, self.x_ms_version)
+ sas.add_id(id)
+ sas.add_resource('b')
+ sas.add_override_response_headers(cache_control, content_disposition,
+ content_encoding, content_language,
+ content_type)
+ sas.add_resource_signature(self.account_name, self.account_key, 'blob', resource_path)
+
+ return sas.get_token()
+
+ def generate_container(self, container_name, permission=None, expiry=None,
+ start=None, id=None, ip=None, protocol=None,
+ cache_control=None, content_disposition=None,
+ content_encoding=None, content_language=None,
+ content_type=None):
+ '''
+ Generates a shared access signature for the container.
+ Use the returned signature with the sas_token parameter of any BlobService.
+
+ :param str container_name:
+ Name of container.
+ :param ContainerPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, write, delete, list.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use
+ set_blob_service_properties.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :param str cache_control:
+ Response header value for Cache-Control when resource is accessed
+ using this shared access signature.
+ :param str content_disposition:
+ Response header value for Content-Disposition when resource is accessed
+ using this shared access signature.
+ :param str content_encoding:
+ Response header value for Content-Encoding when resource is accessed
+ using this shared access signature.
+ :param str content_language:
+ Response header value for Content-Language when resource is accessed
+ using this shared access signature.
+ :param str content_type:
+ Response header value for Content-Type when resource is accessed
+ using this shared access signature.
+ '''
+ sas = _SharedAccessHelper()
+ sas.add_base(permission, expiry, start, ip, protocol, self.x_ms_version)
+ sas.add_id(id)
+ sas.add_resource('c')
+ sas.add_override_response_headers(cache_control, content_disposition,
+ content_encoding, content_language,
+ content_type)
+ sas.add_resource_signature(self.account_name, self.account_key, 'blob', container_name)
+
+ return sas.get_token()
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/__init__.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/__init__.py
new file mode 100644
index 00000000000..1307fe624b9
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/__init__.py
@@ -0,0 +1,37 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from ._constants import (
+ __author__,
+ __version__,
+ DEFAULT_X_MS_VERSION,
+)
+from .cloudstorageaccount import CloudStorageAccount
+from .models import (
+ RetentionPolicy,
+ Logging,
+ Metrics,
+ CorsRule,
+ DeleteRetentionPolicy,
+ ServiceProperties,
+ AccessPolicy,
+ ResourceTypes,
+ Services,
+ AccountPermissions,
+ Protocol,
+ ServiceStats,
+ GeoReplication,
+ LocationMode,
+ RetryContext,
+)
+from .retry import (
+ ExponentialRetry,
+ LinearRetry,
+ no_retry,
+)
+from .sharedaccesssignature import (
+ SharedAccessSignature,
+)
+from .tokencredential import TokenCredential
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_auth.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_auth.py
new file mode 100644
index 00000000000..6ae446fc82e
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_auth.py
@@ -0,0 +1,125 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from ._common_conversion import (
+ _sign_string,
+)
+from ._constants import (
+ DEV_ACCOUNT_NAME,
+ DEV_ACCOUNT_SECONDARY_NAME
+)
+
+import logging
+logger = logging.getLogger(__name__)
+
+
+class _StorageSharedKeyAuthentication(object):
+ def __init__(self, account_name, account_key, is_emulated=False):
+ self.account_name = account_name
+ self.account_key = account_key
+ self.is_emulated = is_emulated
+
+ def _get_headers(self, request, headers_to_sign):
+ headers = dict((name.lower(), value) for name, value in request.headers.items() if value)
+ if 'content-length' in headers and headers['content-length'] == '0':
+ del headers['content-length']
+ return '\n'.join(headers.get(x, '') for x in headers_to_sign) + '\n'
+
+ def _get_verb(self, request):
+ return request.method + '\n'
+
+ def _get_canonicalized_resource(self, request):
+ uri_path = request.path.split('?')[0]
+
+ # for emulator, use the DEV_ACCOUNT_NAME instead of DEV_ACCOUNT_SECONDARY_NAME
+ # as this is how the emulator works
+ if self.is_emulated and uri_path.find(DEV_ACCOUNT_SECONDARY_NAME) == 1:
+ # only replace the first instance
+ uri_path = uri_path.replace(DEV_ACCOUNT_SECONDARY_NAME, DEV_ACCOUNT_NAME, 1)
+
+ return '/' + self.account_name + uri_path
+
+ def _get_canonicalized_headers(self, request):
+ string_to_sign = ''
+ x_ms_headers = []
+ for name, value in request.headers.items():
+ if name.startswith('x-ms-'):
+ x_ms_headers.append((name.lower(), value))
+ x_ms_headers.sort()
+ for name, value in x_ms_headers:
+ if value is not None:
+ string_to_sign += ''.join([name, ':', value, '\n'])
+ return string_to_sign
+
+ def _add_authorization_header(self, request, string_to_sign):
+ signature = _sign_string(self.account_key, string_to_sign)
+ auth_string = 'SharedKey ' + self.account_name + ':' + signature
+ request.headers['Authorization'] = auth_string
+
+
+class _StorageSharedKeyAuthentication(_StorageSharedKeyAuthentication):
+ def sign_request(self, request):
+ string_to_sign = \
+ self._get_verb(request) + \
+ self._get_headers(
+ request,
+ [
+ 'content-encoding', 'content-language', 'content-length',
+ 'content-md5', 'content-type', 'date', 'if-modified-since',
+ 'if-match', 'if-none-match', 'if-unmodified-since', 'byte_range'
+ ]
+ ) + \
+ self._get_canonicalized_headers(request) + \
+ self._get_canonicalized_resource(request) + \
+ self._get_canonicalized_resource_query(request)
+
+ self._add_authorization_header(request, string_to_sign)
+ logger.debug("String_to_sign=%s", string_to_sign)
+
+ def _get_canonicalized_resource_query(self, request):
+ sorted_queries = [(name, value) for name, value in request.query.items()]
+ sorted_queries.sort()
+
+ string_to_sign = ''
+ for name, value in sorted_queries:
+ if value:
+ string_to_sign += '\n' + name.lower() + ':' + value
+
+ return string_to_sign
+
+
+class _StorageNoAuthentication(object):
+ def sign_request(self, request):
+ pass
+
+
+class _StorageSASAuthentication(object):
+ def __init__(self, sas_token):
+ # ignore ?-prefix (added by tools such as Azure Portal) on sas tokens
+ # doing so avoids double question marks when signing
+ if sas_token[0] == '?':
+ self.sas_token = sas_token[1:]
+ else:
+ self.sas_token = sas_token
+
+ def sign_request(self, request):
+ # if 'sig=' is present, then the request has already been signed
+ # as is the case when performing retries
+ if 'sig=' in request.path:
+ return
+ if '?' in request.path:
+ request.path += '&'
+ else:
+ request.path += '?'
+
+ request.path += self.sas_token
+
+
+class _StorageTokenAuthentication(object):
+ def __init__(self, token):
+ self.token_credential = token
+
+ def sign_request(self, request):
+ request.headers['Authorization'] = str.format("Bearer {}", self.token_credential.get_token())
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_common_conversion.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_common_conversion.py
new file mode 100644
index 00000000000..8b50afbe1af
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_common_conversion.py
@@ -0,0 +1,126 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+import base64
+import hashlib
+import hmac
+import sys
+from io import (SEEK_SET)
+
+from dateutil.tz import tzutc
+
+from ._error import (
+ _ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM,
+ _ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM,
+)
+from .models import (
+ _unicode_type,
+)
+
+if sys.version_info < (3,):
+ def _str(value):
+ if isinstance(value, unicode):
+ return value.encode('utf-8')
+
+ return str(value)
+else:
+ _str = str
+
+
+def _to_str(value):
+ return _str(value) if value is not None else None
+
+
+def _int_to_str(value):
+ return str(int(value)) if value is not None else None
+
+
+def _bool_to_str(value):
+ if value is None:
+ return None
+
+ if isinstance(value, bool):
+ if value:
+ return 'true'
+ else:
+ return 'false'
+
+ return str(value)
+
+
+def _to_utc_datetime(value):
+ return value.strftime('%Y-%m-%dT%H:%M:%SZ')
+
+
+def _datetime_to_utc_string(value):
+ # Azure expects the date value passed in to be UTC.
+ # Azure will always return values as UTC.
+ # If a date is passed in without timezone info, it is assumed to be UTC.
+ if value is None:
+ return None
+
+ if value.tzinfo:
+ value = value.astimezone(tzutc())
+
+ return value.strftime('%a, %d %b %Y %H:%M:%S GMT')
+
+
+def _encode_base64(data):
+ if isinstance(data, _unicode_type):
+ data = data.encode('utf-8')
+ encoded = base64.b64encode(data)
+ return encoded.decode('utf-8')
+
+
+def _decode_base64_to_bytes(data):
+ if isinstance(data, _unicode_type):
+ data = data.encode('utf-8')
+ return base64.b64decode(data)
+
+
+def _decode_base64_to_text(data):
+ decoded_bytes = _decode_base64_to_bytes(data)
+ return decoded_bytes.decode('utf-8')
+
+
+def _sign_string(key, string_to_sign, key_is_base64=True):
+ if key_is_base64:
+ key = _decode_base64_to_bytes(key)
+ else:
+ if isinstance(key, _unicode_type):
+ key = key.encode('utf-8')
+ if isinstance(string_to_sign, _unicode_type):
+ string_to_sign = string_to_sign.encode('utf-8')
+ signed_hmac_sha256 = hmac.HMAC(key, string_to_sign, hashlib.sha256)
+ digest = signed_hmac_sha256.digest()
+ encoded_digest = _encode_base64(digest)
+ return encoded_digest
+
+
+def _get_content_md5(data):
+ md5 = hashlib.md5()
+ if isinstance(data, bytes):
+ md5.update(data)
+ elif hasattr(data, 'read'):
+ pos = 0
+ try:
+ pos = data.tell()
+ except:
+ pass
+ for chunk in iter(lambda: data.read(4096), b""):
+ md5.update(chunk)
+ try:
+ data.seek(pos, SEEK_SET)
+ except (AttributeError, IOError):
+ raise ValueError(_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM.format('data'))
+ else:
+ raise ValueError(_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM.format('data'))
+
+ return base64.b64encode(md5.digest()).decode('utf-8')
+
+
+def _lower(text):
+ return text.lower()
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_connection.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_connection.py
new file mode 100644
index 00000000000..1388fddeb62
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_connection.py
@@ -0,0 +1,160 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+
+if sys.version_info >= (3,):
+ from urllib.parse import urlparse
+else:
+ from urlparse import urlparse
+
+from ._constants import (
+ SERVICE_HOST_BASE,
+ DEFAULT_PROTOCOL,
+ DEV_ACCOUNT_NAME,
+ DEV_ACCOUNT_SECONDARY_NAME,
+ DEV_ACCOUNT_KEY,
+ DEV_BLOB_HOST,
+ DEV_QUEUE_HOST,
+)
+from ._error import (
+ _ERROR_STORAGE_MISSING_INFO,
+)
+
+_EMULATOR_ENDPOINTS = {
+ 'blob': DEV_BLOB_HOST,
+ 'queue': DEV_QUEUE_HOST,
+ 'file': '',
+}
+
+_CONNECTION_ENDPOINTS = {
+ 'blob': 'BlobEndpoint',
+ 'queue': 'QueueEndpoint',
+ 'file': 'FileEndpoint',
+}
+
+_CONNECTION_ENDPOINTS_SECONDARY = {
+ 'blob': 'BlobSecondaryEndpoint',
+ 'queue': 'QueueSecondaryEndpoint',
+ 'file': 'FileSecondaryEndpoint',
+}
+
+
+class _ServiceParameters(object):
+ def __init__(self, service, account_name=None, account_key=None, sas_token=None, token_credential=None,
+ is_emulated=False, protocol=DEFAULT_PROTOCOL, endpoint_suffix=SERVICE_HOST_BASE,
+ custom_domain=None, custom_domain_secondary=None):
+
+ self.account_name = account_name
+ self.account_key = account_key
+ self.sas_token = sas_token
+ self.token_credential = token_credential
+ self.protocol = protocol or DEFAULT_PROTOCOL
+ self.is_emulated = is_emulated
+
+ if is_emulated:
+ self.account_name = DEV_ACCOUNT_NAME
+ self.protocol = 'http'
+
+ # Only set the account key if a sas_token is not present to allow sas to be used with the emulator
+ self.account_key = DEV_ACCOUNT_KEY if not self.sas_token else None
+
+ self.primary_endpoint = '{}/{}'.format(_EMULATOR_ENDPOINTS[service], DEV_ACCOUNT_NAME)
+ self.secondary_endpoint = '{}/{}'.format(_EMULATOR_ENDPOINTS[service], DEV_ACCOUNT_SECONDARY_NAME)
+ else:
+ # Strip whitespace from the key
+ if self.account_key:
+ self.account_key = self.account_key.strip()
+
+ endpoint_suffix = endpoint_suffix or SERVICE_HOST_BASE
+
+ # Setup the primary endpoint
+ if custom_domain:
+ parsed_url = urlparse(custom_domain)
+
+ # Trim any trailing slashes from the path
+ path = parsed_url.path.rstrip('/')
+
+ self.primary_endpoint = parsed_url.netloc + path
+ self.protocol = self.protocol if parsed_url.scheme is '' else parsed_url.scheme
+ else:
+ if not self.account_name:
+ raise ValueError(_ERROR_STORAGE_MISSING_INFO)
+ self.primary_endpoint = '{}.{}.{}'.format(self.account_name, service, endpoint_suffix)
+
+ # Setup the secondary endpoint
+ if custom_domain_secondary:
+ if not custom_domain:
+ raise ValueError(_ERROR_STORAGE_MISSING_INFO)
+
+ parsed_url = urlparse(custom_domain_secondary)
+
+ # Trim any trailing slashes from the path
+ path = parsed_url.path.rstrip('/')
+
+ self.secondary_endpoint = parsed_url.netloc + path
+ else:
+ if self.account_name:
+ self.secondary_endpoint = '{}-secondary.{}.{}'.format(self.account_name, service, endpoint_suffix)
+ else:
+ self.secondary_endpoint = None
+
+ @staticmethod
+ def get_service_parameters(service, account_name=None, account_key=None, sas_token=None, token_credential= None,
+ is_emulated=None, protocol=None, endpoint_suffix=None, custom_domain=None,
+ request_session=None, connection_string=None, socket_timeout=None):
+ if connection_string:
+ params = _ServiceParameters._from_connection_string(connection_string, service)
+ elif is_emulated:
+ params = _ServiceParameters(service, is_emulated=True)
+ elif account_name:
+ if protocol.lower() != 'https' and token_credential is not None:
+ raise ValueError("Token credential is only supported with HTTPS.")
+ params = _ServiceParameters(service,
+ account_name=account_name,
+ account_key=account_key,
+ sas_token=sas_token,
+ token_credential=token_credential,
+ is_emulated=is_emulated,
+ protocol=protocol,
+ endpoint_suffix=endpoint_suffix,
+ custom_domain=custom_domain)
+ else:
+ raise ValueError(_ERROR_STORAGE_MISSING_INFO)
+
+ params.request_session = request_session
+ params.socket_timeout = socket_timeout
+ return params
+
+ @staticmethod
+ def _from_connection_string(connection_string, service):
+ # Split into key=value pairs removing empties, then split the pairs into a dict
+ config = dict(s.split('=', 1) for s in connection_string.split(';') if s)
+
+ # Authentication
+ account_name = config.get('AccountName')
+ account_key = config.get('AccountKey')
+ sas_token = config.get('SharedAccessSignature')
+
+ # Emulator
+ is_emulated = config.get('UseDevelopmentStorage')
+
+ # Basic URL Configuration
+ protocol = config.get('DefaultEndpointsProtocol')
+ endpoint_suffix = config.get('EndpointSuffix')
+
+ # Custom URLs
+ endpoint = config.get(_CONNECTION_ENDPOINTS[service])
+ endpoint_secondary = config.get(_CONNECTION_ENDPOINTS_SECONDARY[service])
+
+ return _ServiceParameters(service,
+ account_name=account_name,
+ account_key=account_key,
+ sas_token=sas_token,
+ is_emulated=is_emulated,
+ protocol=protocol,
+ endpoint_suffix=endpoint_suffix,
+ custom_domain=endpoint,
+ custom_domain_secondary=endpoint_secondary)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_constants.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_constants.py
new file mode 100644
index 00000000000..5994579e212
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_constants.py
@@ -0,0 +1,47 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import platform
+import sys
+
+__author__ = 'Microsoft Corp. '
+__version__ = '1.2.0rc0'
+
+# UserAgent string sample: 'Azure-Storage/0.37.0-0.38.0 (Python CPython 3.4.2; Windows 8)'
+# First version(0.37.0) is the common package, and the second version(0.38.0) is the service package
+USER_AGENT_STRING_PREFIX = 'Azure-Storage/{}-'.format(__version__)
+USER_AGENT_STRING_SUFFIX = '(Python {} {}; {} {})'.format(platform.python_implementation(),
+ platform.python_version(), platform.system(),
+ platform.release())
+
+# default values for common package, in case it is used directly
+DEFAULT_X_MS_VERSION = '2017-07-29'
+DEFAULT_USER_AGENT_STRING = '{}None {}'.format(USER_AGENT_STRING_PREFIX, USER_AGENT_STRING_SUFFIX)
+
+# Live ServiceClient URLs
+SERVICE_HOST_BASE = 'core.windows.net'
+DEFAULT_PROTOCOL = 'https'
+
+# Development ServiceClient URLs
+DEV_BLOB_HOST = '127.0.0.1:10000'
+DEV_QUEUE_HOST = '127.0.0.1:10001'
+
+# Default credentials for Development Storage Service
+DEV_ACCOUNT_NAME = 'devstoreaccount1'
+DEV_ACCOUNT_SECONDARY_NAME = 'devstoreaccount1-secondary'
+DEV_ACCOUNT_KEY = 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=='
+
+# Socket timeout in seconds
+DEFAULT_SOCKET_TIMEOUT = 20
+
+# for python 3.5+, there was a change to the definition of the socket timeout (as far as socket.sendall is concerned)
+# The socket timeout is now the maximum total duration to send all data.
+if sys.version_info >= (3, 5):
+ # the timeout to connect is 20 seconds, and the read timeout is 2000 seconds
+ # the 2000 seconds was calculated with: 100MB (max block size)/ 50KB/s (an arbitrarily chosen minimum upload speed)
+ DEFAULT_SOCKET_TIMEOUT = (20, 2000)
+
+# Encryption constants
+_ENCRYPTION_PROTOCOL_V1 = '1.0'
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_deserialization.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_deserialization.py
new file mode 100644
index 00000000000..986d2647617
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_deserialization.py
@@ -0,0 +1,361 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from dateutil import parser
+
+from ._common_conversion import _to_str
+
+try:
+ from xml.etree import cElementTree as ETree
+except ImportError:
+ from xml.etree import ElementTree as ETree
+
+from .models import (
+ ServiceProperties,
+ Logging,
+ Metrics,
+ CorsRule,
+ AccessPolicy,
+ _dict,
+ GeoReplication,
+ ServiceStats,
+ DeleteRetentionPolicy,
+)
+
+
+def _to_int(value):
+ return value if value is None else int(value)
+
+
+def _bool(value):
+ return value.lower() == 'true'
+
+
+def _to_upper_str(value):
+ return _to_str(value).upper() if value is not None else None
+
+
+def _get_download_size(start_range, end_range, resource_size):
+ if start_range is not None:
+ end_range = end_range if end_range else (resource_size if resource_size else None)
+ if end_range is not None:
+ return end_range - start_range
+ else:
+ return None
+ else:
+ return resource_size
+
+
+GET_PROPERTIES_ATTRIBUTE_MAP = {
+ 'last-modified': (None, 'last_modified', parser.parse),
+ 'etag': (None, 'etag', _to_str),
+ 'x-ms-blob-type': (None, 'blob_type', _to_str),
+ 'content-length': (None, 'content_length', _to_int),
+ 'content-range': (None, 'content_range', _to_str),
+ 'x-ms-blob-sequence-number': (None, 'page_blob_sequence_number', _to_int),
+ 'x-ms-blob-committed-block-count': (None, 'append_blob_committed_block_count', _to_int),
+ 'x-ms-blob-public-access': (None, 'public_access', _to_str),
+ 'x-ms-access-tier': (None, 'blob_tier', _to_str),
+ 'x-ms-access-tier-change-time': (None, 'blob_tier_change_time', parser.parse),
+ 'x-ms-access-tier-inferred': (None, 'blob_tier_inferred', _bool),
+ 'x-ms-archive-status': (None, 'rehydration_status', _to_str),
+ 'x-ms-share-quota': (None, 'quota', _to_int),
+ 'x-ms-server-encrypted': (None, 'server_encrypted', _bool),
+ 'content-type': ('content_settings', 'content_type', _to_str),
+ 'cache-control': ('content_settings', 'cache_control', _to_str),
+ 'content-encoding': ('content_settings', 'content_encoding', _to_str),
+ 'content-disposition': ('content_settings', 'content_disposition', _to_str),
+ 'content-language': ('content_settings', 'content_language', _to_str),
+ 'content-md5': ('content_settings', 'content_md5', _to_str),
+ 'x-ms-lease-status': ('lease', 'status', _to_str),
+ 'x-ms-lease-state': ('lease', 'state', _to_str),
+ 'x-ms-lease-duration': ('lease', 'duration', _to_str),
+ 'x-ms-copy-id': ('copy', 'id', _to_str),
+ 'x-ms-copy-source': ('copy', 'source', _to_str),
+ 'x-ms-copy-status': ('copy', 'status', _to_str),
+ 'x-ms-copy-progress': ('copy', 'progress', _to_str),
+ 'x-ms-copy-completion-time': ('copy', 'completion_time', parser.parse),
+ 'x-ms-copy-destination-snapshot': ('copy', 'destination_snapshot_time', _to_str),
+ 'x-ms-copy-status-description': ('copy', 'status_description', _to_str),
+}
+
+
+def _parse_metadata(response):
+ '''
+ Extracts out resource metadata information.
+ '''
+
+ if response is None or response.headers is None:
+ return None
+
+ metadata = _dict()
+ for key, value in response.headers.items():
+ if key.lower().startswith('x-ms-meta-'):
+ metadata[key[10:]] = _to_str(value)
+
+ return metadata
+
+
+def _parse_properties(response, result_class):
+ '''
+ Extracts out resource properties and metadata information.
+ Ignores the standard http headers.
+ '''
+
+ if response is None or response.headers is None:
+ return None
+
+ props = result_class()
+ for key, value in response.headers.items():
+ info = GET_PROPERTIES_ATTRIBUTE_MAP.get(key)
+ if info:
+ if info[0] is None:
+ setattr(props, info[1], info[2](value))
+ else:
+ attr = getattr(props, info[0])
+ setattr(attr, info[1], info[2](value))
+
+ if hasattr(props, 'blob_type') and props.blob_type == 'PageBlob' and hasattr(props, 'blob_tier') and props.blob_tier is not None:
+ props.blob_tier = _to_upper_str(props.blob_tier)
+ return props
+
+
+def _parse_length_from_content_range(content_range):
+ '''
+ Parses the blob length from the content range header: bytes 1-3/65537
+ '''
+ if content_range is None:
+ return None
+
+ # First, split in space and take the second half: '1-3/65537'
+ # Next, split on slash and take the second half: '65537'
+ # Finally, convert to an int: 65537
+ return int(content_range.split(' ', 1)[1].split('/', 1)[1])
+
+
+def _convert_xml_to_signed_identifiers(response):
+ '''
+
+
+
+ unique-value
+
+ start-time
+ expiry-time
+ abbreviated-permission-list
+
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ list_element = ETree.fromstring(response.body)
+ signed_identifiers = _dict()
+
+ for signed_identifier_element in list_element.findall('SignedIdentifier'):
+ # Id element
+ id = signed_identifier_element.find('Id').text
+
+ # Access policy element
+ access_policy = AccessPolicy()
+ access_policy_element = signed_identifier_element.find('AccessPolicy')
+ if access_policy_element is not None:
+ start_element = access_policy_element.find('Start')
+ if start_element is not None:
+ access_policy.start = parser.parse(start_element.text)
+
+ expiry_element = access_policy_element.find('Expiry')
+ if expiry_element is not None:
+ access_policy.expiry = parser.parse(expiry_element.text)
+
+ access_policy.permission = access_policy_element.findtext('Permission')
+
+ signed_identifiers[id] = access_policy
+
+ return signed_identifiers
+
+
+def _convert_xml_to_service_stats(response):
+ '''
+
+
+
+ live|bootstrap|unavailable
+ sync-time|
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ service_stats_element = ETree.fromstring(response.body)
+
+ geo_replication_element = service_stats_element.find('GeoReplication')
+
+ geo_replication = GeoReplication()
+ geo_replication.status = geo_replication_element.find('Status').text
+ last_sync_time = geo_replication_element.find('LastSyncTime').text
+ geo_replication.last_sync_time = parser.parse(last_sync_time) if last_sync_time else None
+
+ service_stats = ServiceStats()
+ service_stats.geo_replication = geo_replication
+ return service_stats
+
+
+def _convert_xml_to_service_properties(response):
+ '''
+
+
+
+ version-number
+ true|false
+ true|false
+ true|false
+
+ true|false
+ number-of-days
+
+
+
+ version-number
+ true|false
+ true|false
+
+ true|false
+ number-of-days
+
+
+
+ version-number
+ true|false
+ true|false
+
+ true|false
+ number-of-days
+
+
+
+
+ comma-separated-list-of-allowed-origins
+ comma-separated-list-of-HTTP-verb
+ max-caching-age-in-seconds
+ comma-seperated-list-of-response-headers
+ comma-seperated-list-of-request-headers
+
+
+
+ true|false
+ number-of-days
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ service_properties_element = ETree.fromstring(response.body)
+ service_properties = ServiceProperties()
+
+ # Logging
+ logging = service_properties_element.find('Logging')
+ if logging is not None:
+ service_properties.logging = Logging()
+ service_properties.logging.version = logging.find('Version').text
+ service_properties.logging.delete = _bool(logging.find('Delete').text)
+ service_properties.logging.read = _bool(logging.find('Read').text)
+ service_properties.logging.write = _bool(logging.find('Write').text)
+
+ _convert_xml_to_retention_policy(logging.find('RetentionPolicy'),
+ service_properties.logging.retention_policy)
+ # HourMetrics
+ hour_metrics_element = service_properties_element.find('HourMetrics')
+ if hour_metrics_element is not None:
+ service_properties.hour_metrics = Metrics()
+ _convert_xml_to_metrics(hour_metrics_element, service_properties.hour_metrics)
+
+ # MinuteMetrics
+ minute_metrics_element = service_properties_element.find('MinuteMetrics')
+ if minute_metrics_element is not None:
+ service_properties.minute_metrics = Metrics()
+ _convert_xml_to_metrics(minute_metrics_element, service_properties.minute_metrics)
+
+ # CORS
+ cors = service_properties_element.find('Cors')
+ if cors is not None:
+ service_properties.cors = list()
+ for rule in cors.findall('CorsRule'):
+ allowed_origins = rule.find('AllowedOrigins').text.split(',')
+
+ allowed_methods = rule.find('AllowedMethods').text.split(',')
+
+ max_age_in_seconds = int(rule.find('MaxAgeInSeconds').text)
+
+ cors_rule = CorsRule(allowed_origins, allowed_methods, max_age_in_seconds)
+
+ exposed_headers = rule.find('ExposedHeaders').text
+ if exposed_headers is not None:
+ cors_rule.exposed_headers = exposed_headers.split(',')
+
+ allowed_headers = rule.find('AllowedHeaders').text
+ if allowed_headers is not None:
+ cors_rule.allowed_headers = allowed_headers.split(',')
+
+ service_properties.cors.append(cors_rule)
+
+ # Target version
+ target_version = service_properties_element.find('DefaultServiceVersion')
+ if target_version is not None:
+ service_properties.target_version = target_version.text
+
+ # DeleteRetentionPolicy
+ delete_retention_policy_element = service_properties_element.find('DeleteRetentionPolicy')
+ if delete_retention_policy_element is not None:
+ service_properties.delete_retention_policy = DeleteRetentionPolicy()
+ policy_enabled = _bool(delete_retention_policy_element.find('Enabled').text)
+ service_properties.delete_retention_policy.enabled = policy_enabled
+
+ if policy_enabled:
+ service_properties.delete_retention_policy.days = int(delete_retention_policy_element.find('Days').text)
+
+ return service_properties
+
+
+def _convert_xml_to_metrics(xml, metrics):
+ '''
+ version-number
+ true|false
+ true|false
+
+ true|false
+ number-of-days
+
+ '''
+ # Version
+ metrics.version = xml.find('Version').text
+
+ # Enabled
+ metrics.enabled = _bool(xml.find('Enabled').text)
+
+ # IncludeAPIs
+ include_apis_element = xml.find('IncludeAPIs')
+ if include_apis_element is not None:
+ metrics.include_apis = _bool(include_apis_element.text)
+
+ # RetentionPolicy
+ _convert_xml_to_retention_policy(xml.find('RetentionPolicy'), metrics.retention_policy)
+
+
+def _convert_xml_to_retention_policy(xml, retention_policy):
+ '''
+ true|false
+ number-of-days
+ '''
+ # Enabled
+ retention_policy.enabled = _bool(xml.find('Enabled').text)
+
+ # Days
+ days_element = xml.find('Days')
+ if days_element is not None:
+ retention_policy.days = int(days_element.text)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_encryption.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_encryption.py
new file mode 100644
index 00000000000..cd7d92e66e0
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_encryption.py
@@ -0,0 +1,233 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from collections import OrderedDict
+
+from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.primitives.ciphers import Cipher
+from cryptography.hazmat.primitives.ciphers.algorithms import AES
+from cryptography.hazmat.primitives.ciphers.modes import CBC
+
+from ._common_conversion import (
+ _encode_base64,
+ _decode_base64_to_bytes,
+)
+from ._constants import (
+ _ENCRYPTION_PROTOCOL_V1,
+ __version__,
+)
+from ._error import (
+ _ERROR_UNSUPPORTED_ENCRYPTION_VERSION,
+ _validate_not_none,
+ _validate_encryption_protocol_version,
+ _validate_key_encryption_key_unwrap,
+ _validate_kek_id,
+)
+
+
+class _EncryptionAlgorithm(object):
+ '''
+ Specifies which client encryption algorithm is used.
+ '''
+ AES_CBC_256 = 'AES_CBC_256'
+
+
+class _WrappedContentKey:
+ '''
+ Represents the envelope key details stored on the service.
+ '''
+
+ def __init__(self, algorithm, encrypted_key, key_id):
+ '''
+ :param str algorithm:
+ The algorithm used for wrapping.
+ :param bytes encrypted_key:
+ The encrypted content-encryption-key.
+ :param str key_id:
+ The key-encryption-key identifier string.
+ '''
+
+ _validate_not_none('algorithm', algorithm)
+ _validate_not_none('encrypted_key', encrypted_key)
+ _validate_not_none('key_id', key_id)
+
+ self.algorithm = algorithm
+ self.encrypted_key = encrypted_key
+ self.key_id = key_id
+
+
+class _EncryptionAgent:
+ '''
+ Represents the encryption agent stored on the service.
+ It consists of the encryption protocol version and encryption algorithm used.
+ '''
+
+ def __init__(self, encryption_algorithm, protocol):
+ '''
+ :param _EncryptionAlgorithm encryption_algorithm:
+ The algorithm used for encrypting the message contents.
+ :param str protocol:
+ The protocol version used for encryption.
+ '''
+
+ _validate_not_none('encryption_algorithm', encryption_algorithm)
+ _validate_not_none('protocol', protocol)
+
+ self.encryption_algorithm = str(encryption_algorithm)
+ self.protocol = protocol
+
+
+class _EncryptionData:
+ '''
+ Represents the encryption data that is stored on the service.
+ '''
+
+ def __init__(self, content_encryption_IV, encryption_agent, wrapped_content_key,
+ key_wrapping_metadata):
+ '''
+ :param bytes content_encryption_IV:
+ The content encryption initialization vector.
+ :param _EncryptionAgent encryption_agent:
+ The encryption agent.
+ :param _WrappedContentKey wrapped_content_key:
+ An object that stores the wrapping algorithm, the key identifier,
+ and the encrypted key bytes.
+ :param dict key_wrapping_metadata:
+ A dict containing metadata related to the key wrapping.
+ '''
+
+ _validate_not_none('content_encryption_IV', content_encryption_IV)
+ _validate_not_none('encryption_agent', encryption_agent)
+ _validate_not_none('wrapped_content_key', wrapped_content_key)
+
+ self.content_encryption_IV = content_encryption_IV
+ self.encryption_agent = encryption_agent
+ self.wrapped_content_key = wrapped_content_key
+ self.key_wrapping_metadata = key_wrapping_metadata
+
+
+def _generate_encryption_data_dict(kek, cek, iv):
+ '''
+ Generates and returns the encryption metadata as a dict.
+
+ :param object kek: The key encryption key. See calling functions for more information.
+ :param bytes cek: The content encryption key.
+ :param bytes iv: The initialization vector.
+ :return: A dict containing all the encryption metadata.
+ :rtype: dict
+ '''
+ # Encrypt the cek.
+ wrapped_cek = kek.wrap_key(cek)
+
+ # Build the encryption_data dict.
+ # Use OrderedDict to comply with Java's ordering requirement.
+ wrapped_content_key = OrderedDict()
+ wrapped_content_key['KeyId'] = kek.get_kid()
+ wrapped_content_key['EncryptedKey'] = _encode_base64(wrapped_cek)
+ wrapped_content_key['Algorithm'] = kek.get_key_wrap_algorithm()
+
+ encryption_agent = OrderedDict()
+ encryption_agent['Protocol'] = _ENCRYPTION_PROTOCOL_V1
+ encryption_agent['EncryptionAlgorithm'] = _EncryptionAlgorithm.AES_CBC_256
+
+ encryption_data_dict = OrderedDict()
+ encryption_data_dict['WrappedContentKey'] = wrapped_content_key
+ encryption_data_dict['EncryptionAgent'] = encryption_agent
+ encryption_data_dict['ContentEncryptionIV'] = _encode_base64(iv)
+ encryption_data_dict['KeyWrappingMetadata'] = {'EncryptionLibrary': 'Python ' + __version__}
+
+ return encryption_data_dict
+
+
+def _dict_to_encryption_data(encryption_data_dict):
+ '''
+ Converts the specified dictionary to an EncryptionData object for
+ eventual use in decryption.
+
+ :param dict encryption_data_dict:
+ The dictionary containing the encryption data.
+ :return: an _EncryptionData object built from the dictionary.
+ :rtype: _EncryptionData
+ '''
+ try:
+ if encryption_data_dict['EncryptionAgent']['Protocol'] != _ENCRYPTION_PROTOCOL_V1:
+ raise ValueError(_ERROR_UNSUPPORTED_ENCRYPTION_VERSION)
+ except KeyError:
+ raise ValueError(_ERROR_UNSUPPORTED_ENCRYPTION_VERSION)
+ wrapped_content_key = encryption_data_dict['WrappedContentKey']
+ wrapped_content_key = _WrappedContentKey(wrapped_content_key['Algorithm'],
+ _decode_base64_to_bytes(wrapped_content_key['EncryptedKey']),
+ wrapped_content_key['KeyId'])
+
+ encryption_agent = encryption_data_dict['EncryptionAgent']
+ encryption_agent = _EncryptionAgent(encryption_agent['EncryptionAlgorithm'],
+ encryption_agent['Protocol'])
+
+ if 'KeyWrappingMetadata' in encryption_data_dict:
+ key_wrapping_metadata = encryption_data_dict['KeyWrappingMetadata']
+ else:
+ key_wrapping_metadata = None
+
+ encryption_data = _EncryptionData(_decode_base64_to_bytes(encryption_data_dict['ContentEncryptionIV']),
+ encryption_agent,
+ wrapped_content_key,
+ key_wrapping_metadata)
+
+ return encryption_data
+
+
+def _generate_AES_CBC_cipher(cek, iv):
+ '''
+ Generates and returns an encryption cipher for AES CBC using the given cek and iv.
+
+ :param bytes[] cek: The content encryption key for the cipher.
+ :param bytes[] iv: The initialization vector for the cipher.
+ :return: A cipher for encrypting in AES256 CBC.
+ :rtype: ~cryptography.hazmat.primitives.ciphers.Cipher
+ '''
+
+ backend = default_backend()
+ algorithm = AES(cek)
+ mode = CBC(iv)
+ return Cipher(algorithm, mode, backend)
+
+
+def _validate_and_unwrap_cek(encryption_data, key_encryption_key=None, key_resolver=None):
+ '''
+ Extracts and returns the content_encryption_key stored in the encryption_data object
+ and performs necessary validation on all parameters.
+ :param _EncryptionData encryption_data:
+ The encryption metadata of the retrieved value.
+ :param obj key_encryption_key:
+ The key_encryption_key used to unwrap the cek. Please refer to high-level service object
+ instance variables for more details.
+ :param func key_resolver:
+ A function used that, given a key_id, will return a key_encryption_key. Please refer
+ to high-level service object instance variables for more details.
+ :return: the content_encryption_key stored in the encryption_data object.
+ :rtype: bytes[]
+ '''
+
+ _validate_not_none('content_encryption_IV', encryption_data.content_encryption_IV)
+ _validate_not_none('encrypted_key', encryption_data.wrapped_content_key.encrypted_key)
+
+ _validate_encryption_protocol_version(encryption_data.encryption_agent.protocol)
+
+ content_encryption_key = None
+
+ # If the resolver exists, give priority to the key it finds.
+ if key_resolver is not None:
+ key_encryption_key = key_resolver(encryption_data.wrapped_content_key.key_id)
+
+ _validate_not_none('key_encryption_key', key_encryption_key)
+ _validate_key_encryption_key_unwrap(key_encryption_key)
+ _validate_kek_id(encryption_data.wrapped_content_key.key_id, key_encryption_key.get_kid())
+
+ # Will throw an exception if the specified algorithm is not supported.
+ content_encryption_key = key_encryption_key.unwrap_key(encryption_data.wrapped_content_key.encrypted_key,
+ encryption_data.wrapped_content_key.algorithm)
+ _validate_not_none('content_encryption_key', content_encryption_key)
+
+ return content_encryption_key
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_error.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_error.py
new file mode 100644
index 00000000000..a8f67864db4
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_error.py
@@ -0,0 +1,179 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from sys import version_info
+
+if version_info < (3,):
+ def _str(value):
+ if isinstance(value, unicode):
+ return value.encode('utf-8')
+
+ return str(value)
+else:
+ _str = str
+
+
+def _to_str(value):
+ return _str(value) if value is not None else None
+
+
+from azure.common import (
+ AzureHttpError,
+ AzureConflictHttpError,
+ AzureMissingResourceHttpError,
+ AzureException,
+)
+from ._constants import (
+ _ENCRYPTION_PROTOCOL_V1,
+)
+
+_ERROR_CONFLICT = 'Conflict ({0})'
+_ERROR_NOT_FOUND = 'Not found ({0})'
+_ERROR_UNKNOWN = 'Unknown error ({0})'
+_ERROR_STORAGE_MISSING_INFO = \
+ 'You need to provide an account name and either an account_key or sas_token when creating a storage service.'
+_ERROR_EMULATOR_DOES_NOT_SUPPORT_FILES = \
+ 'The emulator does not support the file service.'
+_ERROR_ACCESS_POLICY = \
+ 'share_access_policy must be either SignedIdentifier or AccessPolicy ' + \
+ 'instance'
+_ERROR_PARALLEL_NOT_SEEKABLE = 'Parallel operations require a seekable stream.'
+_ERROR_VALUE_SHOULD_BE_BYTES = '{0} should be of type bytes.'
+_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM = '{0} should be of type bytes or a readable file-like/io.IOBase stream object.'
+_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM = '{0} should be a seekable file-like/io.IOBase type stream object.'
+_ERROR_VALUE_SHOULD_BE_STREAM = '{0} should be a file-like/io.IOBase type stream object with a read method.'
+_ERROR_VALUE_NONE = '{0} should not be None.'
+_ERROR_VALUE_NONE_OR_EMPTY = '{0} should not be None or empty.'
+_ERROR_VALUE_NEGATIVE = '{0} should not be negative.'
+_ERROR_NO_SINGLE_THREAD_CHUNKING = \
+ 'To use {0} chunk downloader more than 1 thread must be ' + \
+ 'used since get_{0}_to_bytes should be called for single threaded ' + \
+ '{0} downloads.'
+_ERROR_START_END_NEEDED_FOR_MD5 = \
+ 'Both end_range and start_range need to be specified ' + \
+ 'for getting content MD5.'
+_ERROR_RANGE_TOO_LARGE_FOR_MD5 = \
+ 'Getting content MD5 for a range greater than 4MB ' + \
+ 'is not supported.'
+_ERROR_MD5_MISMATCH = \
+ 'MD5 mismatch. Expected value is \'{0}\', computed value is \'{1}\'.'
+_ERROR_TOO_MANY_ACCESS_POLICIES = \
+ 'Too many access policies provided. The server does not support setting more than 5 access policies on a single resource.'
+_ERROR_OBJECT_INVALID = \
+ '{0} does not define a complete interface. Value of {1} is either missing or invalid.'
+_ERROR_UNSUPPORTED_ENCRYPTION_VERSION = \
+ 'Encryption version is not supported.'
+_ERROR_DECRYPTION_FAILURE = \
+ 'Decryption failed'
+_ERROR_ENCRYPTION_REQUIRED = \
+ 'Encryption required but no key was provided.'
+_ERROR_DECRYPTION_REQUIRED = \
+ 'Decryption required but neither key nor resolver was provided.' + \
+ ' If you do not want to decypt, please do not set the require encryption flag.'
+_ERROR_INVALID_KID = \
+ 'Provided or resolved key-encryption-key does not match the id of key used to encrypt.'
+_ERROR_UNSUPPORTED_ENCRYPTION_ALGORITHM = \
+ 'Specified encryption algorithm is not supported.'
+_ERROR_UNSUPPORTED_METHOD_FOR_ENCRYPTION = 'The require_encryption flag is set, but encryption is not supported' + \
+ ' for this method.'
+_ERROR_UNKNOWN_KEY_WRAP_ALGORITHM = 'Unknown key wrap algorithm.'
+_ERROR_DATA_NOT_ENCRYPTED = 'Encryption required, but received data does not contain appropriate metatadata.' + \
+ 'Data was either not encrypted or metadata has been lost.'
+
+
+def _dont_fail_on_exist(error):
+ ''' don't throw exception if the resource exists.
+ This is called by create_* APIs with fail_on_exist=False'''
+ if isinstance(error, AzureConflictHttpError):
+ return False
+ else:
+ raise error
+
+
+def _dont_fail_not_exist(error):
+ ''' don't throw exception if the resource doesn't exist.
+ This is called by create_* APIs with fail_on_exist=False'''
+ if isinstance(error, AzureMissingResourceHttpError):
+ return False
+ else:
+ raise error
+
+
+def _http_error_handler(http_error):
+ ''' Simple error handler for azure.'''
+ message = str(http_error)
+ if 'x-ms-error-code' in http_error.respheader:
+ message += 'ErrorCode: ' + http_error.respheader['x-ms-error-code']
+ if http_error.respbody is not None:
+ message += '\n' + http_error.respbody.decode('utf-8-sig')
+ raise AzureHttpError(message, http_error.status)
+
+
+def _validate_type_bytes(param_name, param):
+ if not isinstance(param, bytes):
+ raise TypeError(_ERROR_VALUE_SHOULD_BE_BYTES.format(param_name))
+
+
+def _validate_type_bytes_or_stream(param_name, param):
+ if not (isinstance(param, bytes) or hasattr(param, 'read')):
+ raise TypeError(_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM.format(param_name))
+
+
+def _validate_not_none(param_name, param):
+ if param is None:
+ raise ValueError(_ERROR_VALUE_NONE.format(param_name))
+
+
+def _validate_content_match(server_md5, computed_md5):
+ if server_md5 != computed_md5:
+ raise AzureException(_ERROR_MD5_MISMATCH.format(server_md5, computed_md5))
+
+
+def _validate_access_policies(identifiers):
+ if identifiers and len(identifiers) > 5:
+ raise AzureException(_ERROR_TOO_MANY_ACCESS_POLICIES)
+
+
+def _validate_key_encryption_key_wrap(kek):
+ # Note that None is not callable and so will fail the second clause of each check.
+ if not hasattr(kek, 'wrap_key') or not callable(kek.wrap_key):
+ raise AttributeError(_ERROR_OBJECT_INVALID.format('key encryption key', 'wrap_key'))
+ if not hasattr(kek, 'get_kid') or not callable(kek.get_kid):
+ raise AttributeError(_ERROR_OBJECT_INVALID.format('key encryption key', 'get_kid'))
+ if not hasattr(kek, 'get_key_wrap_algorithm') or not callable(kek.get_key_wrap_algorithm):
+ raise AttributeError(_ERROR_OBJECT_INVALID.format('key encryption key', 'get_key_wrap_algorithm'))
+
+
+def _validate_key_encryption_key_unwrap(kek):
+ if not hasattr(kek, 'get_kid') or not callable(kek.get_kid):
+ raise AttributeError(_ERROR_OBJECT_INVALID.format('key encryption key', 'get_kid'))
+ if not hasattr(kek, 'unwrap_key') or not callable(kek.unwrap_key):
+ raise AttributeError(_ERROR_OBJECT_INVALID.format('key encryption key', 'unwrap_key'))
+
+
+def _validate_encryption_required(require_encryption, kek):
+ if require_encryption and (kek is None):
+ raise ValueError(_ERROR_ENCRYPTION_REQUIRED)
+
+
+def _validate_decryption_required(require_encryption, kek, resolver):
+ if (require_encryption and (kek is None) and
+ (resolver is None)):
+ raise ValueError(_ERROR_DECRYPTION_REQUIRED)
+
+
+def _validate_encryption_protocol_version(encryption_protocol):
+ if not (_ENCRYPTION_PROTOCOL_V1 == encryption_protocol):
+ raise ValueError(_ERROR_UNSUPPORTED_ENCRYPTION_VERSION)
+
+
+def _validate_kek_id(kid, resolved_id):
+ if not (kid == resolved_id):
+ raise ValueError(_ERROR_INVALID_KID)
+
+
+def _validate_encryption_unsupported(require_encryption, key_encryption_key):
+ if require_encryption or (key_encryption_key is not None):
+ raise ValueError(_ERROR_UNSUPPORTED_METHOD_FOR_ENCRYPTION)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_http/__init__.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_http/__init__.py
new file mode 100644
index 00000000000..2990ec80abe
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_http/__init__.py
@@ -0,0 +1,74 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+
+class HTTPError(Exception):
+ '''
+ Represents an HTTP Exception when response status code >= 300.
+
+ :ivar int status:
+ the status code of the response
+ :ivar str message:
+ the message
+ :ivar list headers:
+ the returned headers, as a list of (name, value) pairs
+ :ivar bytes body:
+ the body of the response
+ '''
+
+ def __init__(self, status, message, respheader, respbody):
+ self.status = status
+ self.respheader = respheader
+ self.respbody = respbody
+ Exception.__init__(self, message)
+
+
+class HTTPResponse(object):
+ '''
+ Represents a response from an HTTP request.
+
+ :ivar int status:
+ the status code of the response
+ :ivar str message:
+ the message
+ :ivar dict headers:
+ the returned headers
+ :ivar bytes body:
+ the body of the response
+ '''
+
+ def __init__(self, status, message, headers, body):
+ self.status = status
+ self.message = message
+ self.headers = headers
+ self.body = body
+
+
+class HTTPRequest(object):
+ '''
+ Represents an HTTP Request.
+
+ :ivar str host:
+ the host name to connect to
+ :ivar str method:
+ the method to use to connect (string such as GET, POST, PUT, etc.)
+ :ivar str path:
+ the uri fragment
+ :ivar dict query:
+ query parameters
+ :ivar dict headers:
+ header values
+ :ivar bytes body:
+ the body of the request.
+ '''
+
+ def __init__(self):
+ self.host = ''
+ self.method = ''
+ self.path = ''
+ self.query = {} # list of (name, value)
+ self.headers = {} # list of (header name, header value)
+ self.body = ''
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_http/httpclient.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_http/httpclient.py
new file mode 100644
index 00000000000..b5847660e29
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_http/httpclient.py
@@ -0,0 +1,107 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+import logging
+from . import HTTPResponse
+from .._serialization import _get_data_bytes_or_stream_only
+logger = logging.getLogger(__name__)
+
+
+class _HTTPClient(object):
+ '''
+ Takes the request and sends it to cloud service and returns the response.
+ '''
+
+ def __init__(self, protocol=None, session=None, timeout=None):
+ '''
+ :param str protocol:
+ http or https.
+ :param requests.Session session:
+ session object created with requests library (or compatible).
+ :param int timeout:
+ timeout for the http request, in seconds.
+ '''
+ self.protocol = protocol
+ self.session = session
+ self.timeout = timeout
+
+ # By default, requests adds an Accept:*/* and Accept-Encoding to the session,
+ # which causes issues with some Azure REST APIs. Removing these here gives us
+ # the flexibility to add it back on a case by case basis.
+ if 'Accept' in self.session.headers:
+ del self.session.headers['Accept']
+
+ if 'Accept-Encoding' in self.session.headers:
+ del self.session.headers['Accept-Encoding']
+
+ self.proxies = None
+
+ def set_proxy(self, host, port, user, password):
+ '''
+ Sets the proxy server host and port for the HTTP CONNECT Tunnelling.
+
+ Note that we set the proxies directly on the request later on rather than
+ using the session object as requests has a bug where session proxy is ignored
+ in favor of environment proxy. So, auth will not work unless it is passed
+ directly when making the request as this overrides both.
+
+ :param str host:
+ Address of the proxy. Ex: '192.168.0.100'
+ :param int port:
+ Port of the proxy. Ex: 6000
+ :param str user:
+ User for proxy authorization.
+ :param str password:
+ Password for proxy authorization.
+ '''
+ if user and password:
+ proxy_string = '{}:{}@{}:{}'.format(user, password, host, port)
+ else:
+ proxy_string = '{}:{}'.format(host, port)
+
+ self.proxies = {'http': 'http://{}'.format(proxy_string),
+ 'https': 'https://{}'.format(proxy_string)}
+
+ def perform_request(self, request):
+ '''
+ Sends an HTTPRequest to Azure Storage and returns an HTTPResponse. If
+ the response code indicates an error, raise an HTTPError.
+
+ :param HTTPRequest request:
+ The request to serialize and send.
+ :return: An HTTPResponse containing the parsed HTTP response.
+ :rtype: :class:`~azure.storage.common._http.HTTPResponse`
+ '''
+ # Verify the body is in bytes or either a file-like/stream object
+ if request.body:
+ request.body = _get_data_bytes_or_stream_only('request.body', request.body)
+
+ # Construct the URI
+ uri = self.protocol.lower() + '://' + request.host + request.path
+
+ # Send the request
+ response = self.session.request(request.method,
+ uri,
+ params=request.query,
+ headers=request.headers,
+ data=request.body or None,
+ timeout=self.timeout,
+ proxies=self.proxies)
+
+ # Parse the response
+ status = int(response.status_code)
+ response_headers = {}
+ for key, name in response.headers.items():
+ # Preserve the case of metadata
+ if key.lower().startswith('x-ms-meta-'):
+ response_headers[key] = name
+ else:
+ response_headers[key.lower()] = name
+
+ wrap = HTTPResponse(status, response.reason, response_headers, response.content)
+ response.close()
+
+ return wrap
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_serialization.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_serialization.py
new file mode 100644
index 00000000000..fd34d5816e2
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/_serialization.py
@@ -0,0 +1,352 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+import uuid
+from datetime import date
+from io import (BytesIO, IOBase, SEEK_SET, SEEK_END, UnsupportedOperation)
+from os import fstat
+from time import time
+from wsgiref.handlers import format_date_time
+
+from dateutil.tz import tzutc
+
+if sys.version_info >= (3,):
+ from urllib.parse import quote as url_quote
+else:
+ from urllib2 import quote as url_quote
+
+try:
+ from xml.etree import cElementTree as ETree
+except ImportError:
+ from xml.etree import ElementTree as ETree
+
+from ._error import (
+ _ERROR_VALUE_SHOULD_BE_BYTES,
+ _ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM,
+ _ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM
+)
+from .models import (
+ _unicode_type,
+)
+from ._common_conversion import (
+ _str,
+)
+
+
+def _to_utc_datetime(value):
+ # Azure expects the date value passed in to be UTC.
+ # Azure will always return values as UTC.
+ # If a date is passed in without timezone info, it is assumed to be UTC.
+ if value.tzinfo:
+ value = value.astimezone(tzutc())
+ return value.strftime('%Y-%m-%dT%H:%M:%SZ')
+
+
+def _update_request(request, x_ms_version, user_agent_string):
+ # Verify body
+ if request.body:
+ request.body = _get_data_bytes_or_stream_only('request.body', request.body)
+ length = _len_plus(request.body)
+
+ # only scenario where this case is plausible is if the stream object is not seekable.
+ if length is None:
+ raise ValueError(_ERROR_VALUE_SHOULD_BE_SEEKABLE_STREAM)
+
+ # if it is PUT, POST, MERGE, DELETE, need to add content-length to header.
+ if request.method in ['PUT', 'POST', 'MERGE', 'DELETE']:
+ request.headers['Content-Length'] = str(length)
+
+ # append addtional headers based on the service
+ request.headers['x-ms-version'] = x_ms_version
+ request.headers['User-Agent'] = user_agent_string
+ request.headers['x-ms-client-request-id'] = str(uuid.uuid1())
+
+ # If the host has a path component (ex local storage), move it
+ path = request.host.split('/', 1)
+ if len(path) == 2:
+ request.host = path[0]
+ request.path = '/{}{}'.format(path[1], request.path)
+
+ # Encode and optionally add local storage prefix to path
+ request.path = url_quote(request.path, '/()$=\',~')
+
+
+def _add_metadata_headers(metadata, request):
+ if metadata:
+ if not request.headers:
+ request.headers = {}
+ for name, value in metadata.items():
+ request.headers['x-ms-meta-' + name] = value
+
+
+def _add_date_header(request):
+ current_time = format_date_time(time())
+ request.headers['x-ms-date'] = current_time
+
+
+def _get_data_bytes_only(param_name, param_value):
+ '''Validates the request body passed in and converts it to bytes
+ if our policy allows it.'''
+ if param_value is None:
+ return b''
+
+ if isinstance(param_value, bytes):
+ return param_value
+
+ raise TypeError(_ERROR_VALUE_SHOULD_BE_BYTES.format(param_name))
+
+
+def _get_data_bytes_or_stream_only(param_name, param_value):
+ '''Validates the request body passed in is a stream/file-like or bytes
+ object.'''
+ if param_value is None:
+ return b''
+
+ if isinstance(param_value, bytes) or hasattr(param_value, 'read'):
+ return param_value
+
+ raise TypeError(_ERROR_VALUE_SHOULD_BE_BYTES_OR_STREAM.format(param_name))
+
+
+def _get_request_body(request_body):
+ '''Converts an object into a request body. If it's None
+ we'll return an empty string, if it's one of our objects it'll
+ convert it to XML and return it. Otherwise we just use the object
+ directly'''
+ if request_body is None:
+ return b''
+
+ if isinstance(request_body, bytes) or isinstance(request_body, IOBase):
+ return request_body
+
+ if isinstance(request_body, _unicode_type):
+ return request_body.encode('utf-8')
+
+ request_body = str(request_body)
+ if isinstance(request_body, _unicode_type):
+ return request_body.encode('utf-8')
+
+ return request_body
+
+
+def _convert_signed_identifiers_to_xml(signed_identifiers):
+ if signed_identifiers is None:
+ return ''
+
+ sis = ETree.Element('SignedIdentifiers')
+ for id, access_policy in signed_identifiers.items():
+ # Root signed identifers element
+ si = ETree.SubElement(sis, 'SignedIdentifier')
+
+ # Id element
+ ETree.SubElement(si, 'Id').text = id
+
+ # Access policy element
+ policy = ETree.SubElement(si, 'AccessPolicy')
+
+ if access_policy.start:
+ start = access_policy.start
+ if isinstance(access_policy.start, date):
+ start = _to_utc_datetime(start)
+ ETree.SubElement(policy, 'Start').text = start
+
+ if access_policy.expiry:
+ expiry = access_policy.expiry
+ if isinstance(access_policy.expiry, date):
+ expiry = _to_utc_datetime(expiry)
+ ETree.SubElement(policy, 'Expiry').text = expiry
+
+ if access_policy.permission:
+ ETree.SubElement(policy, 'Permission').text = _str(access_policy.permission)
+
+ # Add xml declaration and serialize
+ try:
+ stream = BytesIO()
+ ETree.ElementTree(sis).write(stream, xml_declaration=True, encoding='utf-8', method='xml')
+ except:
+ raise
+ finally:
+ output = stream.getvalue()
+ stream.close()
+
+ return output
+
+
+def _convert_service_properties_to_xml(logging, hour_metrics, minute_metrics,
+ cors, target_version=None, delete_retention_policy=None):
+ '''
+
+
+
+ version-number
+ true|false
+ true|false
+ true|false
+
+ true|false
+ number-of-days
+
+
+
+ version-number
+ true|false
+ true|false
+
+ true|false
+ number-of-days
+
+
+
+ version-number
+ true|false
+ true|false
+
+ true|false
+ number-of-days
+
+
+
+
+ comma-separated-list-of-allowed-origins
+ comma-separated-list-of-HTTP-verb
+ max-caching-age-in-seconds
+ comma-seperated-list-of-response-headers
+ comma-seperated-list-of-request-headers
+
+
+
+ true|false
+ number-of-days
+
+
+ '''
+ service_properties_element = ETree.Element('StorageServiceProperties')
+
+ # Logging
+ if logging:
+ logging_element = ETree.SubElement(service_properties_element, 'Logging')
+ ETree.SubElement(logging_element, 'Version').text = logging.version
+ ETree.SubElement(logging_element, 'Delete').text = str(logging.delete)
+ ETree.SubElement(logging_element, 'Read').text = str(logging.read)
+ ETree.SubElement(logging_element, 'Write').text = str(logging.write)
+
+ retention_element = ETree.SubElement(logging_element, 'RetentionPolicy')
+ _convert_retention_policy_to_xml(logging.retention_policy, retention_element)
+
+ # HourMetrics
+ if hour_metrics:
+ hour_metrics_element = ETree.SubElement(service_properties_element, 'HourMetrics')
+ _convert_metrics_to_xml(hour_metrics, hour_metrics_element)
+
+ # MinuteMetrics
+ if minute_metrics:
+ minute_metrics_element = ETree.SubElement(service_properties_element, 'MinuteMetrics')
+ _convert_metrics_to_xml(minute_metrics, minute_metrics_element)
+
+ # CORS
+ # Make sure to still serialize empty list
+ if cors is not None:
+ cors_element = ETree.SubElement(service_properties_element, 'Cors')
+ for rule in cors:
+ cors_rule = ETree.SubElement(cors_element, 'CorsRule')
+ ETree.SubElement(cors_rule, 'AllowedOrigins').text = ",".join(rule.allowed_origins)
+ ETree.SubElement(cors_rule, 'AllowedMethods').text = ",".join(rule.allowed_methods)
+ ETree.SubElement(cors_rule, 'MaxAgeInSeconds').text = str(rule.max_age_in_seconds)
+ ETree.SubElement(cors_rule, 'ExposedHeaders').text = ",".join(rule.exposed_headers)
+ ETree.SubElement(cors_rule, 'AllowedHeaders').text = ",".join(rule.allowed_headers)
+
+ # Target version
+ if target_version:
+ ETree.SubElement(service_properties_element, 'DefaultServiceVersion').text = target_version
+
+ # DeleteRetentionPolicy
+ if delete_retention_policy:
+ policy_element = ETree.SubElement(service_properties_element, 'DeleteRetentionPolicy')
+ ETree.SubElement(policy_element, 'Enabled').text = str(delete_retention_policy.enabled)
+
+ if delete_retention_policy.enabled:
+ ETree.SubElement(policy_element, 'Days').text = str(delete_retention_policy.days)
+
+ # Add xml declaration and serialize
+ try:
+ stream = BytesIO()
+ ETree.ElementTree(service_properties_element).write(stream, xml_declaration=True, encoding='utf-8',
+ method='xml')
+ except:
+ raise
+ finally:
+ output = stream.getvalue()
+ stream.close()
+
+ return output
+
+
+def _convert_metrics_to_xml(metrics, root):
+ '''
+ version-number
+ true|false
+ true|false
+
+ true|false
+ number-of-days
+
+ '''
+ # Version
+ ETree.SubElement(root, 'Version').text = metrics.version
+
+ # Enabled
+ ETree.SubElement(root, 'Enabled').text = str(metrics.enabled)
+
+ # IncludeAPIs
+ if metrics.enabled and metrics.include_apis is not None:
+ ETree.SubElement(root, 'IncludeAPIs').text = str(metrics.include_apis)
+
+ # RetentionPolicy
+ retention_element = ETree.SubElement(root, 'RetentionPolicy')
+ _convert_retention_policy_to_xml(metrics.retention_policy, retention_element)
+
+
+def _convert_retention_policy_to_xml(retention_policy, root):
+ '''
+ true|false
+ number-of-days
+ '''
+ # Enabled
+ ETree.SubElement(root, 'Enabled').text = str(retention_policy.enabled)
+
+ # Days
+ if retention_policy.enabled and retention_policy.days:
+ ETree.SubElement(root, 'Days').text = str(retention_policy.days)
+
+
+def _len_plus(data):
+ length = None
+ # Check if object implements the __len__ method, covers most input cases such as bytearray.
+ try:
+ length = len(data)
+ except:
+ pass
+
+ if not length:
+ # Check if the stream is a file-like stream object.
+ # If so, calculate the size using the file descriptor.
+ try:
+ fileno = data.fileno()
+ except (AttributeError, UnsupportedOperation):
+ pass
+ else:
+ return fstat(fileno).st_size
+
+ # If the stream is seekable and tell() is implemented, calculate the stream size.
+ try:
+ current_position = data.tell()
+ data.seek(0, SEEK_END)
+ length = data.tell() - current_position
+ data.seek(current_position, SEEK_SET)
+ except (AttributeError, UnsupportedOperation):
+ pass
+
+ return length
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/cloudstorageaccount.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/cloudstorageaccount.py
new file mode 100644
index 00000000000..92b9134a82a
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/cloudstorageaccount.py
@@ -0,0 +1,188 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+# Note that we import BlobService/QueueService/FileService on demand
+# because this module is imported by azure/storage/__init__
+# ie. we don't want 'import azure.storage' to trigger an automatic import
+# of blob/queue/file packages.
+
+from ._error import _validate_not_none
+from .models import (
+ ResourceTypes,
+ Services,
+ AccountPermissions,
+)
+from .sharedaccesssignature import (
+ SharedAccessSignature,
+)
+
+
+class CloudStorageAccount(object):
+ """
+ Provides a factory for creating the blob, queue, and file services
+ with a common account name and account key or sas token. Users can either
+ use the factory or can construct the appropriate service directly.
+ """
+
+ def __init__(self, account_name=None, account_key=None, sas_token=None, is_emulated=None):
+ '''
+ :param str account_name:
+ The storage account name. This is used to authenticate requests
+ signed with an account key and to construct the storage endpoint. It
+ is required unless is_emulated is used.
+ :param str account_key:
+ The storage account key. This is used for shared key authentication.
+ :param str sas_token:
+ A shared access signature token to use to authenticate requests
+ instead of the account key. If account key and sas token are both
+ specified, account key will be used to sign.
+ :param bool is_emulated:
+ Whether to use the emulator. Defaults to False. If specified, will
+ override all other parameters.
+ '''
+ self.account_name = account_name
+ self.account_key = account_key
+ self.sas_token = sas_token
+ self.is_emulated = is_emulated
+
+ def create_block_blob_service(self):
+ '''
+ Creates a BlockBlobService object with the settings specified in the
+ CloudStorageAccount.
+
+ :return: A service object.
+ :rtype: :class:`~azure.storage.blob.blockblobservice.BlockBlobService`
+ '''
+ try:
+ from azure.storage.blob.blockblobservice import BlockBlobService
+ return BlockBlobService(self.account_name, self.account_key,
+ sas_token=self.sas_token,
+ is_emulated=self.is_emulated)
+ except ImportError:
+ raise Exception('The package azure-storage-blob is required. '
+ + 'Please install it using "pip install azure-storage-blob"')
+
+ def create_page_blob_service(self):
+ '''
+ Creates a PageBlobService object with the settings specified in the
+ CloudStorageAccount.
+
+ :return: A service object.
+ :rtype: :class:`~azure.storage.blob.pageblobservice.PageBlobService`
+ '''
+ try:
+ from azure.storage.blob.pageblobservice import PageBlobService
+ return PageBlobService(self.account_name, self.account_key,
+ sas_token=self.sas_token,
+ is_emulated=self.is_emulated)
+ except ImportError:
+ raise Exception('The package azure-storage-blob is required. '
+ + 'Please install it using "pip install azure-storage-blob"')
+
+ def create_append_blob_service(self):
+ '''
+ Creates a AppendBlobService object with the settings specified in the
+ CloudStorageAccount.
+
+ :return: A service object.
+ :rtype: :class:`~azure.storage.blob.appendblobservice.AppendBlobService`
+ '''
+ try:
+ from azure.storage.blob.appendblobservice import AppendBlobService
+ return AppendBlobService(self.account_name, self.account_key,
+ sas_token=self.sas_token,
+ is_emulated=self.is_emulated)
+ except ImportError:
+ raise Exception('The package azure-storage-blob is required. '
+ + 'Please install it using "pip install azure-storage-blob"')
+
+ def create_queue_service(self):
+ '''
+ Creates a QueueService object with the settings specified in the
+ CloudStorageAccount.
+
+ :return: A service object.
+ :rtype: :class:`~azure.storage.queue.queueservice.QueueService`
+ '''
+ try:
+ from azure.storage.queue.queueservice import QueueService
+ return QueueService(self.account_name, self.account_key,
+ sas_token=self.sas_token,
+ is_emulated=self.is_emulated)
+ except ImportError:
+ raise Exception('The package azure-storage-queue is required. '
+ + 'Please install it using "pip install azure-storage-queue"')
+
+ def create_file_service(self):
+ '''
+ Creates a FileService object with the settings specified in the
+ CloudStorageAccount.
+
+ :return: A service object.
+ :rtype: :class:`~azure.storage.file.fileservice.FileService`
+ '''
+ try:
+ from azure.storage.file.fileservice import FileService
+ return FileService(self.account_name, self.account_key,
+ sas_token=self.sas_token)
+ except ImportError:
+ raise Exception('The package azure-storage-file is required. '
+ + 'Please install it using "pip install azure-storage-file"')
+
+ def generate_shared_access_signature(self, services, resource_types,
+ permission, expiry, start=None,
+ ip=None, protocol=None):
+ '''
+ Generates a shared access signature for the account.
+ Use the returned signature with the sas_token parameter of the service
+ or to create a new account object.
+
+ :param Services services:
+ Specifies the services accessible with the account SAS. You can
+ combine values to provide access to more than one service.
+ :param ResourceTypes resource_types:
+ Specifies the resource types that are accessible with the account
+ SAS. You can combine values to provide access to more than one
+ resource type.
+ :param AccountPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy. You can combine
+ values to provide more than one permission.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. Possible values are
+ both HTTPS and HTTP (https,http) or HTTPS only (https). The default value
+ is https,http. Note that HTTP only is not a permitted value.
+ '''
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = SharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_account(services, resource_types, permission,
+ expiry, start=start, ip=ip, protocol=protocol)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/models.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/models.py
new file mode 100644
index 00000000000..e11153c2810
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/models.py
@@ -0,0 +1,646 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+
+if sys.version_info < (3,):
+ from collections import Iterable
+
+ _unicode_type = unicode
+else:
+ from collections.abc import Iterable
+
+ _unicode_type = str
+
+from ._error import (
+ _validate_not_none
+)
+
+
+class _HeaderDict(dict):
+ def __getitem__(self, index):
+ return super(_HeaderDict, self).__getitem__(index.lower())
+
+
+class _list(list):
+ '''Used so that additional properties can be set on the return list'''
+ pass
+
+
+class _dict(dict):
+ '''Used so that additional properties can be set on the return dictionary'''
+ pass
+
+
+class _OperationContext(object):
+ '''
+ Contains information that lasts the lifetime of an operation. This operation
+ may span multiple calls to the Azure service.
+
+ :ivar bool location_lock:
+ Whether the location should be locked for this operation.
+ :ivar str location:
+ The location to lock to.
+ '''
+
+ def __init__(self, location_lock=False):
+ self.location_lock = location_lock
+ self.host_location = None
+
+
+class ListGenerator(Iterable):
+ '''
+ A generator object used to list storage resources. The generator will lazily
+ follow the continuation tokens returned by the service and stop when all
+ resources have been returned or max_results is reached.
+
+ If max_results is specified and the account has more than that number of
+ resources, the generator will have a populated next_marker field once it
+ finishes. This marker can be used to create a new generator if more
+ results are desired.
+ '''
+
+ def __init__(self, resources, list_method, list_args, list_kwargs):
+ self.items = resources
+ self.next_marker = resources.next_marker
+
+ self._list_method = list_method
+ self._list_args = list_args
+ self._list_kwargs = list_kwargs
+
+ def __iter__(self):
+ # return results
+ for i in self.items:
+ yield i
+
+ while True:
+ # if no more results on the service, return
+ if not self.next_marker:
+ break
+
+ # update the marker args
+ self._list_kwargs['marker'] = self.next_marker
+
+ # handle max results, if present
+ max_results = self._list_kwargs.get('max_results')
+ if max_results is not None:
+ max_results = max_results - len(self.items)
+
+ # if we've reached max_results, return
+ # else, update the max_results arg
+ if max_results <= 0:
+ break
+ else:
+ self._list_kwargs['max_results'] = max_results
+
+ # get the next segment
+ resources = self._list_method(*self._list_args, **self._list_kwargs)
+ self.items = resources
+ self.next_marker = resources.next_marker
+
+ # return results
+ for i in self.items:
+ yield i
+
+
+class RetryContext(object):
+ '''
+ Contains the request and response information that can be used to determine
+ whether and how to retry. This context is stored across retries and may be
+ used to store other information relevant to the retry strategy.
+
+ :ivar ~azure.storage.common._http.HTTPRequest request:
+ The request sent to the storage service.
+ :ivar ~azure.storage.common._http.HTTPResponse response:
+ The response returned by the storage service.
+ :ivar LocationMode location_mode:
+ The location the request was sent to.
+ :ivar Exception exception:
+ The exception that just occurred. The type could either be AzureException (for HTTP errors),
+ or other Exception types from lower layers, which are kept unwrapped for easier processing.
+ :ivar bool is_emulated:
+ Whether retry is targeting the emulator. The default value is False.
+ '''
+
+ def __init__(self):
+ self.request = None
+ self.response = None
+ self.location_mode = None
+ self.exception = None
+ self.is_emulated = False
+
+
+class LocationMode(object):
+ '''
+ Specifies the location the request should be sent to. This mode only applies
+ for RA-GRS accounts which allow secondary read access. All other account types
+ must use PRIMARY.
+ '''
+
+ PRIMARY = 'primary'
+ ''' Requests should be sent to the primary location. '''
+
+ SECONDARY = 'secondary'
+ ''' Requests should be sent to the secondary location, if possible. '''
+
+
+class RetentionPolicy(object):
+ '''
+ By default, Storage Analytics will not delete any logging or metrics data. Blobs
+ will continue to be written until the shared 20TB limit is
+ reached. Once the 20TB limit is reached, Storage Analytics will stop writing
+ new data and will not resume until free space is available. This 20TB limit
+ is independent of the total limit for your storage account.
+
+ There are two ways to delete Storage Analytics data: by manually making deletion
+ requests or by setting a data retention policy. Manual requests to delete Storage
+ Analytics data are billable, but delete requests resulting from a retention policy
+ are not billable.
+ '''
+
+ def __init__(self, enabled=False, days=None):
+ '''
+ :param bool enabled:
+ Indicates whether a retention policy is enabled for the
+ storage service. If disabled, logging and metrics data will be retained
+ infinitely by the service unless explicitly deleted.
+ :param int days:
+ Required if enabled is true. Indicates the number of
+ days that metrics or logging data should be retained. All data older
+ than this value will be deleted. The minimum value you can specify is 1;
+ the largest value is 365 (one year).
+ '''
+ _validate_not_none("enabled", enabled)
+ if enabled:
+ _validate_not_none("days", days)
+
+ self.enabled = enabled
+ self.days = days
+
+
+class Logging(object):
+ '''
+ Storage Analytics logs detailed information about successful and failed requests
+ to a storage service. This information can be used to monitor individual requests
+ and to diagnose issues with a storage service. Requests are logged on a best-effort
+ basis.
+
+ All logs are stored in block blobs in a container named $logs, which is
+ automatically created when Storage Analytics is enabled for a storage account.
+ The $logs container is located in the blob namespace of the storage account.
+ This container cannot be deleted once Storage Analytics has been enabled, though
+ its contents can be deleted.
+
+ For more information, see https://msdn.microsoft.com/en-us/library/azure/hh343262.aspx
+ '''
+
+ def __init__(self, delete=False, read=False, write=False,
+ retention_policy=None):
+ '''
+ :param bool delete:
+ Indicates whether all delete requests should be logged.
+ :param bool read:
+ Indicates whether all read requests should be logged.
+ :param bool write:
+ Indicates whether all write requests should be logged.
+ :param RetentionPolicy retention_policy:
+ The retention policy for the metrics.
+ '''
+ _validate_not_none("read", read)
+ _validate_not_none("write", write)
+ _validate_not_none("delete", delete)
+
+ self.version = u'1.0'
+ self.delete = delete
+ self.read = read
+ self.write = write
+ self.retention_policy = retention_policy if retention_policy else RetentionPolicy()
+
+
+class Metrics(object):
+ '''
+ Metrics include aggregated transaction statistics and capacity data about requests
+ to a storage service. Transactions are reported at both the API operation level
+ as well as at the storage service level, and capacity is reported at the storage
+ service level. Metrics data can be used to analyze storage service usage, diagnose
+ issues with requests made against the storage service, and to improve the
+ performance of applications that use a service.
+
+ For more information, see https://msdn.microsoft.com/en-us/library/azure/hh343258.aspx
+ '''
+
+ def __init__(self, enabled=False, include_apis=None,
+ retention_policy=None):
+ '''
+ :param bool enabled:
+ Indicates whether metrics are enabled for
+ the service.
+ :param bool include_apis:
+ Required if enabled is True. Indicates whether metrics
+ should generate summary statistics for called API operations.
+ :param RetentionPolicy retention_policy:
+ The retention policy for the metrics.
+ '''
+ _validate_not_none("enabled", enabled)
+ if enabled:
+ _validate_not_none("include_apis", include_apis)
+
+ self.version = u'1.0'
+ self.enabled = enabled
+ self.include_apis = include_apis
+ self.retention_policy = retention_policy if retention_policy else RetentionPolicy()
+
+
+class CorsRule(object):
+ '''
+ CORS is an HTTP feature that enables a web application running under one domain
+ to access resources in another domain. Web browsers implement a security
+ restriction known as same-origin policy that prevents a web page from calling
+ APIs in a different domain; CORS provides a secure way to allow one domain
+ (the origin domain) to call APIs in another domain.
+
+ For more information, see https://msdn.microsoft.com/en-us/library/azure/dn535601.aspx
+ '''
+
+ def __init__(self, allowed_origins, allowed_methods, max_age_in_seconds=0,
+ exposed_headers=None, allowed_headers=None):
+ '''
+ :param allowed_origins:
+ A list of origin domains that will be allowed via CORS, or "*" to allow
+ all domains. The list of must contain at least one entry. Limited to 64
+ origin domains. Each allowed origin can have up to 256 characters.
+ :type allowed_origins: list(str)
+ :param allowed_methods:
+ A list of HTTP methods that are allowed to be executed by the origin.
+ The list of must contain at least one entry. For Azure Storage,
+ permitted methods are DELETE, GET, HEAD, MERGE, POST, OPTIONS or PUT.
+ :type allowed_methods: list(str)
+ :param int max_age_in_seconds:
+ The number of seconds that the client/browser should cache a
+ preflight response.
+ :param exposed_headers:
+ Defaults to an empty list. A list of response headers to expose to CORS
+ clients. Limited to 64 defined headers and two prefixed headers. Each
+ header can be up to 256 characters.
+ :type exposed_headers: list(str)
+ :param allowed_headers:
+ Defaults to an empty list. A list of headers allowed to be part of
+ the cross-origin request. Limited to 64 defined headers and 2 prefixed
+ headers. Each header can be up to 256 characters.
+ :type allowed_headers: list(str)
+ '''
+ _validate_not_none("allowed_origins", allowed_origins)
+ _validate_not_none("allowed_methods", allowed_methods)
+ _validate_not_none("max_age_in_seconds", max_age_in_seconds)
+
+ self.allowed_origins = allowed_origins if allowed_origins else list()
+ self.allowed_methods = allowed_methods if allowed_methods else list()
+ self.max_age_in_seconds = max_age_in_seconds
+ self.exposed_headers = exposed_headers if exposed_headers else list()
+ self.allowed_headers = allowed_headers if allowed_headers else list()
+
+
+class DeleteRetentionPolicy(object):
+ '''
+ To set DeleteRetentionPolicy, you must call Set Blob Service Properties using version 2017-07-29 or later.
+ This class groups the settings related to delete retention policy.
+ '''
+
+ def __init__(self, enabled=False, days=None):
+ '''
+ :param bool enabled:
+ Required. Indicates whether a deleted blob or snapshot is retained or immediately removed by delete operation.
+ :param int days:
+ Required only if Enabled is true. Indicates the number of days that deleted blob be retained.
+ All data older than this value will be permanently deleted.
+ The minimum value you can specify is 1; the largest value is 365.
+ '''
+ _validate_not_none("enabled", enabled)
+ if enabled:
+ _validate_not_none("days", days)
+
+ self.enabled = enabled
+ self.days = days
+
+
+class ServiceProperties(object):
+ '''
+ Returned by get_*_service_properties functions. Contains the properties of a
+ storage service, including Analytics and CORS rules.
+
+ Azure Storage Analytics performs logging and provides metrics data for a storage
+ account. You can use this data to trace requests, analyze usage trends, and
+ diagnose issues with your storage account. To use Storage Analytics, you must
+ enable it individually for each service you want to monitor.
+
+ The aggregated data is stored in a well-known blob (for logging) and in well-known
+ tables (for metrics), which may be accessed using the Blob service and Table
+ service APIs.
+
+ For an in-depth guide on using Storage Analytics and other tools to identify,
+ diagnose, and troubleshoot Azure Storage-related issues, see
+ http://azure.microsoft.com/documentation/articles/storage-monitoring-diagnosing-troubleshooting/
+
+ For more information on CORS, see https://msdn.microsoft.com/en-us/library/azure/dn535601.aspx
+ '''
+
+ pass
+
+
+class ServiceStats(object):
+ '''
+ Returned by get_*_service_stats functions. Contains statistics related to
+ replication for the given service. It is only available when read-access
+ geo-redundant replication is enabled for the storage account.
+
+ :ivar GeoReplication geo_replication:
+ An object containing statistics related to replication for the given service.
+ '''
+ pass
+
+
+class GeoReplication(object):
+ '''
+ Contains statistics related to replication for the given service.
+
+ :ivar str status:
+ The status of the secondary location. Possible values are:
+ live: Indicates that the secondary location is active and operational.
+ bootstrap: Indicates initial synchronization from the primary location
+ to the secondary location is in progress. This typically occurs
+ when replication is first enabled.
+ unavailable: Indicates that the secondary location is temporarily
+ unavailable.
+ :ivar date last_sync_time:
+ A GMT date value, to the second. All primary writes preceding this value
+ are guaranteed to be available for read operations at the secondary.
+ Primary writes after this point in time may or may not be available for
+ reads. The value may be empty if LastSyncTime is not available. This can
+ happen if the replication status is bootstrap or unavailable. Although
+ geo-replication is continuously enabled, the LastSyncTime result may
+ reflect a cached value from the service that is refreshed every few minutes.
+ '''
+ pass
+
+
+class AccessPolicy(object):
+ '''
+ Access Policy class used by the set and get acl methods in each service.
+
+ A stored access policy can specify the start time, expiry time, and
+ permissions for the Shared Access Signatures with which it's associated.
+ Depending on how you want to control access to your resource, you can
+ specify all of these parameters within the stored access policy, and omit
+ them from the URL for the Shared Access Signature. Doing so permits you to
+ modify the associated signature's behavior at any time, as well as to revoke
+ it. Or you can specify one or more of the access policy parameters within
+ the stored access policy, and the others on the URL. Finally, you can
+ specify all of the parameters on the URL. In this case, you can use the
+ stored access policy to revoke the signature, but not to modify its behavior.
+
+ Together the Shared Access Signature and the stored access policy must
+ include all fields required to authenticate the signature. If any required
+ fields are missing, the request will fail. Likewise, if a field is specified
+ both in the Shared Access Signature URL and in the stored access policy, the
+ request will fail with status code 400 (Bad Request).
+ '''
+
+ def __init__(self, permission=None, expiry=None, start=None):
+ '''
+ :param str permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ '''
+ self.start = start
+ self.expiry = expiry
+ self.permission = permission
+
+
+class Protocol(object):
+ '''
+ Specifies the protocol permitted for a SAS token. Note that HTTP only is
+ not allowed.
+ '''
+
+ HTTPS = 'https'
+ ''' Allow HTTPS requests only. '''
+
+ HTTPS_HTTP = 'https,http'
+ ''' Allow HTTP and HTTPS requests. '''
+
+
+class ResourceTypes(object):
+ '''
+ Specifies the resource types that are accessible with the account SAS.
+
+ :ivar ResourceTypes ResourceTypes.CONTAINER:
+ Access to container-level APIs (e.g., Create/Delete Container,
+ Create/Delete Queue, Create/Delete Share,
+ List Blobs/Files and Directories)
+ :ivar ResourceTypes ResourceTypes.OBJECT:
+ Access to object-level APIs for blobs, queue messages, and
+ files(e.g. Put Blob, Query Entity, Get Messages, Create File, etc.)
+ :ivar ResourceTypes ResourceTypes.SERVICE:
+ Access to service-level APIs (e.g., Get/Set Service Properties,
+ Get Service Stats, List Containers/Queues/Shares)
+ '''
+
+ def __init__(self, service=False, container=False, object=False, _str=None):
+ '''
+ :param bool service:
+ Access to service-level APIs (e.g., Get/Set Service Properties,
+ Get Service Stats, List Containers/Queues/Shares)
+ :param bool container:
+ Access to container-level APIs (e.g., Create/Delete Container,
+ Create/Delete Queue, Create/Delete Share,
+ List Blobs/Files and Directories)
+ :param bool object:
+ Access to object-level APIs for blobs, queue messages, and
+ files(e.g. Put Blob, Query Entity, Get Messages, Create File, etc.)
+ :param str _str:
+ A string representing the resource types.
+ '''
+ if not _str:
+ _str = ''
+ self.service = service or ('s' in _str)
+ self.container = container or ('c' in _str)
+ self.object = object or ('o' in _str)
+
+ def __or__(self, other):
+ return ResourceTypes(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return ResourceTypes(_str=str(self) + str(other))
+
+ def __str__(self):
+ return (('s' if self.service else '') +
+ ('c' if self.container else '') +
+ ('o' if self.object else ''))
+
+
+ResourceTypes.SERVICE = ResourceTypes(service=True)
+ResourceTypes.CONTAINER = ResourceTypes(container=True)
+ResourceTypes.OBJECT = ResourceTypes(object=True)
+
+
+class Services(object):
+ '''
+ Specifies the services accessible with the account SAS.
+
+ :ivar Services Services.BLOB: The blob service.
+ :ivar Services Services.FILE: The file service
+ :ivar Services Services.QUEUE: The queue service.
+ :ivar Services Services.TABLE: The table service.
+ '''
+
+ def __init__(self, blob=False, queue=False, file=False, table=False, _str=None):
+ '''
+ :param bool blob:
+ Access to any blob service, for example, the `.BlockBlobService`
+ :param bool queue:
+ Access to the `.QueueService`
+ :param bool file:
+ Access to the `.FileService`
+ :param bool table:
+ Access to the TableService
+ :param str _str:
+ A string representing the services.
+ '''
+ if not _str:
+ _str = ''
+ self.blob = blob or ('b' in _str)
+ self.queue = queue or ('q' in _str)
+ self.file = file or ('f' in _str)
+ self.table = table or ('t' in _str)
+
+ def __or__(self, other):
+ return Services(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return Services(_str=str(self) + str(other))
+
+ def __str__(self):
+ return (('b' if self.blob else '') +
+ ('q' if self.queue else '') +
+ ('t' if self.table else '') +
+ ('f' if self.file else ''))
+
+
+Services.BLOB = Services(blob=True)
+Services.QUEUE = Services(queue=True)
+Services.TABLE = Services(table=True)
+Services.FILE = Services(file=True)
+
+
+class AccountPermissions(object):
+ '''
+ :class:`~ResourceTypes` class to be used with generate_shared_access_signature
+ method and for the AccessPolicies used with set_*_acl. There are two types of
+ SAS which may be used to grant resource access. One is to grant access to a
+ specific resource (resource-specific). Another is to grant access to the
+ entire service for a specific account and allow certain operations based on
+ perms found here.
+
+ :ivar AccountPermissions AccountPermissions.ADD:
+ Valid for the following Object resource types only: queue messages and append blobs.
+ :ivar AccountPermissions AccountPermissions.CREATE:
+ Valid for the following Object resource types only: blobs and files. Users
+ can create new blobs or files, but may not overwrite existing blobs or files.
+ :ivar AccountPermissions AccountPermissions.DELETE:
+ Valid for Container and Object resource types, except for queue messages.
+ :ivar AccountPermissions AccountPermissions.LIST:
+ Valid for Service and Container resource types only.
+ :ivar AccountPermissions AccountPermissions.PROCESS:
+ Valid for the following Object resource type only: queue messages.
+ :ivar AccountPermissions AccountPermissions.READ:
+ Valid for all signed resources types (Service, Container, and Object).
+ Permits read permissions to the specified resource type.
+ :ivar AccountPermissions AccountPermissions.UPDATE:
+ Valid for the following Object resource types only: queue messages.
+ :ivar AccountPermissions AccountPermissions.WRITE:
+ Valid for all signed resources types (Service, Container, and Object).
+ Permits write permissions to the specified resource type.
+ '''
+
+ def __init__(self, read=False, write=False, delete=False, list=False,
+ add=False, create=False, update=False, process=False, _str=None):
+ '''
+ :param bool read:
+ Valid for all signed resources types (Service, Container, and Object).
+ Permits read permissions to the specified resource type.
+ :param bool write:
+ Valid for all signed resources types (Service, Container, and Object).
+ Permits write permissions to the specified resource type.
+ :param bool delete:
+ Valid for Container and Object resource types, except for queue messages.
+ :param bool list:
+ Valid for Service and Container resource types only.
+ :param bool add:
+ Valid for the following Object resource types only: queue messages, and append blobs.
+ :param bool create:
+ Valid for the following Object resource types only: blobs and files.
+ Users can create new blobs or files, but may not overwrite existing
+ blobs or files.
+ :param bool update:
+ Valid for the following Object resource types only: queue messages.
+ :param bool process:
+ Valid for the following Object resource type only: queue messages.
+ :param str _str:
+ A string representing the permissions.
+ '''
+ if not _str:
+ _str = ''
+ self.read = read or ('r' in _str)
+ self.write = write or ('w' in _str)
+ self.delete = delete or ('d' in _str)
+ self.list = list or ('l' in _str)
+ self.add = add or ('a' in _str)
+ self.create = create or ('c' in _str)
+ self.update = update or ('u' in _str)
+ self.process = process or ('p' in _str)
+
+ def __or__(self, other):
+ return AccountPermissions(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return AccountPermissions(_str=str(self) + str(other))
+
+ def __str__(self):
+ return (('r' if self.read else '') +
+ ('w' if self.write else '') +
+ ('d' if self.delete else '') +
+ ('l' if self.list else '') +
+ ('a' if self.add else '') +
+ ('c' if self.create else '') +
+ ('u' if self.update else '') +
+ ('p' if self.process else ''))
+
+
+AccountPermissions.READ = AccountPermissions(read=True)
+AccountPermissions.WRITE = AccountPermissions(write=True)
+AccountPermissions.DELETE = AccountPermissions(delete=True)
+AccountPermissions.LIST = AccountPermissions(list=True)
+AccountPermissions.ADD = AccountPermissions(add=True)
+AccountPermissions.CREATE = AccountPermissions(create=True)
+AccountPermissions.UPDATE = AccountPermissions(update=True)
+AccountPermissions.PROCESS = AccountPermissions(process=True)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/retry.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/retry.py
new file mode 100644
index 00000000000..69dafef9cfe
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/retry.py
@@ -0,0 +1,292 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from abc import ABCMeta
+from math import pow
+import random
+
+from .models import LocationMode
+from ._constants import (
+ DEV_ACCOUNT_NAME,
+ DEV_ACCOUNT_SECONDARY_NAME
+)
+
+
+class _Retry(object):
+ '''
+ The base class for Exponential and Linear retries containing shared code.
+ '''
+ __metaclass__ = ABCMeta
+
+ def __init__(self, max_attempts, retry_to_secondary):
+ '''
+ Constructs a base retry object.
+
+ :param int max_attempts:
+ The maximum number of retry attempts.
+ :param bool retry_to_secondary:
+ Whether the request should be retried to secondary, if able. This should
+ only be enabled of RA-GRS accounts are used and potentially stale data
+ can be handled.
+ '''
+ self.max_attempts = max_attempts
+ self.retry_to_secondary = retry_to_secondary
+
+ def _should_retry(self, context):
+ '''
+ A function which determines whether or not to retry.
+
+ :param ~azure.storage.models.RetryContext context:
+ The retry context. This contains the request, response, and other data
+ which can be used to determine whether or not to retry.
+ :return:
+ A boolean indicating whether or not to retry the request.
+ :rtype: bool
+ '''
+ # If max attempts are reached, do not retry.
+ if context.count >= self.max_attempts:
+ return False
+
+ status = None
+ if context.response and context.response.status:
+ status = context.response.status
+
+ if status is None:
+ '''
+ If status is None, retry as this request triggered an exception. For
+ example, network issues would trigger this.
+ '''
+ return True
+ elif 200 <= status < 300:
+ '''
+ This method is called after a successful response, meaning we failed
+ during the response body download or parsing. So, success codes should
+ be retried.
+ '''
+ return True
+ elif 300 <= status < 500:
+ '''
+ An exception occured, but in most cases it was expected. Examples could
+ include a 309 Conflict or 412 Precondition Failed.
+ '''
+ if status == 404 and context.location_mode == LocationMode.SECONDARY:
+ # Response code 404 should be retried if secondary was used.
+ return True
+ if status == 408:
+ # Response code 408 is a timeout and should be retried.
+ return True
+ return False
+ elif status >= 500:
+ '''
+ Response codes above 500 with the exception of 501 Not Implemented and
+ 505 Version Not Supported indicate a server issue and should be retried.
+ '''
+ if status == 501 or status == 505:
+ return False
+ return True
+ else:
+ # If something else happened, it's unexpected. Retry.
+ return True
+
+ def _set_next_host_location(self, context):
+ '''
+ A function which sets the next host location on the request, if applicable.
+
+ :param ~azure.storage.models.RetryContext context:
+ The retry context containing the previous host location and the request
+ to evaluate and possibly modify.
+ '''
+ if len(context.request.host_locations) > 1:
+ # If there's more than one possible location, retry to the alternative
+ if context.location_mode == LocationMode.PRIMARY:
+ context.location_mode = LocationMode.SECONDARY
+
+ # if targeting the emulator (with path style), change path instead of host
+ if context.is_emulated:
+ # replace the first instance of primary account name with the secondary account name
+ context.request.path = context.request.path.replace(DEV_ACCOUNT_NAME, DEV_ACCOUNT_SECONDARY_NAME, 1)
+ else:
+ context.request.host = context.request.host_locations.get(context.location_mode)
+ else:
+ context.location_mode = LocationMode.PRIMARY
+
+ # if targeting the emulator (with path style), change path instead of host
+ if context.is_emulated:
+ # replace the first instance of secondary account name with the primary account name
+ context.request.path = context.request.path.replace(DEV_ACCOUNT_SECONDARY_NAME, DEV_ACCOUNT_NAME, 1)
+ else:
+ context.request.host = context.request.host_locations.get(context.location_mode)
+
+ def _retry(self, context, backoff):
+ '''
+ A function which determines whether and how to retry.
+
+ :param ~azure.storage.models.RetryContext context:
+ The retry context. This contains the request, response, and other data
+ which can be used to determine whether or not to retry.
+ :param function() backoff:
+ A function which returns the backoff time if a retry is to be performed.
+ :return:
+ An integer indicating how long to wait before retrying the request,
+ or None to indicate no retry should be performed.
+ :rtype: int or None
+ '''
+ # If the context does not contain a count parameter, this request has not
+ # been retried yet. Add the count parameter to track the number of retries.
+ if not hasattr(context, 'count'):
+ context.count = 0
+
+ # Determine whether to retry, and if so increment the count, modify the
+ # request as desired, and return the backoff.
+ if self._should_retry(context):
+ backoff_interval = backoff(context)
+ context.count += 1
+
+ # If retry to secondary is enabled, attempt to change the host if the
+ # request allows it
+ if self.retry_to_secondary:
+ self._set_next_host_location(context)
+
+ return backoff_interval
+
+ return None
+
+
+class ExponentialRetry(_Retry):
+ '''
+ Exponential retry.
+ '''
+
+ def __init__(self, initial_backoff=15, increment_base=3, max_attempts=3,
+ retry_to_secondary=False, random_jitter_range=3):
+ '''
+ Constructs an Exponential retry object. The initial_backoff is used for
+ the first retry. Subsequent retries are retried after initial_backoff +
+ increment_power^retry_count seconds. For example, by default the first retry
+ occurs after 15 seconds, the second after (15+3^1) = 18 seconds, and the
+ third after (15+3^2) = 24 seconds.
+
+ :param int initial_backoff:
+ The initial backoff interval, in seconds, for the first retry.
+ :param int increment_base:
+ The base, in seconds, to increment the initial_backoff by after the
+ first retry.
+ :param int max_attempts:
+ The maximum number of retry attempts.
+ :param bool retry_to_secondary:
+ Whether the request should be retried to secondary, if able. This should
+ only be enabled of RA-GRS accounts are used and potentially stale data
+ can be handled.
+ :param int random_jitter_range:
+ A number in seconds which indicates a range to jitter/randomize for the back-off interval.
+ For example, a random_jitter_range of 3 results in the back-off interval x to vary between x+3 and x-3.
+ '''
+ self.initial_backoff = initial_backoff
+ self.increment_base = increment_base
+ self.random_jitter_range = random_jitter_range
+ super(ExponentialRetry, self).__init__(max_attempts, retry_to_secondary)
+
+ '''
+ A function which determines whether and how to retry.
+
+ :param ~azure.storage.models.RetryContext context:
+ The retry context. This contains the request, response, and other data
+ which can be used to determine whether or not to retry.
+ :return:
+ An integer indicating how long to wait before retrying the request,
+ or None to indicate no retry should be performed.
+ :rtype: int or None
+ '''
+
+ def retry(self, context):
+ return self._retry(context, self._backoff)
+
+ '''
+ Calculates how long to sleep before retrying.
+
+ :return:
+ An integer indicating how long to wait before retrying the request,
+ or None to indicate no retry should be performed.
+ :rtype: int or None
+ '''
+
+ def _backoff(self, context):
+ random_generator = random.Random()
+ backoff = self.initial_backoff + (0 if context.count == 0 else pow(self.increment_base, context.count))
+ random_range_start = backoff - self.random_jitter_range if backoff > self.random_jitter_range else 0
+ random_range_end = backoff + self.random_jitter_range
+ return random_generator.uniform(random_range_start, random_range_end)
+
+
+class LinearRetry(_Retry):
+ '''
+ Linear retry.
+ '''
+
+ def __init__(self, backoff=15, max_attempts=3, retry_to_secondary=False, random_jitter_range=3):
+ '''
+ Constructs a Linear retry object.
+
+ :param int backoff:
+ The backoff interval, in seconds, between retries.
+ :param int max_attempts:
+ The maximum number of retry attempts.
+ :param bool retry_to_secondary:
+ Whether the request should be retried to secondary, if able. This should
+ only be enabled of RA-GRS accounts are used and potentially stale data
+ can be handled.
+ :param int random_jitter_range:
+ A number in seconds which indicates a range to jitter/randomize for the back-off interval.
+ For example, a random_jitter_range of 3 results in the back-off interval x to vary between x+3 and x-3.
+ '''
+ self.backoff = backoff
+ self.max_attempts = max_attempts
+ self.random_jitter_range = random_jitter_range
+ super(LinearRetry, self).__init__(max_attempts, retry_to_secondary)
+
+ '''
+ A function which determines whether and how to retry.
+
+ :param ~azure.storage.models.RetryContext context:
+ The retry context. This contains the request, response, and other data
+ which can be used to determine whether or not to retry.
+ :return:
+ An integer indicating how long to wait before retrying the request,
+ or None to indicate no retry should be performed.
+ :rtype: int or None
+ '''
+
+ def retry(self, context):
+ return self._retry(context, self._backoff)
+
+ '''
+ Calculates how long to sleep before retrying.
+
+ :return:
+ An integer indicating how long to wait before retrying the request,
+ or None to indicate no retry should be performed.
+ :rtype: int or None
+ '''
+
+ def _backoff(self, context):
+ random_generator = random.Random()
+ # the backoff interval normally does not change, however there is the possibility
+ # that it was modified by accessing the property directly after initializing the object
+ self.random_range_start = self.backoff - self.random_jitter_range if self.backoff > self.random_jitter_range else 0
+ self.random_range_end = self.backoff + self.random_jitter_range
+ return random_generator.uniform(self.random_range_start, self.random_range_end)
+
+
+def no_retry(context):
+ '''
+ Specifies never to retry.
+
+ :param ~azure.storage.models.RetryContext context:
+ The retry context.
+ :return:
+ Always returns None to indicate never to retry.
+ :rtype: None
+ '''
+ return None
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/sharedaccesssignature.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/sharedaccesssignature.py
new file mode 100644
index 00000000000..c23201a85bc
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/sharedaccesssignature.py
@@ -0,0 +1,217 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from datetime import date
+
+from ._common_conversion import (
+ _sign_string,
+ _to_str,
+)
+from ._constants import DEFAULT_X_MS_VERSION
+from ._serialization import (
+ url_quote,
+ _to_utc_datetime,
+)
+
+
+class SharedAccessSignature(object):
+ '''
+ Provides a factory for creating account access
+ signature tokens with an account name and account key. Users can either
+ use the factory or can construct the appropriate service and use the
+ generate_*_shared_access_signature method directly.
+ '''
+
+ def __init__(self, account_name, account_key, x_ms_version=DEFAULT_X_MS_VERSION):
+ '''
+ :param str account_name:
+ The storage account name used to generate the shared access signatures.
+ :param str account_key:
+ The access key to generate the shares access signatures.
+ :param str x_ms_version:
+ The service version used to generate the shared access signatures.
+ '''
+ self.account_name = account_name
+ self.account_key = account_key
+ self.x_ms_version = x_ms_version
+
+ def generate_account(self, services, resource_types, permission, expiry, start=None,
+ ip=None, protocol=None):
+ '''
+ Generates a shared access signature for the account.
+ Use the returned signature with the sas_token parameter of the service
+ or to create a new account object.
+
+ :param Services services:
+ Specifies the services accessible with the account SAS. You can
+ combine values to provide access to more than one service.
+ :param ResourceTypes resource_types:
+ Specifies the resource types that are accessible with the account
+ SAS. You can combine values to provide access to more than one
+ resource type.
+ :param AccountPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy. You can combine
+ values to provide more than one permission.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~azure.storage.common.models.Protocol` for possible values.
+ '''
+ sas = _SharedAccessHelper()
+ sas.add_base(permission, expiry, start, ip, protocol, self.x_ms_version)
+ sas.add_account(services, resource_types)
+ sas.add_account_signature(self.account_name, self.account_key)
+
+ return sas.get_token()
+
+
+class _QueryStringConstants(object):
+ SIGNED_SIGNATURE = 'sig'
+ SIGNED_PERMISSION = 'sp'
+ SIGNED_START = 'st'
+ SIGNED_EXPIRY = 'se'
+ SIGNED_RESOURCE = 'sr'
+ SIGNED_IDENTIFIER = 'si'
+ SIGNED_IP = 'sip'
+ SIGNED_PROTOCOL = 'spr'
+ SIGNED_VERSION = 'sv'
+ SIGNED_CACHE_CONTROL = 'rscc'
+ SIGNED_CONTENT_DISPOSITION = 'rscd'
+ SIGNED_CONTENT_ENCODING = 'rsce'
+ SIGNED_CONTENT_LANGUAGE = 'rscl'
+ SIGNED_CONTENT_TYPE = 'rsct'
+ START_PK = 'spk'
+ START_RK = 'srk'
+ END_PK = 'epk'
+ END_RK = 'erk'
+ SIGNED_RESOURCE_TYPES = 'srt'
+ SIGNED_SERVICES = 'ss'
+
+
+class _SharedAccessHelper(object):
+ def __init__(self):
+ self.query_dict = {}
+
+ def _add_query(self, name, val):
+ if val:
+ self.query_dict[name] = _to_str(val)
+
+ def add_base(self, permission, expiry, start, ip, protocol, x_ms_version):
+ if isinstance(start, date):
+ start = _to_utc_datetime(start)
+
+ if isinstance(expiry, date):
+ expiry = _to_utc_datetime(expiry)
+
+ self._add_query(_QueryStringConstants.SIGNED_START, start)
+ self._add_query(_QueryStringConstants.SIGNED_EXPIRY, expiry)
+ self._add_query(_QueryStringConstants.SIGNED_PERMISSION, permission)
+ self._add_query(_QueryStringConstants.SIGNED_IP, ip)
+ self._add_query(_QueryStringConstants.SIGNED_PROTOCOL, protocol)
+ self._add_query(_QueryStringConstants.SIGNED_VERSION, x_ms_version)
+
+ def add_resource(self, resource):
+ self._add_query(_QueryStringConstants.SIGNED_RESOURCE, resource)
+
+ def add_id(self, id):
+ self._add_query(_QueryStringConstants.SIGNED_IDENTIFIER, id)
+
+ def add_account(self, services, resource_types):
+ self._add_query(_QueryStringConstants.SIGNED_SERVICES, services)
+ self._add_query(_QueryStringConstants.SIGNED_RESOURCE_TYPES, resource_types)
+
+ def add_override_response_headers(self, cache_control,
+ content_disposition,
+ content_encoding,
+ content_language,
+ content_type):
+ self._add_query(_QueryStringConstants.SIGNED_CACHE_CONTROL, cache_control)
+ self._add_query(_QueryStringConstants.SIGNED_CONTENT_DISPOSITION, content_disposition)
+ self._add_query(_QueryStringConstants.SIGNED_CONTENT_ENCODING, content_encoding)
+ self._add_query(_QueryStringConstants.SIGNED_CONTENT_LANGUAGE, content_language)
+ self._add_query(_QueryStringConstants.SIGNED_CONTENT_TYPE, content_type)
+
+ def add_resource_signature(self, account_name, account_key, service, path):
+ def get_value_to_append(query):
+ return_value = self.query_dict.get(query) or ''
+ return return_value + '\n'
+
+ if path[0] != '/':
+ path = '/' + path
+
+ canonicalized_resource = '/' + service + '/' + account_name + path + '\n'
+
+ # Form the string to sign from shared_access_policy and canonicalized
+ # resource. The order of values is important.
+ string_to_sign = \
+ (get_value_to_append(_QueryStringConstants.SIGNED_PERMISSION) +
+ get_value_to_append(_QueryStringConstants.SIGNED_START) +
+ get_value_to_append(_QueryStringConstants.SIGNED_EXPIRY) +
+ canonicalized_resource +
+ get_value_to_append(_QueryStringConstants.SIGNED_IDENTIFIER) +
+ get_value_to_append(_QueryStringConstants.SIGNED_IP) +
+ get_value_to_append(_QueryStringConstants.SIGNED_PROTOCOL) +
+ get_value_to_append(_QueryStringConstants.SIGNED_VERSION))
+
+ if service == 'blob' or service == 'file':
+ string_to_sign += \
+ (get_value_to_append(_QueryStringConstants.SIGNED_CACHE_CONTROL) +
+ get_value_to_append(_QueryStringConstants.SIGNED_CONTENT_DISPOSITION) +
+ get_value_to_append(_QueryStringConstants.SIGNED_CONTENT_ENCODING) +
+ get_value_to_append(_QueryStringConstants.SIGNED_CONTENT_LANGUAGE) +
+ get_value_to_append(_QueryStringConstants.SIGNED_CONTENT_TYPE))
+
+ # remove the trailing newline
+ if string_to_sign[-1] == '\n':
+ string_to_sign = string_to_sign[:-1]
+
+ self._add_query(_QueryStringConstants.SIGNED_SIGNATURE,
+ _sign_string(account_key, string_to_sign))
+
+ def add_account_signature(self, account_name, account_key):
+ def get_value_to_append(query):
+ return_value = self.query_dict.get(query) or ''
+ return return_value + '\n'
+
+ string_to_sign = \
+ (account_name + '\n' +
+ get_value_to_append(_QueryStringConstants.SIGNED_PERMISSION) +
+ get_value_to_append(_QueryStringConstants.SIGNED_SERVICES) +
+ get_value_to_append(_QueryStringConstants.SIGNED_RESOURCE_TYPES) +
+ get_value_to_append(_QueryStringConstants.SIGNED_START) +
+ get_value_to_append(_QueryStringConstants.SIGNED_EXPIRY) +
+ get_value_to_append(_QueryStringConstants.SIGNED_IP) +
+ get_value_to_append(_QueryStringConstants.SIGNED_PROTOCOL) +
+ get_value_to_append(_QueryStringConstants.SIGNED_VERSION))
+
+ self._add_query(_QueryStringConstants.SIGNED_SIGNATURE,
+ _sign_string(account_key, string_to_sign))
+
+ def get_token(self):
+ return '&'.join(['{0}={1}'.format(n, url_quote(v)) for n, v in self.query_dict.items() if v is not None])
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/storageclient.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/storageclient.py
new file mode 100644
index 00000000000..da007dc1911
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/storageclient.py
@@ -0,0 +1,364 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+import sys
+from abc import ABCMeta
+import logging
+
+logger = logging.getLogger(__name__)
+from time import sleep
+
+import requests
+from azure.common import (
+ AzureException,
+)
+
+from ._constants import (
+ DEFAULT_SOCKET_TIMEOUT,
+ DEFAULT_X_MS_VERSION,
+ DEFAULT_USER_AGENT_STRING,
+ USER_AGENT_STRING_PREFIX,
+ USER_AGENT_STRING_SUFFIX,
+)
+from ._error import (
+ _ERROR_DECRYPTION_FAILURE,
+ _http_error_handler,
+)
+from ._http import HTTPError
+from ._http.httpclient import _HTTPClient
+from ._serialization import (
+ _update_request,
+ _add_date_header,
+)
+from .models import (
+ RetryContext,
+ LocationMode,
+ _OperationContext,
+)
+from .retry import ExponentialRetry
+
+
+class StorageClient(object):
+ '''
+ This is the base class for service objects. Service objects are used to do
+ all requests to Storage. This class cannot be instantiated directly.
+
+ :ivar str account_name:
+ The storage account name. This is used to authenticate requests
+ signed with an account key and to construct the storage endpoint. It
+ is required unless a connection string is given, or if a custom
+ domain is used with anonymous authentication.
+ :ivar str account_key:
+ The storage account key. This is used for shared key authentication.
+ If neither account key or sas token is specified, anonymous access
+ will be used.
+ :ivar str sas_token:
+ A shared access signature token to use to authenticate requests
+ instead of the account key. If account key and sas token are both
+ specified, account key will be used to sign. If neither are
+ specified, anonymous access will be used.
+ :ivar str primary_endpoint:
+ The endpoint to send storage requests to.
+ :ivar str secondary_endpoint:
+ The secondary endpoint to read storage data from. This will only be a
+ valid endpoint if the storage account used is RA-GRS and thus allows
+ reading from secondary.
+ :ivar function(context) retry:
+ A function which determines whether to retry. Takes as a parameter a
+ :class:`~azure.storage.common.models.RetryContext` object. Returns the number
+ of seconds to wait before retrying the request, or None to indicate not
+ to retry.
+ :ivar ~azure.storage.common.models.LocationMode location_mode:
+ The host location to use to make requests. Defaults to LocationMode.PRIMARY.
+ Note that this setting only applies to RA-GRS accounts as other account
+ types do not allow reading from secondary. If the location_mode is set to
+ LocationMode.SECONDARY, read requests will be sent to the secondary endpoint.
+ Write requests will continue to be sent to primary.
+ :ivar str protocol:
+ The protocol to use for requests. Defaults to https.
+ :ivar requests.Session request_session:
+ The session object to use for http requests.
+ :ivar function(request) request_callback:
+ A function called immediately before each request is sent. This function
+ takes as a parameter the request object and returns nothing. It may be
+ used to added custom headers or log request data.
+ :ivar function() response_callback:
+ A function called immediately after each response is received. This
+ function takes as a parameter the response object and returns nothing.
+ It may be used to log response data.
+ :ivar function() retry_callback:
+ A function called immediately after retry evaluation is performed. This
+ function takes as a parameter the retry context object and returns nothing.
+ It may be used to detect retries and log context information.
+ '''
+
+ __metaclass__ = ABCMeta
+
+ def __init__(self, connection_params):
+ '''
+ :param obj connection_params: The parameters to use to construct the client.
+ '''
+ self.account_name = connection_params.account_name
+ self.account_key = connection_params.account_key
+ self.sas_token = connection_params.sas_token
+ self.token_credential = connection_params.token_credential
+ self.is_emulated = connection_params.is_emulated
+
+ self.primary_endpoint = connection_params.primary_endpoint
+ self.secondary_endpoint = connection_params.secondary_endpoint
+
+ protocol = connection_params.protocol
+ request_session = connection_params.request_session or requests.Session()
+ socket_timeout = connection_params.socket_timeout or DEFAULT_SOCKET_TIMEOUT
+ self._httpclient = _HTTPClient(
+ protocol=protocol,
+ session=request_session,
+ timeout=socket_timeout,
+ )
+
+ self.retry = ExponentialRetry().retry
+ self.location_mode = LocationMode.PRIMARY
+
+ self.request_callback = None
+ self.response_callback = None
+ self.retry_callback = None
+ self._X_MS_VERSION = DEFAULT_X_MS_VERSION
+ self._USER_AGENT_STRING = DEFAULT_USER_AGENT_STRING
+
+ def _update_user_agent_string(self, service_package_version):
+ self._USER_AGENT_STRING = '{}{} {}'.format(USER_AGENT_STRING_PREFIX,
+ service_package_version,
+ USER_AGENT_STRING_SUFFIX)
+
+ @property
+ def socket_timeout(self):
+ return self._httpclient.timeout
+
+ @socket_timeout.setter
+ def socket_timeout(self, value):
+ self._httpclient.timeout = value
+
+ @property
+ def protocol(self):
+ return self._httpclient.protocol
+
+ @protocol.setter
+ def protocol(self, value):
+ self._httpclient.protocol = value
+
+ @property
+ def request_session(self):
+ return self._httpclient.session
+
+ @request_session.setter
+ def request_session(self, value):
+ self._httpclient.session = value
+
+ def set_proxy(self, host, port, user=None, password=None):
+ '''
+ Sets the proxy server host and port for the HTTP CONNECT Tunnelling.
+
+ :param str host: Address of the proxy. Ex: '192.168.0.100'
+ :param int port: Port of the proxy. Ex: 6000
+ :param str user: User for proxy authorization.
+ :param str password: Password for proxy authorization.
+ '''
+ self._httpclient.set_proxy(host, port, user, password)
+
+ def _get_host_locations(self, primary=True, secondary=False):
+ locations = {}
+ if primary:
+ locations[LocationMode.PRIMARY] = self.primary_endpoint
+ if secondary:
+ locations[LocationMode.SECONDARY] = self.secondary_endpoint
+ return locations
+
+ def _apply_host(self, request, operation_context, retry_context):
+ if operation_context.location_lock and operation_context.host_location:
+ # If this is a location locked operation and the location is set,
+ # override the request location and host_location.
+ request.host_locations = operation_context.host_location
+ request.host = list(operation_context.host_location.values())[0]
+ retry_context.location_mode = list(operation_context.host_location.keys())[0]
+ elif len(request.host_locations) == 1:
+ # If only one location is allowed, use that location.
+ request.host = list(request.host_locations.values())[0]
+ retry_context.location_mode = list(request.host_locations.keys())[0]
+ else:
+ # If multiple locations are possible, choose based on the location mode.
+ request.host = request.host_locations.get(self.location_mode)
+ retry_context.location_mode = self.location_mode
+
+ @staticmethod
+ def extract_date_and_request_id(retry_context):
+ if getattr(retry_context, 'response', None) is None:
+ return ""
+ resp = retry_context.response
+
+ if 'date' in resp.headers and 'x-ms-request-id' in resp.headers:
+ return str.format("Server-Timestamp={0}, Server-Request-ID={1}",
+ resp.headers['date'], resp.headers['x-ms-request-id'])
+ elif 'date' in resp.headers:
+ return str.format("Server-Timestamp={0}", resp.headers['date'])
+ elif 'x-ms-request-id' in resp.headers:
+ return str.format("Server-Request-ID={0}", resp.headers['x-ms-request-id'])
+ else:
+ return ""
+
+ def _perform_request(self, request, parser=None, parser_args=None, operation_context=None):
+ '''
+ Sends the request and return response. Catches HTTPError and hands it
+ to error handler
+ '''
+ operation_context = operation_context or _OperationContext()
+ retry_context = RetryContext()
+ retry_context.is_emulated = self.is_emulated
+
+ # Apply the appropriate host based on the location mode
+ self._apply_host(request, operation_context, retry_context)
+
+ # Apply common settings to the request
+ _update_request(request, self._X_MS_VERSION, self._USER_AGENT_STRING)
+ client_request_id_prefix = str.format("Client-Request-ID={0}", request.headers['x-ms-client-request-id'])
+
+ while True:
+ try:
+ try:
+ # Execute the request callback
+ if self.request_callback:
+ self.request_callback(request)
+
+ # Add date and auth after the callback so date doesn't get too old and
+ # authentication is still correct if signed headers are added in the request
+ # callback. This also ensures retry policies with long back offs
+ # will work as it resets the time sensitive headers.
+ _add_date_header(request)
+ self.authentication.sign_request(request)
+
+ # Set the request context
+ retry_context.request = request
+
+ # Log the request before it goes out
+ logger.info("%s Outgoing request: Method=%s, Path=%s, Query=%s, Headers=%s.",
+ client_request_id_prefix,
+ request.method,
+ request.path,
+ request.query,
+ str(request.headers).replace('\n', ''))
+
+ # Perform the request
+ response = self._httpclient.perform_request(request)
+
+ # Execute the response callback
+ if self.response_callback:
+ self.response_callback(response)
+
+ # Set the response context
+ retry_context.response = response
+
+ # Log the response when it comes back
+ logger.info("%s Receiving Response: "
+ "%s, HTTP Status Code=%s, Message=%s, Headers=%s.",
+ client_request_id_prefix,
+ self.extract_date_and_request_id(retry_context),
+ response.status,
+ response.message,
+ str(request.headers).replace('\n', ''))
+
+ # Parse and wrap HTTP errors in AzureHttpError which inherits from AzureException
+ if response.status >= 300:
+ # This exception will be caught by the general error handler
+ # and raised as an azure http exception
+ _http_error_handler(
+ HTTPError(response.status, response.message, response.headers, response.body))
+
+ # Parse the response
+ if parser:
+ if parser_args:
+ args = [response]
+ args.extend(parser_args)
+ return parser(*args)
+ else:
+ return parser(response)
+ else:
+ return
+ except AzureException as ex:
+ retry_context.exception = ex
+ raise ex
+ except Exception as ex:
+ retry_context.exception = ex
+ if sys.version_info >= (3,):
+ # Automatic chaining in Python 3 means we keep the trace
+ raise AzureException(ex.args[0])
+ else:
+ # There isn't a good solution in 2 for keeping the stack trace
+ # in general, or that will not result in an error in 3
+ # However, we can keep the previous error type and message
+ # TODO: In the future we will log the trace
+ msg = ""
+ if len(ex.args) > 0:
+ msg = ex.args[0]
+ raise AzureException('{}: {}'.format(ex.__class__.__name__, msg))
+
+ except AzureException as ex:
+ # only parse the strings used for logging if logging is at least enabled for CRITICAL
+ if logger.isEnabledFor(logging.CRITICAL):
+ exception_str_in_one_line = str(ex).replace('\n', '')
+ status_code = retry_context.response.status if retry_context.response is not None else 'Unknown'
+ timestamp_and_request_id = self.extract_date_and_request_id(retry_context)
+
+ logger.info("%s Operation failed: checking if the operation should be retried. "
+ "Current retry count=%s, %s, HTTP status code=%s, Exception=%s.",
+ client_request_id_prefix,
+ retry_context.count if hasattr(retry_context, 'count') else 0,
+ timestamp_and_request_id,
+ status_code,
+ exception_str_in_one_line)
+
+ # Decryption failures (invalid objects, invalid algorithms, data unencrypted in strict mode, etc)
+ # will not be resolved with retries.
+ if str(ex) == _ERROR_DECRYPTION_FAILURE:
+ logger.error("%s Encountered decryption failure: this cannot be retried. "
+ "%s, HTTP status code=%s, Exception=%s.",
+ client_request_id_prefix,
+ timestamp_and_request_id,
+ status_code,
+ exception_str_in_one_line)
+ raise ex
+
+ # Determine whether a retry should be performed and if so, how
+ # long to wait before performing retry.
+ retry_interval = self.retry(retry_context)
+ if retry_interval is not None:
+ # Execute the callback
+ if self.retry_callback:
+ self.retry_callback(retry_context)
+
+ logger.info(
+ "%s Retry policy is allowing a retry: Retry count=%s, Interval=%s.",
+ client_request_id_prefix,
+ retry_context.count,
+ retry_interval)
+
+ # Sleep for the desired retry interval
+ sleep(retry_interval)
+ else:
+ logger.error("%s Retry policy did not allow for a retry: "
+ "%s, HTTP status code=%s, Exception=%s.",
+ client_request_id_prefix,
+ timestamp_and_request_id,
+ status_code,
+ exception_str_in_one_line)
+ raise ex
+ finally:
+ # If this is a location locked operation and the location is not set,
+ # this is the first request of that operation. Set the location to
+ # be used for subsequent requests in the operation.
+ if operation_context.location_lock and not operation_context.host_location:
+ # note: to cover the emulator scenario, the host_location is grabbed
+ # from request.host_locations(which includes the dev account name)
+ # instead of request.host(which at this point no longer includes the dev account name)
+ operation_context.host_location = {retry_context.location_mode: request.host_locations[retry_context.location_mode]}
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/tokencredential.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/tokencredential.py
new file mode 100644
index 00000000000..725badcb33b
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/common/tokencredential.py
@@ -0,0 +1,33 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+
+class TokenCredential(object):
+ """
+ Represents a token that is used to authorize HTTPS requests.
+ The token can be updated by the user.
+
+ :ivar str token:
+ The authorization token. It can be set by the user at any point in a thread-safe way.
+ """
+
+ def __init__(self, initial_value):
+ """
+ :param initial_value: initial value for the token.
+ """
+ self.token = initial_value
+
+ def update_token(self, new_value):
+ """
+ :param new_value: new value to be set as the token.
+ """
+ self.token = new_value
+
+ def get_token(self):
+ """
+ :return: current token value.
+ """
+ return self.token
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/__init__.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/__init__.py
new file mode 100644
index 00000000000..464a949d4e4
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/__init__.py
@@ -0,0 +1,20 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from .fileservice import FileService
+from .models import (
+ Share,
+ ShareProperties,
+ File,
+ FileProperties,
+ Directory,
+ DirectoryProperties,
+ FileRange,
+ ContentSettings,
+ CopyProperties,
+ SharePermissions,
+ FilePermissions,
+ DeleteSnapshot,
+)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_constants.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_constants.py
new file mode 100644
index 00000000000..51dfcab8dcf
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_constants.py
@@ -0,0 +1,11 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+__author__ = 'Microsoft Corp. '
+__version__ = '1.1.0'
+
+# x-ms-version for storage service.
+X_MS_VERSION = '2017-07-29'
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_deserialization.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_deserialization.py
new file mode 100644
index 00000000000..e1e4ec40ff0
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_deserialization.py
@@ -0,0 +1,241 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from dateutil import parser
+
+try:
+ from xml.etree import cElementTree as ETree
+except ImportError:
+ from xml.etree import ElementTree as ETree
+from .models import (
+ Share,
+ Directory,
+ File,
+ FileProperties,
+ FileRange,
+ ShareProperties,
+ DirectoryProperties,
+)
+from ..common.models import (
+ _list,
+)
+from ..common._deserialization import (
+ _parse_properties,
+ _parse_metadata,
+)
+from ..common._error import _validate_content_match
+from ..common._common_conversion import (
+ _get_content_md5,
+ _to_str,
+)
+
+def _parse_snapshot_share(response, name):
+ '''
+ Extracts snapshot return header.
+ '''
+ snapshot = response.headers.get('x-ms-snapshot')
+
+ return _parse_share(response, name, snapshot)
+
+def _parse_share(response, name, snapshot=None):
+ if response is None:
+ return None
+
+ metadata = _parse_metadata(response)
+ props = _parse_properties(response, ShareProperties)
+ return Share(name, props, metadata, snapshot)
+
+
+def _parse_directory(response, name):
+ if response is None:
+ return None
+
+ metadata = _parse_metadata(response)
+ props = _parse_properties(response, DirectoryProperties)
+ return Directory(name, props, metadata)
+
+
+def _parse_file(response, name, validate_content=False):
+ if response is None:
+ return None
+
+ metadata = _parse_metadata(response)
+ props = _parse_properties(response, FileProperties)
+
+ # For range gets, only look at 'x-ms-content-md5' for overall MD5
+ content_settings = getattr(props, 'content_settings')
+ if 'content-range' in response.headers:
+ if 'x-ms-content-md5' in response.headers:
+ setattr(content_settings, 'content_md5', _to_str(response.headers['x-ms-content-md5']))
+ else:
+ delattr(content_settings, 'content_md5')
+
+ if validate_content:
+ computed_md5 = _get_content_md5(response.body)
+ _validate_content_match(response.headers['content-md5'], computed_md5)
+
+ return File(name, response.body, props, metadata)
+
+
+def _convert_xml_to_shares(response):
+ '''
+
+
+ string-value
+ string-value
+ int-value
+
+
+ share-name
+ date-time-value
+
+ date/time-value
+ etag
+ max-share-size
+
+
+ value
+
+
+
+ marker-value
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ shares = _list()
+ list_element = ETree.fromstring(response.body)
+
+ # Set next marker
+ next_marker = list_element.findtext('NextMarker') or None
+ setattr(shares, 'next_marker', next_marker)
+
+ shares_element = list_element.find('Shares')
+
+ for share_element in shares_element.findall('Share'):
+ # Name element
+ share = Share()
+ share.name = share_element.findtext('Name')
+
+ # Snapshot
+ share.snapshot = share_element.findtext('Snapshot')
+
+ # Metadata
+ metadata_root_element = share_element.find('Metadata')
+ if metadata_root_element is not None:
+ share.metadata = dict()
+ for metadata_element in metadata_root_element:
+ share.metadata[metadata_element.tag] = metadata_element.text
+
+ # Properties
+ properties_element = share_element.find('Properties')
+ share.properties.last_modified = parser.parse(properties_element.findtext('Last-Modified'))
+ share.properties.etag = properties_element.findtext('Etag')
+ share.properties.quota = int(properties_element.findtext('Quota'))
+
+ # Add share to list
+ shares.append(share)
+
+ return shares
+
+
+def _convert_xml_to_directories_and_files(response):
+ '''
+
+
+ string-value
+ int-value
+
+
+ file-name
+
+ size-in-bytes
+
+
+
+ directory-name
+
+
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ entries = _list()
+ list_element = ETree.fromstring(response.body)
+
+ # Set next marker
+ next_marker = list_element.findtext('NextMarker') or None
+ setattr(entries, 'next_marker', next_marker)
+
+ entries_element = list_element.find('Entries')
+
+ for file_element in entries_element.findall('File'):
+ # Name element
+ file = File()
+ file.name = file_element.findtext('Name')
+
+ # Properties
+ properties_element = file_element.find('Properties')
+ file.properties.content_length = int(properties_element.findtext('Content-Length'))
+
+ # Add file to list
+ entries.append(file)
+
+ for directory_element in entries_element.findall('Directory'):
+ # Name element
+ directory = Directory()
+ directory.name = directory_element.findtext('Name')
+
+ # Add directory to list
+ entries.append(directory)
+
+ return entries
+
+
+def _convert_xml_to_ranges(response):
+ '''
+
+
+
+ Start Byte
+ End Byte
+
+
+ Start Byte
+ End Byte
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ ranges = list()
+ ranges_element = ETree.fromstring(response.body)
+
+ for range_element in ranges_element.findall('Range'):
+ # Parse range
+ range = FileRange(int(range_element.findtext('Start')), int(range_element.findtext('End')))
+
+ # Add range to list
+ ranges.append(range)
+
+ return ranges
+
+
+def _convert_xml_to_share_stats(response):
+ '''
+
+
+ 15
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ share_stats_element = ETree.fromstring(response.body)
+ return int(share_stats_element.findtext('ShareUsage'))
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_download_chunking.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_download_chunking.py
new file mode 100644
index 00000000000..5eb2bdb461b
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_download_chunking.py
@@ -0,0 +1,107 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import threading
+
+from ..common._error import _ERROR_NO_SINGLE_THREAD_CHUNKING
+
+
+def _download_file_chunks(file_service, share_name, directory_name, file_name,
+ download_size, block_size, progress, start_range, end_range,
+ stream, max_connections, progress_callback, validate_content,
+ timeout, operation_context, snapshot):
+ if max_connections <= 1:
+ raise ValueError(_ERROR_NO_SINGLE_THREAD_CHUNKING.format('file'))
+
+ downloader = _FileChunkDownloader(
+ file_service,
+ share_name,
+ directory_name,
+ file_name,
+ download_size,
+ block_size,
+ progress,
+ start_range,
+ end_range,
+ stream,
+ progress_callback,
+ validate_content,
+ timeout,
+ operation_context,
+ snapshot,
+ )
+
+ import concurrent.futures
+ executor = concurrent.futures.ThreadPoolExecutor(max_connections)
+ result = list(executor.map(downloader.process_chunk, downloader.get_chunk_offsets()))
+
+
+class _FileChunkDownloader(object):
+ def __init__(self, file_service, share_name, directory_name, file_name,
+ download_size, chunk_size, progress, start_range, end_range,
+ stream, progress_callback, validate_content, timeout, operation_context, snapshot):
+ self.file_service = file_service
+ self.share_name = share_name
+ self.directory_name = directory_name
+ self.file_name = file_name
+ self.chunk_size = chunk_size
+
+ self.download_size = download_size
+ self.start_index = start_range
+ self.file_end = end_range
+
+ self.stream = stream
+ self.stream_start = stream.tell()
+ self.stream_lock = threading.Lock()
+ self.progress_callback = progress_callback
+ self.progress_total = progress
+ self.progress_lock = threading.Lock()
+ self.validate_content = validate_content
+ self.timeout = timeout
+ self.operation_context = operation_context
+ self.snapshot = snapshot
+
+ def get_chunk_offsets(self):
+ index = self.start_index
+ while index < self.file_end:
+ yield index
+ index += self.chunk_size
+
+ def process_chunk(self, chunk_start):
+ if chunk_start + self.chunk_size > self.file_end:
+ chunk_end = self.file_end
+ else:
+ chunk_end = chunk_start + self.chunk_size
+
+ chunk_data = self._download_chunk(chunk_start, chunk_end).content
+ length = chunk_end - chunk_start
+ if length > 0:
+ self._write_to_stream(chunk_data, chunk_start)
+ self._update_progress(length)
+
+ def _update_progress(self, length):
+ if self.progress_callback is not None:
+ with self.progress_lock:
+ self.progress_total += length
+ total = self.progress_total
+ self.progress_callback(total, self.download_size)
+
+ def _write_to_stream(self, chunk_data, chunk_start):
+ with self.stream_lock:
+ self.stream.seek(self.stream_start + (chunk_start - self.start_index))
+ self.stream.write(chunk_data)
+
+ def _download_chunk(self, chunk_start, chunk_end):
+ return self.file_service._get_file(
+ self.share_name,
+ self.directory_name,
+ self.file_name,
+ start_range=chunk_start,
+ end_range=chunk_end - 1,
+ validate_content=self.validate_content,
+ timeout=self.timeout,
+ _context=self.operation_context,
+ snapshot=self.snapshot
+ )
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_serialization.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_serialization.py
new file mode 100644
index 00000000000..03aecd12ee5
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_serialization.py
@@ -0,0 +1,66 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from ..common._common_conversion import _str
+from ..common._error import (
+ _validate_not_none,
+ _ERROR_START_END_NEEDED_FOR_MD5,
+ _ERROR_RANGE_TOO_LARGE_FOR_MD5,
+)
+
+
+def _get_path(share_name=None, directory_name=None, file_name=None):
+ '''
+ Creates the path to access a file resource.
+
+ share_name:
+ Name of share.
+ directory_name:
+ The path to the directory.
+ file_name:
+ Name of file.
+ '''
+ if share_name and directory_name and file_name:
+ return '/{0}/{1}/{2}'.format(
+ _str(share_name),
+ _str(directory_name),
+ _str(file_name))
+ elif share_name and directory_name:
+ return '/{0}/{1}'.format(
+ _str(share_name),
+ _str(directory_name))
+ elif share_name and file_name:
+ return '/{0}/{1}'.format(
+ _str(share_name),
+ _str(file_name))
+ elif share_name:
+ return '/{0}'.format(_str(share_name))
+ else:
+ return '/'
+
+
+def _validate_and_format_range_headers(request, start_range, end_range, start_range_required=True,
+ end_range_required=True, check_content_md5=False):
+ # If end range is provided, start range must be provided
+ if start_range_required or end_range is not None:
+ _validate_not_none('start_range', start_range)
+ if end_range_required:
+ _validate_not_none('end_range', end_range)
+
+ # Format based on whether end_range is present
+ request.headers = request.headers or {}
+ if end_range is not None:
+ request.headers['x-ms-range'] = 'bytes={0}-{1}'.format(start_range, end_range)
+ elif start_range is not None:
+ request.headers['x-ms-range'] = 'bytes={0}-'.format(start_range)
+
+ # Content MD5 can only be provided for a complete range less than 4MB in size
+ if check_content_md5:
+ if start_range is None or end_range is None:
+ raise ValueError(_ERROR_START_END_NEEDED_FOR_MD5)
+ if end_range - start_range > 4 * 1024 * 1024:
+ raise ValueError(_ERROR_RANGE_TOO_LARGE_FOR_MD5)
+
+ request.headers['x-ms-range-get-content-md5'] = 'true'
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_upload_chunking.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_upload_chunking.py
new file mode 100644
index 00000000000..c6fb34f77bf
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/_upload_chunking.py
@@ -0,0 +1,133 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import threading
+
+
+def _upload_file_chunks(file_service, share_name, directory_name, file_name,
+ file_size, block_size, stream, max_connections,
+ progress_callback, validate_content, timeout):
+ uploader = _FileChunkUploader(
+ file_service,
+ share_name,
+ directory_name,
+ file_name,
+ file_size,
+ block_size,
+ stream,
+ max_connections > 1,
+ progress_callback,
+ validate_content,
+ timeout
+ )
+
+ if progress_callback is not None:
+ progress_callback(0, file_size)
+
+ if max_connections > 1:
+ import concurrent.futures
+ executor = concurrent.futures.ThreadPoolExecutor(max_connections)
+ range_ids = list(executor.map(uploader.process_chunk, uploader.get_chunk_offsets()))
+ else:
+ if file_size is not None:
+ range_ids = [uploader.process_chunk(start) for start in uploader.get_chunk_offsets()]
+ else:
+ range_ids = uploader.process_all_unknown_size()
+
+ return range_ids
+
+
+class _FileChunkUploader(object):
+ def __init__(self, file_service, share_name, directory_name, file_name,
+ file_size, chunk_size, stream, parallel, progress_callback,
+ validate_content, timeout):
+ self.file_service = file_service
+ self.share_name = share_name
+ self.directory_name = directory_name
+ self.file_name = file_name
+ self.file_size = file_size
+ self.chunk_size = chunk_size
+ self.stream = stream
+ self.stream_start = stream.tell() if parallel else None
+ self.stream_lock = threading.Lock() if parallel else None
+ self.progress_callback = progress_callback
+ self.progress_total = 0
+ self.progress_lock = threading.Lock() if parallel else None
+ self.validate_content = validate_content
+ self.timeout = timeout
+
+ def get_chunk_offsets(self):
+ index = 0
+ if self.file_size is None:
+ # we don't know the size of the stream, so we have no
+ # choice but to seek
+ while True:
+ data = self._read_from_stream(index, 1)
+ if not data:
+ break
+ yield index
+ index += self.chunk_size
+ else:
+ while index < self.file_size:
+ yield index
+ index += self.chunk_size
+
+ def process_chunk(self, chunk_offset):
+ size = self.chunk_size
+ if self.file_size is not None:
+ size = min(size, self.file_size - chunk_offset)
+ chunk_data = self._read_from_stream(chunk_offset, size)
+ return self._upload_chunk_with_progress(chunk_offset, chunk_data)
+
+ def process_all_unknown_size(self):
+ assert self.stream_lock is None
+ range_ids = []
+ index = 0
+ while True:
+ data = self._read_from_stream(None, self.chunk_size)
+ if data:
+ index += len(data)
+ range_id = self._upload_chunk_with_progress(index, data)
+ range_ids.append(range_id)
+ else:
+ break
+
+ return range_ids
+
+ def _read_from_stream(self, offset, count):
+ if self.stream_lock is not None:
+ with self.stream_lock:
+ self.stream.seek(self.stream_start + offset)
+ data = self.stream.read(count)
+ else:
+ data = self.stream.read(count)
+ return data
+
+ def _update_progress(self, length):
+ if self.progress_callback is not None:
+ if self.progress_lock is not None:
+ with self.progress_lock:
+ self.progress_total += length
+ total = self.progress_total
+ else:
+ self.progress_total += length
+ total = self.progress_total
+ self.progress_callback(total, self.file_size)
+
+ def _upload_chunk_with_progress(self, chunk_start, chunk_data):
+ chunk_end = chunk_start + len(chunk_data) - 1
+ self.file_service.update_range(
+ self.share_name,
+ self.directory_name,
+ self.file_name,
+ chunk_data,
+ chunk_start,
+ chunk_end,
+ self.validate_content,
+ timeout=self.timeout
+ )
+ range_id = 'bytes={0}-{1}'.format(chunk_start, chunk_end)
+ self._update_progress(len(chunk_data))
+ return range_id
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/fileservice.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/fileservice.py
new file mode 100644
index 00000000000..4872e107804
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/fileservice.py
@@ -0,0 +1,2468 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+from os import path
+
+from azure.common import AzureHttpError
+
+from ..common._auth import (
+ _StorageSharedKeyAuthentication,
+ _StorageSASAuthentication,
+)
+from ..common._common_conversion import (
+ _int_to_str,
+ _to_str,
+ _get_content_md5,
+)
+from ..common._connection import _ServiceParameters
+from ..common._constants import (
+ SERVICE_HOST_BASE,
+ DEFAULT_PROTOCOL,
+ DEV_ACCOUNT_NAME,
+)
+from ..common._deserialization import (
+ _convert_xml_to_service_properties,
+ _convert_xml_to_signed_identifiers,
+ _parse_metadata,
+ _parse_properties,
+ _parse_length_from_content_range,
+)
+from ..common._error import (
+ _dont_fail_not_exist,
+ _dont_fail_on_exist,
+ _validate_not_none,
+ _validate_type_bytes,
+ _ERROR_VALUE_NEGATIVE,
+ _ERROR_STORAGE_MISSING_INFO,
+ _ERROR_EMULATOR_DOES_NOT_SUPPORT_FILES,
+ _ERROR_PARALLEL_NOT_SEEKABLE,
+ _validate_access_policies,
+)
+from ..common._http import HTTPRequest
+from ..common._serialization import (
+ _get_request_body,
+ _get_data_bytes_only,
+ _convert_signed_identifiers_to_xml,
+ _convert_service_properties_to_xml,
+ _add_metadata_headers,
+)
+from ..common.models import (
+ Services,
+ ListGenerator,
+ _OperationContext,
+)
+from .sharedaccesssignature import (
+ FileSharedAccessSignature,
+)
+from ..common.storageclient import StorageClient
+from ._deserialization import (
+ _convert_xml_to_shares,
+ _convert_xml_to_directories_and_files,
+ _convert_xml_to_ranges,
+ _convert_xml_to_share_stats,
+ _parse_file,
+ _parse_share,
+ _parse_snapshot_share,
+ _parse_directory,
+)
+from ._download_chunking import _download_file_chunks
+from ._serialization import (
+ _get_path,
+ _validate_and_format_range_headers,
+)
+from ._upload_chunking import _upload_file_chunks
+from .models import (
+ FileProperties,
+)
+
+from ._constants import (
+ X_MS_VERSION,
+ __version__ as package_version,
+)
+
+if sys.version_info >= (3,):
+ from io import BytesIO
+else:
+ from cStringIO import StringIO as BytesIO
+
+
+class FileService(StorageClient):
+ '''
+ The Server Message Block (SMB) protocol is the preferred file share protocol
+ used on premise today. The Microsoft Azure File service enables customers to
+ leverage the availability and scalability of Azure's Cloud Infrastructure as
+ a Service (IaaS) SMB without having to rewrite SMB client applications.
+
+ The Azure File service also offers a compelling alternative to traditional
+ Direct Attached Storage (DAS) and Storage Area Network (SAN) solutions, which
+ are often complex and expensive to install, configure, and operate.
+
+ :ivar int MAX_SINGLE_GET_SIZE:
+ The size of the first range get performed by get_file_to_* methods if
+ max_connections is greater than 1. Less data will be returned if the
+ file is smaller than this.
+ :ivar int MAX_CHUNK_GET_SIZE:
+ The size of subsequent range gets performed by get_file_to_* methods if
+ max_connections is greater than 1 and the file is larger than MAX_SINGLE_GET_SIZE.
+ Less data will be returned if the remainder of the file is smaller than
+ this. If this is set to larger than 4MB, content_validation will throw an
+ error if enabled. However, if content_validation is not desired a size
+ greater than 4MB may be optimal. Setting this below 4MB is not recommended.
+ :ivar int MAX_RANGE_SIZE:
+ The size of the ranges put by create_file_from_* methods. Smaller ranges
+ may be put if there is less data provided. The maximum range size the service
+ supports is 4MB.
+ '''
+ MAX_SINGLE_GET_SIZE = 32 * 1024 * 1024
+ MAX_CHUNK_GET_SIZE = 8 * 1024 * 1024
+ MAX_RANGE_SIZE = 4 * 1024 * 1024
+
+ def __init__(self, account_name=None, account_key=None, sas_token=None,
+ protocol=DEFAULT_PROTOCOL, endpoint_suffix=SERVICE_HOST_BASE,
+ request_session=None, connection_string=None, socket_timeout=None):
+ '''
+ :param str account_name:
+ The storage account name. This is used to authenticate requests
+ signed with an account key and to construct the storage endpoint. It
+ is required unless a connection string is given.
+ :param str account_key:
+ The storage account key. This is used for shared key authentication.
+ :param str sas_token:
+ A shared access signature token to use to authenticate requests
+ instead of the account key. If account key and sas token are both
+ specified, account key will be used to sign.
+ :param str protocol:
+ The protocol to use for requests. Defaults to https.
+ :param str endpoint_suffix:
+ The host base component of the url, minus the account name. Defaults
+ to Azure (core.windows.net). Override this to use the China cloud
+ (core.chinacloudapi.cn).
+ :param requests.Session request_session:
+ The session object to use for http requests.
+ :param str connection_string:
+ If specified, this will override all other parameters besides
+ request session. See
+ http://azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/
+ for the connection string format.
+ :param int socket_timeout:
+ If specified, this will override the default socket timeout. The timeout specified is in seconds.
+ See DEFAULT_SOCKET_TIMEOUT in _constants.py for the default value.
+ '''
+ service_params = _ServiceParameters.get_service_parameters(
+ 'file',
+ account_name=account_name,
+ account_key=account_key,
+ sas_token=sas_token,
+ protocol=protocol,
+ endpoint_suffix=endpoint_suffix,
+ request_session=request_session,
+ connection_string=connection_string,
+ socket_timeout=socket_timeout)
+
+ super(FileService, self).__init__(service_params)
+
+ if self.account_name == DEV_ACCOUNT_NAME:
+ raise ValueError(_ERROR_EMULATOR_DOES_NOT_SUPPORT_FILES)
+
+ if self.account_key:
+ self.authentication = _StorageSharedKeyAuthentication(
+ self.account_name,
+ self.account_key,
+ )
+ elif self.sas_token:
+ self.authentication = _StorageSASAuthentication(self.sas_token)
+ else:
+ raise ValueError(_ERROR_STORAGE_MISSING_INFO)
+ self._X_MS_VERSION = X_MS_VERSION
+ self._update_user_agent_string(package_version)
+
+ def make_file_url(self, share_name, directory_name, file_name,
+ protocol=None, sas_token=None):
+ '''
+ Creates the url to access a file.
+
+ :param str share_name:
+ Name of share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of file.
+ :param str protocol:
+ Protocol to use: 'http' or 'https'. If not specified, uses the
+ protocol specified when FileService was initialized.
+ :param str sas_token:
+ Shared access signature token created with
+ generate_shared_access_signature.
+ :return: file access URL.
+ :rtype: str
+ '''
+
+ if directory_name is None:
+ url = '{}://{}/{}/{}'.format(
+ protocol or self.protocol,
+ self.primary_endpoint,
+ share_name,
+ file_name,
+ )
+ else:
+ url = '{}://{}/{}/{}/{}'.format(
+ protocol or self.protocol,
+ self.primary_endpoint,
+ share_name,
+ directory_name,
+ file_name,
+ )
+
+ if sas_token:
+ url += '?' + sas_token
+
+ return url
+
+ def generate_account_shared_access_signature(self, resource_types, permission,
+ expiry, start=None, ip=None, protocol=None):
+ '''
+ Generates a shared access signature for the file service.
+ Use the returned signature with the sas_token parameter of the FileService.
+
+ :param ResourceTypes resource_types:
+ Specifies the resource types that are accessible with the account SAS.
+ :param AccountPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. Possible values are
+ both HTTPS and HTTP (https,http) or HTTPS only (https). The default value
+ is https,http. Note that HTTP only is not a permitted value.
+ :return: A Shared Access Signature (sas) token.
+ :rtype: str
+ '''
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = FileSharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_account(Services.FILE, resource_types, permission,
+ expiry, start=start, ip=ip, protocol=protocol)
+
+ def generate_share_shared_access_signature(self, share_name,
+ permission=None,
+ expiry=None,
+ start=None,
+ id=None,
+ ip=None,
+ protocol=None,
+ cache_control=None,
+ content_disposition=None,
+ content_encoding=None,
+ content_language=None,
+ content_type=None):
+ '''
+ Generates a shared access signature for the share.
+ Use the returned signature with the sas_token parameter of FileService.
+
+ :param str share_name:
+ Name of share.
+ :param SharePermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, create, write, delete, list.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use :func:`~set_share_acl`.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. Possible values are
+ both HTTPS and HTTP (https,http) or HTTPS only (https). The default value
+ is https,http. Note that HTTP only is not a permitted value.
+ :param str cache_control:
+ Response header value for Cache-Control when resource is accessed
+ using this shared access signature.
+ :param str content_disposition:
+ Response header value for Content-Disposition when resource is accessed
+ using this shared access signature.
+ :param str content_encoding:
+ Response header value for Content-Encoding when resource is accessed
+ using this shared access signature.
+ :param str content_language:
+ Response header value for Content-Language when resource is accessed
+ using this shared access signature.
+ :param str content_type:
+ Response header value for Content-Type when resource is accessed
+ using this shared access signature.
+ :return: A Shared Access Signature (sas) token.
+ :rtype: str
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = FileSharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_share(
+ share_name,
+ permission,
+ expiry,
+ start=start,
+ id=id,
+ ip=ip,
+ protocol=protocol,
+ cache_control=cache_control,
+ content_disposition=content_disposition,
+ content_encoding=content_encoding,
+ content_language=content_language,
+ content_type=content_type,
+ )
+
+ def generate_file_shared_access_signature(self, share_name,
+ directory_name=None,
+ file_name=None,
+ permission=None,
+ expiry=None,
+ start=None,
+ id=None,
+ ip=None,
+ protocol=None,
+ cache_control=None,
+ content_disposition=None,
+ content_encoding=None,
+ content_language=None,
+ content_type=None):
+ '''
+ Generates a shared access signature for the file.
+ Use the returned signature with the sas_token parameter of FileService.
+
+ :param str share_name:
+ Name of share.
+ :param str directory_name:
+ Name of directory. SAS tokens cannot be created for directories, so
+ this parameter should only be present if file_name is provided.
+ :param str file_name:
+ Name of file.
+ :param FilePermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, create, write, delete, list.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use
+ set_file_service_properties.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. Possible values are
+ both HTTPS and HTTP (https,http) or HTTPS only (https). The default value
+ is https,http. Note that HTTP only is not a permitted value.
+ :param str cache_control:
+ Response header value for Cache-Control when resource is accessed
+ using this shared access signature.
+ :param str content_disposition:
+ Response header value for Content-Disposition when resource is accessed
+ using this shared access signature.
+ :param str content_encoding:
+ Response header value for Content-Encoding when resource is accessed
+ using this shared access signature.
+ :param str content_language:
+ Response header value for Content-Language when resource is accessed
+ using this shared access signature.
+ :param str content_type:
+ Response header value for Content-Type when resource is accessed
+ using this shared access signature.
+ :return: A Shared Access Signature (sas) token.
+ :rtype: str
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = FileSharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_file(
+ share_name,
+ directory_name,
+ file_name,
+ permission,
+ expiry,
+ start=start,
+ id=id,
+ ip=ip,
+ protocol=protocol,
+ cache_control=cache_control,
+ content_disposition=content_disposition,
+ content_encoding=content_encoding,
+ content_language=content_language,
+ content_type=content_type,
+ )
+
+ def set_file_service_properties(self, hour_metrics=None, minute_metrics=None,
+ cors=None, timeout=None):
+ '''
+ Sets the properties of a storage account's File service, including
+ Azure Storage Analytics. If an element (ex HourMetrics) is left as None, the
+ existing settings on the service for that functionality are preserved.
+
+ :param Metrics hour_metrics:
+ The hour metrics settings provide a summary of request
+ statistics grouped by API in hourly aggregates for files.
+ :param Metrics minute_metrics:
+ The minute metrics settings provide request statistics
+ for each minute for files.
+ :param cors:
+ You can include up to five CorsRule elements in the
+ list. If an empty list is specified, all CORS rules will be deleted,
+ and CORS will be disabled for the service.
+ :type cors: list(:class:`~..common.models.CorsRule`)
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path()
+ request.query = {
+ 'restype': 'service',
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.body = _get_request_body(
+ _convert_service_properties_to_xml(None, hour_metrics, minute_metrics, cors))
+
+ self._perform_request(request)
+
+ def get_file_service_properties(self, timeout=None):
+ '''
+ Gets the properties of a storage account's File service, including
+ Azure Storage Analytics.
+
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: The file service properties.
+ :rtype:
+ :class:`~..common.models.ServiceProperties`
+ '''
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path()
+ request.query = {
+ 'restype': 'service',
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_service_properties)
+
+ def list_shares(self, prefix=None, marker=None, num_results=None,
+ include_metadata=False, timeout=None, include_snapshots=False):
+ '''
+ Returns a generator to list the shares under the specified account.
+ The generator will lazily follow the continuation tokens returned by
+ the service and stop when all shares have been returned or num_results
+ is reached.
+
+ If num_results is specified and the account has more than that number of
+ shares, the generator will have a populated next_marker field once it
+ finishes. This marker can be used to create a new generator if more
+ results are desired.
+
+ :param str prefix:
+ Filters the results to return only shares whose names
+ begin with the specified prefix.
+ :param int num_results:
+ Specifies the maximum number of shares to return.
+ :param bool include_metadata:
+ Specifies that share metadata be returned in the response.
+ :param str marker:
+ An opaque continuation token. This value can be retrieved from the
+ next_marker field of a previous generator object if num_results was
+ specified and that generator has finished enumerating results. If
+ specified, this generator will begin returning results from the point
+ where the previous generator stopped.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param bool include_snapshots:
+ Specifies that share snapshots be returned in the response.
+ '''
+ include = 'snapshots' if include_snapshots else None
+ if include_metadata:
+ if include is not None:
+ include = include + ',metadata'
+ else:
+ include = 'metadata'
+ operation_context = _OperationContext(location_lock=True)
+ kwargs = {'prefix': prefix, 'marker': marker, 'max_results': num_results,
+ 'include': include, 'timeout': timeout, '_context': operation_context}
+ resp = self._list_shares(**kwargs)
+
+ return ListGenerator(resp, self._list_shares, (), kwargs)
+
+ def _list_shares(self, prefix=None, marker=None, max_results=None,
+ include=None, timeout=None, _context=None):
+ '''
+ Returns a list of the shares under the specified account.
+
+ :param str prefix:
+ Filters the results to return only shares whose names
+ begin with the specified prefix.
+ :param str marker:
+ A string value that identifies the portion of the list
+ to be returned with the next list operation. The operation returns
+ a next_marker value within the response body if the list returned was
+ not complete. The marker value may then be used in a subsequent
+ call to request the next set of list items. The marker value is
+ opaque to the client.
+ :param int max_results:
+ Specifies the maximum number of shares to return. A single list
+ request may return up to 1000 shares and potentially a continuation
+ token which should be followed to get additional resutls.
+ :param string include:
+ Include this parameter to specify that either the share's
+ metadata, snapshots or both be returned as part of the response body. set this
+ parameter to string 'metadata' to get share's metadata. set this parameter to 'snapshots'
+ to get all the share snapshots. for both use 'snapshots,metadata'.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path()
+ request.query = {
+ 'comp': 'list',
+ 'prefix': _to_str(prefix),
+ 'marker': _to_str(marker),
+ 'maxresults': _int_to_str(max_results),
+ 'include': _to_str(include),
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_shares, operation_context=_context)
+
+ def create_share(self, share_name, metadata=None, quota=None,
+ fail_on_exist=False, timeout=None):
+ '''
+ Creates a new share under the specified account. If the share
+ with the same name already exists, the operation fails on the
+ service. By default, the exception is swallowed by the client.
+ To expose the exception, specify True for fail_on_exists.
+
+ :param str share_name:
+ Name of share to create.
+ :param metadata:
+ A dict with name_value pairs to associate with the
+ share as metadata. Example:{'Category':'test'}
+ :type metadata: dict(str, str)
+ :param int quota:
+ Specifies the maximum size of the share, in gigabytes. Must be
+ greater than 0, and less than or equal to 5TB (5120).
+ :param bool fail_on_exist:
+ Specify whether to throw an exception when the share exists.
+ False by default.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: True if share is created, False if share already exists.
+ :rtype: bool
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-share-quota': _int_to_str(quota)
+ }
+ _add_metadata_headers(metadata, request)
+
+ if not fail_on_exist:
+ try:
+ self._perform_request(request)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_on_exist(ex)
+ return False
+ else:
+ self._perform_request(request)
+ return True
+
+ def snapshot_share(self, share_name, metadata=None, quota=None, timeout=None):
+ '''
+ Creates a snapshot of an existing share under the specified account.
+
+ :param str share_name:
+ The name of the share to create a snapshot of.
+ :param metadata:
+ A dict with name_value pairs to associate with the
+ share as metadata. Example:{'Category':'test'}
+ :type metadata: a dict of str to str:
+ :param int quota:
+ Specifies the maximum size of the share, in gigabytes. Must be
+ greater than 0, and less than or equal to 5TB (5120).
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: snapshot properties
+ :rtype: azure.storage.file.models.Share
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'comp': 'snapshot',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-share-quota': _int_to_str(quota)
+ }
+ _add_metadata_headers(metadata, request)
+
+ return self._perform_request(request, _parse_snapshot_share, [share_name])
+
+ def get_share_properties(self, share_name, timeout=None, snapshot=None):
+ '''
+ Returns all user-defined metadata and system properties for the
+ specified share. The data returned does not include the shares's
+ list of files or directories.
+
+ :param str share_name:
+ Name of existing share.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return: A Share that exposes properties and metadata.
+ :rtype: :class:`~azure.storage.file.models.Share`
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'timeout': _int_to_str(timeout),
+ 'sharesnapshot': _to_str(snapshot)
+ }
+
+ return self._perform_request(request, _parse_share, [share_name])
+
+ def set_share_properties(self, share_name, quota, timeout=None):
+ '''
+ Sets service-defined properties for the specified share.
+
+ :param str share_name:
+ Name of existing share.
+ :param int quota:
+ Specifies the maximum size of the share, in gigabytes. Must be
+ greater than 0, and less than or equal to 5 TB (5120 GB).
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('quota', quota)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-share-quota': _int_to_str(quota)
+ }
+
+ self._perform_request(request)
+
+ def get_share_metadata(self, share_name, timeout=None, snapshot=None):
+ '''
+ Returns all user-defined metadata for the specified share.
+
+ :param str share_name:
+ Name of existing share.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return:
+ A dictionary representing the share metadata name, value pairs.
+ :rtype: dict(str, str)
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ 'sharesnapshot': _to_str(snapshot),
+ }
+
+ return self._perform_request(request, _parse_metadata)
+
+ def set_share_metadata(self, share_name, metadata=None, timeout=None):
+ '''
+ Sets one or more user-defined name-value pairs for the specified
+ share. Each call to this operation replaces all existing metadata
+ attached to the share. To remove all metadata from the share,
+ call this operation with no metadata dict.
+
+ :param str share_name:
+ Name of existing share.
+ :param metadata:
+ A dict containing name-value pairs to associate with the share as
+ metadata. Example: {'category':'test'}
+ :type metadata: dict(str, str)
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+ _add_metadata_headers(metadata, request)
+
+ self._perform_request(request)
+
+ def get_share_acl(self, share_name, timeout=None):
+ '''
+ Gets the permissions for the specified share.
+
+ :param str share_name:
+ Name of existing share.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: A dictionary of access policies associated with the share.
+ :rtype: dict(str, :class:`~..common.models.AccessPolicy`)
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'comp': 'acl',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_signed_identifiers)
+
+ def set_share_acl(self, share_name, signed_identifiers=None, timeout=None):
+ '''
+ Sets the permissions for the specified share or stored access
+ policies that may be used with Shared Access Signatures.
+
+ :param str share_name:
+ Name of existing share.
+ :param signed_identifiers:
+ A dictionary of access policies to associate with the share. The
+ dictionary may contain up to 5 elements. An empty dictionary
+ will clear the access policies set on the service.
+ :type signed_identifiers: dict(str, :class:`~..common.models.AccessPolicy`)
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_access_policies(signed_identifiers)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'comp': 'acl',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.body = _get_request_body(
+ _convert_signed_identifiers_to_xml(signed_identifiers))
+
+ self._perform_request(request)
+
+ def get_share_stats(self, share_name, timeout=None):
+ '''
+ Gets the approximate size of the data stored on the share,
+ rounded up to the nearest gigabyte.
+
+ Note that this value may not include all recently created
+ or recently resized files.
+
+ :param str share_name:
+ Name of existing share.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: the approximate size of the data stored on the share.
+ :rtype: int
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.query = {
+ 'restype': 'share',
+ 'comp': 'stats',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_share_stats)
+
+ def delete_share(self, share_name, fail_not_exist=False, timeout=None, snapshot=None, delete_snapshots=None):
+ '''
+ Marks the specified share for deletion. If the share
+ does not exist, the operation fails on the service. By
+ default, the exception is swallowed by the client.
+ To expose the exception, specify True for fail_not_exist.
+
+ :param str share_name:
+ Name of share to delete.
+ :param bool fail_not_exist:
+ Specify whether to throw an exception when the share doesn't
+ exist. False by default.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ Specify this argument to delete a specific snapshot only.
+ delete_snapshots must be None if this is specified.
+ :param ~azure.storage.file.models.DeleteSnapshot delete_snapshots:
+ To delete a share that has snapshots, this must be specified as DeleteSnapshot.Include.
+ :return: True if share is deleted, False share doesn't exist.
+ :rtype: bool
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'DELETE'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name)
+ request.headers = {
+ 'x-ms-delete-snapshots': _to_str(delete_snapshots)
+ }
+ request.query = {
+ 'restype': 'share',
+ 'timeout': _int_to_str(timeout),
+ 'sharesnapshot': _to_str(snapshot),
+ }
+
+ if not fail_not_exist:
+ try:
+ self._perform_request(request)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_not_exist(ex)
+ return False
+ else:
+ self._perform_request(request)
+ return True
+
+ def create_directory(self, share_name, directory_name, metadata=None,
+ fail_on_exist=False, timeout=None):
+ '''
+ Creates a new directory under the specified share or parent directory.
+ If the directory with the same name already exists, the operation fails
+ on the service. By default, the exception is swallowed by the client.
+ To expose the exception, specify True for fail_on_exists.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ Name of directory to create, including the path to the parent
+ directory.
+ :param metadata:
+ A dict with name_value pairs to associate with the
+ share as metadata. Example:{'Category':'test'}
+ :type metadata: dict(str, str):
+ :param bool fail_on_exist:
+ specify whether to throw an exception when the directory exists.
+ False by default.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: True if directory is created, False if directory already exists.
+ :rtype: bool
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('directory_name', directory_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name)
+ request.query = {
+ 'restype': 'directory',
+ 'timeout': _int_to_str(timeout),
+ }
+ _add_metadata_headers(metadata, request)
+
+ if not fail_on_exist:
+ try:
+ self._perform_request(request)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_on_exist(ex)
+ return False
+ else:
+ self._perform_request(request)
+ return True
+
+ def delete_directory(self, share_name, directory_name,
+ fail_not_exist=False, timeout=None):
+ '''
+ Deletes the specified empty directory. Note that the directory must
+ be empty before it can be deleted. Attempting to delete directories
+ that are not empty will fail.
+
+ If the directory does not exist, the operation fails on the
+ service. By default, the exception is swallowed by the client.
+ To expose the exception, specify True for fail_not_exist.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ Name of directory to delete, including the path to the parent
+ directory.
+ :param bool fail_not_exist:
+ Specify whether to throw an exception when the directory doesn't
+ exist.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: True if directory is deleted, False otherwise.
+ :rtype: bool
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('directory_name', directory_name)
+ request = HTTPRequest()
+ request.method = 'DELETE'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name)
+ request.query = {
+ 'restype': 'directory',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ if not fail_not_exist:
+ try:
+ self._perform_request(request)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_not_exist(ex)
+ return False
+ else:
+ self._perform_request(request)
+ return True
+
+ def get_directory_properties(self, share_name, directory_name, timeout=None, snapshot=None):
+ '''
+ Returns all user-defined metadata and system properties for the
+ specified directory. The data returned does not include the directory's
+ list of files.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to an existing directory.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: properties for the specified directory within a directory object.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :rtype: :class:`~azure.storage.file.models.Directory`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('directory_name', directory_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name)
+ request.query = {
+ 'restype': 'directory',
+ 'timeout': _int_to_str(timeout),
+ 'sharesnapshot': _to_str(snapshot)
+ }
+
+ return self._perform_request(request, _parse_directory, [directory_name])
+
+ def get_directory_metadata(self, share_name, directory_name, timeout=None, snapshot=None):
+ '''
+ Returns all user-defined metadata for the specified directory.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return:
+ A dictionary representing the directory metadata name, value pairs.
+ :rtype: dict(str, str)
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('directory_name', directory_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name)
+ request.query = {
+ 'restype': 'directory',
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ 'sharesnapshot': _to_str(snapshot)
+ }
+
+ return self._perform_request(request, _parse_metadata)
+
+ def set_directory_metadata(self, share_name, directory_name, metadata=None, timeout=None):
+ '''
+ Sets one or more user-defined name-value pairs for the specified
+ directory. Each call to this operation replaces all existing metadata
+ attached to the directory. To remove all metadata from the directory,
+ call this operation with no metadata dict.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param metadata:
+ A dict containing name-value pairs to associate with the directory
+ as metadata. Example: {'category':'test'}
+ :type metadata: dict(str, str).
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('directory_name', directory_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name)
+ request.query = {
+ 'restype': 'directory',
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+ _add_metadata_headers(metadata, request)
+
+ self._perform_request(request)
+
+ def list_directories_and_files(self, share_name, directory_name=None,
+ num_results=None, marker=None, timeout=None,
+ prefix=None, snapshot=None):
+
+ '''
+ Returns a generator to list the directories and files under the specified share.
+ The generator will lazily follow the continuation tokens returned by
+ the service and stop when all directories and files have been returned or
+ num_results is reached.
+
+ If num_results is specified and the share has more than that number of
+ files and directories, the generator will have a populated next_marker
+ field once it finishes. This marker can be used to create a new generator
+ if more results are desired.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param int num_results:
+ Specifies the maximum number of files to return,
+ including all directory elements. If the request does not specify
+ num_results or specifies a value greater than 5,000, the server will
+ return up to 5,000 items. Setting num_results to a value less than
+ or equal to zero results in error response code 400 (Bad Request).
+ :param str marker:
+ An opaque continuation token. This value can be retrieved from the
+ next_marker field of a previous generator object if num_results was
+ specified and that generator has finished enumerating results. If
+ specified, this generator will begin returning results from the point
+ where the previous generator stopped.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str prefix:
+ List only the files and/or directories with the given prefix.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ '''
+ operation_context = _OperationContext(location_lock=True)
+ args = (share_name, directory_name)
+ kwargs = {'marker': marker, 'max_results': num_results, 'timeout': timeout,
+ '_context': operation_context, 'prefix': prefix, 'snapshot': snapshot}
+
+ resp = self._list_directories_and_files(*args, **kwargs)
+
+ return ListGenerator(resp, self._list_directories_and_files, args, kwargs)
+
+ def _list_directories_and_files(self, share_name, directory_name=None,
+ marker=None, max_results=None, timeout=None,
+ prefix=None, _context=None, snapshot=None):
+ '''
+ Returns a list of the directories and files under the specified share.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str marker:
+ A string value that identifies the portion of the list
+ to be returned with the next list operation. The operation returns
+ a next_marker value within the response body if the list returned was
+ not complete. The marker value may then be used in a subsequent
+ call to request the next set of list items. The marker value is
+ opaque to the client.
+ :param int max_results:
+ Specifies the maximum number of files to return,
+ including all directory elements. If the request does not specify
+ max_results or specifies a value greater than 5,000, the server will
+ return up to 5,000 items. Setting max_results to a value less than
+ or equal to zero results in error response code 400 (Bad Request).
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str prefix:
+ List only the files and/or directories with the given prefix.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ '''
+ _validate_not_none('share_name', share_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name)
+ request.query = {
+ 'restype': 'directory',
+ 'comp': 'list',
+ 'prefix': _to_str(prefix),
+ 'marker': _to_str(marker),
+ 'maxresults': _int_to_str(max_results),
+ 'timeout': _int_to_str(timeout),
+ 'sharesnapshot': _to_str(snapshot)
+ }
+
+ return self._perform_request(request, _convert_xml_to_directories_and_files,
+ operation_context=_context)
+
+ def get_file_properties(self, share_name, directory_name, file_name, timeout=None, snapshot=None):
+ '''
+ Returns all user-defined metadata, standard HTTP properties, and
+ system properties for the file. Returns an instance of :class:`~azure.storage.file.models.File` with
+ :class:`~azure.storage.file.models.FileProperties` and a metadata dict.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return: a file object including properties and metadata.
+ :rtype: :class:`~azure.storage.file.models.File`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ request = HTTPRequest()
+ request.method = 'HEAD'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = { 'timeout': _int_to_str(timeout), 'sharesnapshot': _to_str(snapshot)}
+
+ return self._perform_request(request, _parse_file, [file_name])
+
+ def exists(self, share_name, directory_name=None, file_name=None, timeout=None, snapshot=None):
+ '''
+ Returns a boolean indicating whether the share exists if only share name is
+ given. If directory_name is specificed a boolean will be returned indicating
+ if the directory exists. If file_name is specified as well, a boolean will be
+ returned indicating if the file exists.
+
+ :param str share_name:
+ Name of a share.
+ :param str directory_name:
+ The path to a directory.
+ :param str file_name:
+ Name of a file.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return: A boolean indicating whether the resource exists.
+ :rtype: bool
+ '''
+ _validate_not_none('share_name', share_name)
+ try:
+ if file_name is not None:
+ self.get_file_properties(share_name, directory_name, file_name, timeout=timeout, snapshot=snapshot)
+ elif directory_name is not None:
+ self.get_directory_properties(share_name, directory_name, timeout=timeout, snapshot=snapshot)
+ else:
+ self.get_share_properties(share_name, timeout=timeout, snapshot=snapshot)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_not_exist(ex)
+ return False
+
+ def resize_file(self, share_name, directory_name,
+ file_name, content_length, timeout=None):
+ '''
+ Resizes a file to the specified size. If the specified byte
+ value is less than the current size of the file, then all
+ ranges above the specified byte value are cleared.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param int content_length:
+ The length to resize the file to.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('content_length', content_length)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-content-length': _to_str(content_length)
+ }
+
+ self._perform_request(request)
+
+ def set_file_properties(self, share_name, directory_name, file_name,
+ content_settings, timeout=None):
+ '''
+ Sets system properties on the file. If one property is set for the
+ content_settings, all properties will be overriden.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param ~azure.storage.file.models.ContentSettings content_settings:
+ ContentSettings object used to set the file properties.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('content_settings', content_settings)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = content_settings._to_headers()
+
+ self._perform_request(request)
+
+ def get_file_metadata(self, share_name, directory_name, file_name, timeout=None, snapshot=None):
+ '''
+ Returns all user-defined metadata for the specified file.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return:
+ A dictionary representing the file metadata name, value pairs.
+ :rtype: dict(str, str)
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ 'sharesnapshot': _to_str(snapshot),
+ }
+
+ return self._perform_request(request, _parse_metadata)
+
+ def set_file_metadata(self, share_name, directory_name,
+ file_name, metadata=None, timeout=None):
+ '''
+ Sets user-defined metadata for the specified file as one or more
+ name-value pairs.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param metadata:
+ Dict containing name and value pairs. Each call to this operation
+ replaces all existing metadata attached to the file. To remove all
+ metadata from the file, call this operation with no metadata headers.
+ :type metadata: dict(str, str)
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+ _add_metadata_headers(metadata, request)
+
+ self._perform_request(request)
+
+ def copy_file(self, share_name, directory_name, file_name, copy_source,
+ metadata=None, timeout=None):
+ '''
+ Copies a file asynchronously. This operation returns a copy operation
+ properties object, including a copy ID you can use to check or abort the
+ copy operation. The File service copies files on a best-effort basis.
+
+ If the destination file exists, it will be overwritten. The destination
+ file cannot be modified while the copy operation is in progress.
+
+ :param str share_name:
+ Name of the destination share. The share must exist.
+ :param str directory_name:
+ Name of the destination directory. The directory must exist.
+ :param str file_name:
+ Name of the destination file. If the destination file exists, it will
+ be overwritten. Otherwise, it will be created.
+ :param str copy_source:
+ A URL of up to 2 KB in length that specifies an Azure file or blob.
+ The value should be URL-encoded as it would appear in a request URI.
+ If the source is in another account, the source must either be public
+ or must be authenticated via a shared access signature. If the source
+ is public, no authentication is required.
+ Examples:
+ https://myaccount.file.core.windows.net/myshare/mydir/myfile
+ https://otheraccount.file.core.windows.net/myshare/mydir/myfile?sastoken
+ :param metadata:
+ Name-value pairs associated with the file as metadata. If no name-value
+ pairs are specified, the operation will copy the metadata from the
+ source blob or file to the destination file. If one or more name-value
+ pairs are specified, the destination file is created with the specified
+ metadata, and the metadata is not copied from the source blob or file.
+ :type metadata: dict(str, str).
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: Copy operation properties such as status, source, and ID.
+ :rtype: :class:`~azure.storage.file.models.CopyProperties`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('copy_source', copy_source)
+
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {'timeout': _int_to_str(timeout)}
+ request.headers = {
+ 'x-ms-copy-source': _to_str(copy_source),
+ }
+ _add_metadata_headers(metadata, request)
+
+ return self._perform_request(request, _parse_properties, [FileProperties]).copy
+
+ def abort_copy_file(self, share_name, directory_name, file_name, copy_id, timeout=None):
+ '''
+ Aborts a pending copy_file operation, and leaves a destination file
+ with zero length and full metadata.
+
+ :param str share_name:
+ Name of destination share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of destination file.
+ :param str copy_id:
+ Copy identifier provided in the copy.id of the original
+ copy_file operation.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('copy_id', copy_id)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {
+ 'comp': 'copy',
+ 'copyid': _to_str(copy_id),
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-copy-action': 'abort',
+ }
+
+ self._perform_request(request)
+
+ def delete_file(self, share_name, directory_name, file_name, timeout=None):
+ '''
+ Marks the specified file for deletion. The file is later
+ deleted during garbage collection.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ request = HTTPRequest()
+ request.method = 'DELETE'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {'timeout': _int_to_str(timeout)}
+
+ self._perform_request(request)
+
+ def create_file(self, share_name, directory_name, file_name,
+ content_length, content_settings=None, metadata=None,
+ timeout=None):
+ '''
+ Creates a new file.
+
+ See create_file_from_* for high level functions that handle the
+ creation and upload of large files with automatic chunking and
+ progress notifications.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of file to create or update.
+ :param int content_length:
+ Length of the file in bytes.
+ :param ~azure.storage.file.models.ContentSettings content_settings:
+ ContentSettings object used to set file properties.
+ :param metadata:
+ Name-value pairs associated with the file as metadata.
+ :type metadata: dict(str, str)
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('content_length', content_length)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {'timeout': _int_to_str(timeout)}
+ request.headers = {
+ 'x-ms-content-length': _to_str(content_length),
+ 'x-ms-type': 'file'
+ }
+ _add_metadata_headers(metadata, request)
+ if content_settings is not None:
+ request.headers.update(content_settings._to_headers())
+
+ self._perform_request(request)
+
+ def create_file_from_path(self, share_name, directory_name, file_name,
+ local_file_path, content_settings=None,
+ metadata=None, validate_content=False, progress_callback=None,
+ max_connections=2, timeout=None):
+ '''
+ Creates a new azure file from a local file path, or updates the content of an
+ existing file, with automatic chunking and progress notifications.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of file to create or update.
+ :param str local_file_path:
+ Path of the local file to upload as the file content.
+ :param ~azure.storage.file.models.ContentSettings content_settings:
+ ContentSettings object used for setting file properties.
+ :param metadata:
+ Name-value pairs associated with the file as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each range of the file. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ file.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far and total is the
+ size of the file, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('local_file_path', local_file_path)
+
+ count = path.getsize(local_file_path)
+ with open(local_file_path, 'rb') as stream:
+ self.create_file_from_stream(
+ share_name, directory_name, file_name, stream,
+ count, content_settings, metadata, validate_content, progress_callback,
+ max_connections, timeout)
+
+ def create_file_from_text(self, share_name, directory_name, file_name,
+ text, encoding='utf-8', content_settings=None,
+ metadata=None, validate_content=False, timeout=None):
+ '''
+ Creates a new file from str/unicode, or updates the content of an
+ existing file, with automatic chunking and progress notifications.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of file to create or update.
+ :param str text:
+ Text to upload to the file.
+ :param str encoding:
+ Python encoding to use to convert the text to bytes.
+ :param ~azure.storage.file.models.ContentSettings content_settings:
+ ContentSettings object used to set file properties.
+ :param metadata:
+ Name-value pairs associated with the file as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each range of the file. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ file.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('text', text)
+
+ if not isinstance(text, bytes):
+ _validate_not_none('encoding', encoding)
+ text = text.encode(encoding)
+
+ self.create_file_from_bytes(
+ share_name, directory_name, file_name, text, count=len(text),
+ content_settings=content_settings, metadata=metadata,
+ validate_content=validate_content, timeout=timeout)
+
+ def create_file_from_bytes(
+ self, share_name, directory_name, file_name, file,
+ index=0, count=None, content_settings=None, metadata=None,
+ validate_content=False, progress_callback=None, max_connections=2,
+ timeout=None):
+ '''
+ Creates a new file from an array of bytes, or updates the content
+ of an existing file, with automatic chunking and progress
+ notifications.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of file to create or update.
+ :param str file:
+ Content of file as an array of bytes.
+ :param int index:
+ Start index in the array of bytes.
+ :param int count:
+ Number of bytes to upload. Set to None or negative value to upload
+ all bytes starting from index.
+ :param ~azure.storage.file.models.ContentSettings content_settings:
+ ContentSettings object used to set file properties.
+ :param metadata:
+ Name-value pairs associated with the file as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each range of the file. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ file.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far and total is the
+ size of the file, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('file', file)
+ _validate_type_bytes('file', file)
+
+ if index < 0:
+ raise TypeError(_ERROR_VALUE_NEGATIVE.format('index'))
+
+ if count is None or count < 0:
+ count = len(file) - index
+
+ stream = BytesIO(file)
+ stream.seek(index)
+
+ self.create_file_from_stream(
+ share_name, directory_name, file_name, stream, count,
+ content_settings, metadata, validate_content, progress_callback,
+ max_connections, timeout)
+
+ def create_file_from_stream(
+ self, share_name, directory_name, file_name, stream, count,
+ content_settings=None, metadata=None, validate_content=False,
+ progress_callback=None, max_connections=2, timeout=None):
+ '''
+ Creates a new file from a file/stream, or updates the content of an
+ existing file, with automatic chunking and progress notifications.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of file to create or update.
+ :param io.IOBase stream:
+ Opened file/stream to upload as the file content.
+ :param int count:
+ Number of bytes to read from the stream. This is required, a
+ file cannot be created if the count is unknown.
+ :param ~azure.storage.file.models.ContentSettings content_settings:
+ ContentSettings object used to set file properties.
+ :param metadata:
+ Name-value pairs associated with the file as metadata.
+ :type metadata: dict(str, str)
+ :param bool validate_content:
+ If true, calculates an MD5 hash for each range of the file. The storage
+ service checks the hash of the content that has arrived with the hash
+ that was sent. This is primarily valuable for detecting bitflips on
+ the wire if using http instead of https as https (the default) will
+ already validate. Note that this MD5 hash is not stored with the
+ file.
+ :param progress_callback:
+ Callback for progress with signature function(current, total) where
+ current is the number of bytes transfered so far and total is the
+ size of the file, or None if the total size is unknown.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ Maximum number of parallel connections to use. Note that parallel upload
+ requires the stream to be seekable.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('stream', stream)
+ _validate_not_none('count', count)
+
+ if count < 0:
+ raise TypeError(_ERROR_VALUE_NEGATIVE.format('count'))
+
+ self.create_file(
+ share_name,
+ directory_name,
+ file_name,
+ count,
+ content_settings,
+ metadata,
+ timeout
+ )
+
+ _upload_file_chunks(
+ self,
+ share_name,
+ directory_name,
+ file_name,
+ count,
+ self.MAX_RANGE_SIZE,
+ stream,
+ max_connections,
+ progress_callback,
+ validate_content,
+ timeout
+ )
+
+ def _get_file(self, share_name, directory_name, file_name,
+ start_range=None, end_range=None, validate_content=False,
+ timeout=None, _context=None, snapshot=None):
+ '''
+ Downloads a file's content, metadata, and properties. You can specify a
+ range if you don't need to download the file in its entirety. If no range
+ is specified, the full file will be downloaded.
+
+ See get_file_to_* for high level functions that handle the download
+ of large files with automatic chunking and progress notifications.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the file.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int end_range:
+ End of byte range to use for downloading a section of the file.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param bool validate_content:
+ When this is set to True and specified together with the Range header,
+ the service returns the MD5 hash for the range, as long as the range
+ is less than or equal to 4 MB in size.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return: A File with content, properties, and metadata.
+ :rtype: :class:`~azure.storage.file.models.File`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = { 'timeout': _int_to_str(timeout), 'sharesnapshot': _to_str(snapshot)}
+ _validate_and_format_range_headers(
+ request,
+ start_range,
+ end_range,
+ start_range_required=False,
+ end_range_required=False,
+ check_content_md5=validate_content)
+
+ return self._perform_request(request, _parse_file,
+ [file_name, validate_content],
+ operation_context=_context)
+
+ def get_file_to_path(self, share_name, directory_name, file_name, file_path,
+ open_mode='wb', start_range=None, end_range=None,
+ validate_content=False, progress_callback=None,
+ max_connections=2, timeout=None, snapshot=None):
+ '''
+ Downloads a file to a file path, with automatic chunking and progress
+ notifications. Returns an instance of File with properties and metadata.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param str file_path:
+ Path of file to write to.
+ :param str open_mode:
+ Mode to use when opening the file. Note that specifying append only
+ open_mode prevents parallel download. So, max_connections must be set
+ to 1 if this open_mode is used.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the file.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int end_range:
+ End of byte range to use for downloading a section of the file.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param bool validate_content:
+ If set to true, validates an MD5 hash for each retrieved portion of
+ the file. This is primarily valuable for detecting bitflips on the wire
+ if using http instead of https as https (the default) will already
+ validate. Note that the service will only return transactional MD5s
+ for chunks 4MB or less so the first get request will be of size
+ self.MAX_CHUNK_GET_SIZE instead of self.MAX_SINGLE_GET_SIZE. If
+ self.MAX_CHUNK_GET_SIZE was set to greater than 4MB an error will be
+ thrown. As computing the MD5 takes processing time and more requests
+ will need to be done due to the reduced chunk size there may be some
+ increase in latency.
+ :param progress_callback:
+ Callback for progress with signature function(current, total)
+ where current is the number of bytes transfered so far, and total is
+ the size of the file if known.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ If set to 2 or greater, an initial get will be done for the first
+ self.MAX_SINGLE_GET_SIZE bytes of the file. If this is the entire file,
+ the method returns at this point. If it is not, it will download the
+ remaining data parallel using the number of threads equal to
+ max_connections. Each chunk will be of size self.MAX_CHUNK_GET_SIZE.
+ If set to 1, a single large get request will be done. This is not
+ generally recommended but available if very few threads should be
+ used, network requests are very expensive, or a non-seekable stream
+ prevents parallel download. This may also be valuable if the file is
+ being concurrently modified to enforce atomicity or if many files are
+ expected to be empty as an extra request is required for empty files
+ if max_connections is greater than 1.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return: A File with properties and metadata.
+ :rtype: :class:`~azure.storage.file.models.File`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('file_path', file_path)
+ _validate_not_none('open_mode', open_mode)
+
+ if max_connections > 1 and 'a' in open_mode:
+ raise ValueError(_ERROR_PARALLEL_NOT_SEEKABLE)
+
+ with open(file_path, open_mode) as stream:
+ file = self.get_file_to_stream(
+ share_name, directory_name, file_name, stream,
+ start_range, end_range, validate_content,
+ progress_callback, max_connections, timeout, snapshot)
+
+ return file
+
+ def get_file_to_stream(
+ self, share_name, directory_name, file_name, stream,
+ start_range=None, end_range=None, validate_content=False,
+ progress_callback=None, max_connections=2, timeout=None, snapshot=None):
+ '''
+ Downloads a file to a stream, with automatic chunking and progress
+ notifications. Returns an instance of :class:`~azure.storage.file.models.File` with properties
+ and metadata.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param io.IOBase stream:
+ Opened file/stream to write to.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the file.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int end_range:
+ End of byte range to use for downloading a section of the file.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param bool validate_content:
+ If set to true, validates an MD5 hash for each retrieved portion of
+ the file. This is primarily valuable for detecting bitflips on the wire
+ if using http instead of https as https (the default) will already
+ validate. Note that the service will only return transactional MD5s
+ for chunks 4MB or less so the first get request will be of size
+ self.MAX_CHUNK_GET_SIZE instead of self.MAX_SINGLE_GET_SIZE. If
+ self.MAX_CHUNK_GET_SIZE was set to greater than 4MB an error will be
+ thrown. As computing the MD5 takes processing time and more requests
+ will need to be done due to the reduced chunk size there may be some
+ increase in latency.
+ :param progress_callback:
+ Callback for progress with signature function(current, total)
+ where current is the number of bytes transfered so far, and total is
+ the size of the file if known.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ If set to 2 or greater, an initial get will be done for the first
+ self.MAX_SINGLE_GET_SIZE bytes of the file. If this is the entire file,
+ the method returns at this point. If it is not, it will download the
+ remaining data parallel using the number of threads equal to
+ max_connections. Each chunk will be of size self.MAX_CHUNK_GET_SIZE.
+ If set to 1, a single large get request will be done. This is not
+ generally recommended but available if very few threads should be
+ used, network requests are very expensive, or a non-seekable stream
+ prevents parallel download. This may also be valuable if the file is
+ being concurrently modified to enforce atomicity or if many files are
+ expected to be empty as an extra request is required for empty files
+ if max_connections is greater than 1.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return: A File with properties and metadata.
+ :rtype: :class:`~azure.storage.file.models.File`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('stream', stream)
+
+ # If the user explicitly sets max_connections to 1, do a single shot download
+ if max_connections == 1:
+ file = self._get_file(share_name,
+ directory_name,
+ file_name,
+ start_range=start_range,
+ end_range=end_range,
+ validate_content=validate_content,
+ timeout=timeout,
+ snapshot=snapshot)
+
+ # Set the download size
+ download_size = file.properties.content_length
+
+ # If max_connections is greater than 1, do the first get to establish the
+ # size of the file and get the first segment of data
+ else:
+ if sys.version_info >= (3,) and not stream.seekable():
+ raise ValueError(_ERROR_PARALLEL_NOT_SEEKABLE)
+
+ # The service only provides transactional MD5s for chunks under 4MB.
+ # If validate_content is on, get only self.MAX_CHUNK_GET_SIZE for the first
+ # chunk so a transactional MD5 can be retrieved.
+ first_get_size = self.MAX_SINGLE_GET_SIZE if not validate_content else self.MAX_CHUNK_GET_SIZE
+
+ initial_request_start = start_range if start_range is not None else 0
+
+ if end_range is not None and end_range - start_range < first_get_size:
+ initial_request_end = end_range
+ else:
+ initial_request_end = initial_request_start + first_get_size - 1
+
+ # Send a context object to make sure we always retry to the initial location
+ operation_context = _OperationContext(location_lock=True)
+ try:
+ file = self._get_file(share_name,
+ directory_name,
+ file_name,
+ start_range=initial_request_start,
+ end_range=initial_request_end,
+ validate_content=validate_content,
+ timeout=timeout,
+ _context=operation_context,
+ snapshot=snapshot)
+
+ # Parse the total file size and adjust the download size if ranges
+ # were specified
+ file_size = _parse_length_from_content_range(file.properties.content_range)
+ if end_range is not None:
+ # Use the end_range unless it is over the end of the file
+ download_size = min(file_size, end_range - start_range + 1)
+ elif start_range is not None:
+ download_size = file_size - start_range
+ else:
+ download_size = file_size
+ except AzureHttpError as ex:
+ if start_range is None and ex.status_code == 416:
+ # Get range will fail on an empty file. If the user did not
+ # request a range, do a regular get request in order to get
+ # any properties.
+ file = self._get_file(share_name,
+ directory_name,
+ file_name,
+ validate_content=validate_content,
+ timeout=timeout,
+ _context=operation_context,
+ snapshot=snapshot)
+
+ # Set the download size to empty
+ download_size = 0
+ else:
+ raise ex
+
+ # Mark the first progress chunk. If the file is small or this is a single
+ # shot download, this is the only call
+ if progress_callback:
+ progress_callback(file.properties.content_length, download_size)
+
+ # Write the content to the user stream
+ # Clear file content since output has been written to user stream
+ if file.content is not None:
+ stream.write(file.content)
+ file.content = None
+
+ # If the file is small or single shot download was used, the download is
+ # complete at this point. If file size is large, use parallel download.
+ if file.properties.content_length != download_size:
+ # At this point would like to lock on something like the etag so that
+ # if the file is modified, we dont get a corrupted download. However,
+ # this feature is not yet available on the file service.
+
+ end_file = file_size
+ if end_range is not None:
+ # Use the end_range unless it is over the end of the file
+ end_file = min(file_size, end_range + 1)
+
+ _download_file_chunks(
+ self,
+ share_name,
+ directory_name,
+ file_name,
+ download_size,
+ self.MAX_CHUNK_GET_SIZE,
+ first_get_size,
+ initial_request_end + 1, # start where the first download ended
+ end_file,
+ stream,
+ max_connections,
+ progress_callback,
+ validate_content,
+ timeout,
+ operation_context,
+ snapshot
+ )
+
+ # Set the content length to the download size instead of the size of
+ # the last range
+ file.properties.content_length = download_size
+
+ # Overwrite the content range to the user requested range
+ file.properties.content_range = 'bytes {0}-{1}/{2}'.format(start_range, end_range, file_size)
+
+ # Overwrite the content MD5 as it is the MD5 for the last range instead
+ # of the stored MD5
+ # TODO: Set to the stored MD5 when the service returns this
+ file.properties.content_md5 = None
+
+ return file
+
+ def get_file_to_bytes(self, share_name, directory_name, file_name,
+ start_range=None, end_range=None, validate_content=False,
+ progress_callback=None, max_connections=2, timeout=None, snapshot=None):
+ '''
+ Downloads a file as an array of bytes, with automatic chunking and
+ progress notifications. Returns an instance of :class:`~azure.storage.file.models.File` with
+ properties, metadata, and content.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the file.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int end_range:
+ End of byte range to use for downloading a section of the file.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param bool validate_content:
+ If set to true, validates an MD5 hash for each retrieved portion of
+ the file. This is primarily valuable for detecting bitflips on the wire
+ if using http instead of https as https (the default) will already
+ validate. Note that the service will only return transactional MD5s
+ for chunks 4MB or less so the first get request will be of size
+ self.MAX_CHUNK_GET_SIZE instead of self.MAX_SINGLE_GET_SIZE. If
+ self.MAX_CHUNK_GET_SIZE was set to greater than 4MB an error will be
+ thrown. As computing the MD5 takes processing time and more requests
+ will need to be done due to the reduced chunk size there may be some
+ increase in latency.
+ :param progress_callback:
+ Callback for progress with signature function(current, total)
+ where current is the number of bytes transfered so far, and total is
+ the size of the file if known.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ If set to 2 or greater, an initial get will be done for the first
+ self.MAX_SINGLE_GET_SIZE bytes of the file. If this is the entire file,
+ the method returns at this point. If it is not, it will download the
+ remaining data parallel using the number of threads equal to
+ max_connections. Each chunk will be of size self.MAX_CHUNK_GET_SIZE.
+ If set to 1, a single large get request will be done. This is not
+ generally recommended but available if very few threads should be
+ used, network requests are very expensive, or a non-seekable stream
+ prevents parallel download. This may also be valuable if the file is
+ being concurrently modified to enforce atomicity or if many files are
+ expected to be empty as an extra request is required for empty files
+ if max_connections is greater than 1.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return: A File with properties, content, and metadata.
+ :rtype: :class:`~azure.storage.file.models.File`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+
+ stream = BytesIO()
+ file = self.get_file_to_stream(
+ share_name,
+ directory_name,
+ file_name,
+ stream,
+ start_range,
+ end_range,
+ validate_content,
+ progress_callback,
+ max_connections,
+ timeout,
+ snapshot)
+
+ file.content = stream.getvalue()
+ return file
+
+ def get_file_to_text(
+ self, share_name, directory_name, file_name, encoding='utf-8',
+ start_range=None, end_range=None, validate_content=False,
+ progress_callback=None, max_connections=2, timeout=None, snapshot=None):
+ '''
+ Downloads a file as unicode text, with automatic chunking and progress
+ notifications. Returns an instance of :class:`~azure.storage.file.models.File` with properties,
+ metadata, and content.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param str encoding:
+ Python encoding to use when decoding the file data.
+ :param int start_range:
+ Start of byte range to use for downloading a section of the file.
+ If no end_range is given, all bytes after the start_range will be downloaded.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int end_range:
+ End of byte range to use for downloading a section of the file.
+ If end_range is given, start_range must be provided.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param bool validate_content:
+ If set to true, validates an MD5 hash for each retrieved portion of
+ the file. This is primarily valuable for detecting bitflips on the wire
+ if using http instead of https as https (the default) will already
+ validate. Note that the service will only return transactional MD5s
+ for chunks 4MB or less so the first get request will be of size
+ self.MAX_CHUNK_GET_SIZE instead of self.MAX_SINGLE_GET_SIZE. If
+ self.MAX_CHUNK_GET_SIZE was set to greater than 4MB an error will be
+ thrown. As computing the MD5 takes processing time and more requests
+ will need to be done due to the reduced chunk size there may be some
+ increase in latency.
+ :param progress_callback:
+ Callback for progress with signature function(current, total)
+ where current is the number of bytes transfered so far, and total is
+ the size of the file if known.
+ :type progress_callback: func(current, total)
+ :param int max_connections:
+ If set to 2 or greater, an initial get will be done for the first
+ self.MAX_SINGLE_GET_SIZE bytes of the file. If this is the entire file,
+ the method returns at this point. If it is not, it will download the
+ remaining data parallel using the number of threads equal to
+ max_connections. Each chunk will be of size self.MAX_CHUNK_GET_SIZE.
+ If set to 1, a single large get request will be done. This is not
+ generally recommended but available if very few threads should be
+ used, network requests are very expensive, or a non-seekable stream
+ prevents parallel download. This may also be valuable if the file is
+ being concurrently modified to enforce atomicity or if many files are
+ expected to be empty as an extra request is required for empty files
+ if max_connections is greater than 1.
+ :param int timeout:
+ The timeout parameter is expressed in seconds. This method may make
+ multiple calls to the Azure service and the timeout will apply to
+ each call individually.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :return: A File with properties, content, and metadata.
+ :rtype: :class:`~azure.storage.file.models.File`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('encoding', encoding)
+
+ file = self.get_file_to_bytes(
+ share_name,
+ directory_name,
+ file_name,
+ start_range,
+ end_range,
+ validate_content,
+ progress_callback,
+ max_connections,
+ timeout,
+ snapshot)
+
+ file.content = file.content.decode(encoding)
+ return file
+
+ def update_range(self, share_name, directory_name, file_name, data,
+ start_range, end_range, validate_content=False, timeout=None):
+ '''
+ Writes the bytes specified by the request body into the specified range.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param bytes data:
+ Content of the range.
+ :param int start_range:
+ Start of byte range to use for updating a section of the file.
+ The range can be up to 4 MB in size.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int end_range:
+ End of byte range to use for updating a section of the file.
+ The range can be up to 4 MB in size.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param bool validate_content:
+ If true, calculates an MD5 hash of the page content. The storage
+ service checks the hash of the content that has arrived
+ with the hash that was sent. This is primarily valuable for detecting
+ bitflips on the wire if using http instead of https as https (the default)
+ will already validate. Note that this MD5 hash is not stored with the
+ file.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ _validate_not_none('data', data)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {
+ 'comp': 'range',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'x-ms-write': 'update',
+ }
+ _validate_and_format_range_headers(
+ request, start_range, end_range)
+ request.body = _get_data_bytes_only('data', data)
+
+ if validate_content:
+ computed_md5 = _get_content_md5(request.body)
+ request.headers['Content-MD5'] = _to_str(computed_md5)
+
+ self._perform_request(request)
+
+ def clear_range(self, share_name, directory_name, file_name, start_range,
+ end_range, timeout=None):
+ '''
+ Clears the specified range and releases the space used in storage for
+ that range.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param int start_range:
+ Start of byte range to use for clearing a section of the file.
+ The range can be up to 4 MB in size.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int end_range:
+ End of byte range to use for clearing a section of the file.
+ The range can be up to 4 MB in size.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {
+ 'comp': 'range',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.headers = {
+ 'Content-Length': '0',
+ 'x-ms-write': 'clear',
+ }
+ _validate_and_format_range_headers(
+ request, start_range, end_range)
+
+ self._perform_request(request)
+
+ def list_ranges(self, share_name, directory_name, file_name,
+ start_range=None, end_range=None, timeout=None, snapshot=None):
+ '''
+ Retrieves the valid ranges for a file.
+
+ :param str share_name:
+ Name of existing share.
+ :param str directory_name:
+ The path to the directory.
+ :param str file_name:
+ Name of existing file.
+ :param int start_range:
+ Specifies the start offset of bytes over which to list ranges.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int end_range:
+ Specifies the end offset of bytes over which to list ranges.
+ The start_range and end_range params are inclusive.
+ Ex: start_range=0, end_range=511 will download first 512 bytes of file.
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :param str snapshot:
+ A string that represents the snapshot version, if applicable.
+ :returns: a list of valid ranges
+ :rtype: a list of :class:`~azure.storage.file.models.FileRange`
+ '''
+ _validate_not_none('share_name', share_name)
+ _validate_not_none('file_name', file_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(share_name, directory_name, file_name)
+ request.query = {
+ 'comp': 'rangelist',
+ 'timeout': _int_to_str(timeout),
+ 'sharesnapshot': _to_str(snapshot),
+ }
+ if start_range is not None:
+ _validate_and_format_range_headers(
+ request,
+ start_range,
+ end_range,
+ start_range_required=False,
+ end_range_required=False)
+
+ return self._perform_request(request, _convert_xml_to_ranges)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/models.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/models.py
new file mode 100644
index 00000000000..08113710226
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/models.py
@@ -0,0 +1,407 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from ..common._common_conversion import _to_str
+
+
+class Share(object):
+ '''
+ File share class.
+
+ :ivar str name:
+ The name of the share.
+ :ivar ShareProperties properties:
+ System properties for the share.
+ :ivar metadata:
+ A dict containing name-value pairs associated with the share as metadata.
+ This var is set to None unless the include=metadata param was included
+ for the list shares operation. If this parameter was specified but the
+ share has no metadata, metadata will be set to an empty dictionary.
+ :vartype metadata: dict(str, str)
+ :ivar str snapshot:
+ A DateTime value that uniquely identifies the snapshot. The value of
+ this header indicates the snapshot version, and may be used in
+ subsequent requests to access the snapshot.
+ '''
+
+ def __init__(self, name=None, props=None, metadata=None, snapshot=None):
+ self.name = name
+ self.properties = props or ShareProperties()
+ self.metadata = metadata
+ self.snapshot = snapshot
+
+
+class ShareProperties(object):
+ '''
+ File share's properties class.
+
+ :ivar datetime last_modified:
+ A datetime object representing the last time the share was modified.
+ :ivar str etag:
+ The ETag contains a value that you can use to perform operations
+ conditionally.
+ :ivar int quote:
+ Returns the current share quota in GB.
+ '''
+
+ def __init__(self):
+ self.last_modified = None
+ self.etag = None
+ self.quota = None
+
+
+class Directory(object):
+ '''
+ Directory class.
+
+ :ivar str name:
+ The name of the directory.
+ :ivar DirectoryProperties properties:
+ System properties for the directory.
+ :ivar metadata:
+ A dict containing name-value pairs associated with the directory as metadata.
+ This var is set to None unless the include=metadata param was included
+ for the list directory operation. If this parameter was specified but the
+ directory has no metadata, metadata will be set to an empty dictionary.
+ :vartype metadata: dict(str, str)
+ '''
+
+ def __init__(self, name=None, props=None, metadata=None):
+ self.name = name
+ self.properties = props or DirectoryProperties()
+ self.metadata = metadata
+
+
+class DirectoryProperties(object):
+ '''
+ File directory's properties class.
+
+ :ivar datetime last_modified:
+ A datetime object representing the last time the directory was modified.
+ :ivar str etag:
+ The ETag contains a value that you can use to perform operations
+ conditionally.
+ :ivar bool server_encrypted:
+ Set to true if the directory metadata is encrypted on the server.
+ '''
+
+ def __init__(self):
+ self.last_modified = None
+ self.etag = None
+ self.server_encrypted = None
+
+
+class File(object):
+ '''
+ File class.
+
+ :ivar str name:
+ The name of the file.
+ :ivar content:
+ File content.
+ :vartype content: str or bytes
+ :ivar FileProperties properties:
+ System properties for the file.
+ :ivar metadata:
+ A dict containing name-value pairs associated with the file as metadata.
+ This var is set to None unless the include=metadata param was included
+ for the list file operation. If this parameter was specified but the
+ file has no metadata, metadata will be set to an empty dictionary.
+ :vartype metadata: dict(str, str)
+ '''
+
+ def __init__(self, name=None, content=None, props=None, metadata=None):
+ self.name = name
+ self.content = content
+ self.properties = props or FileProperties()
+ self.metadata = metadata
+
+
+class FileProperties(object):
+ '''
+ File Properties.
+
+ :ivar datetime last_modified:
+ A datetime object representing the last time the file was modified.
+ :ivar str etag:
+ The ETag contains a value that you can use to perform operations
+ conditionally.
+ :ivar int content_length:
+ The length of the content returned. If the entire blob was requested,
+ the length of blob in bytes. If a subset of the blob was requested, the
+ length of the returned subset.
+ :ivar str content_range:
+ Indicates the range of bytes returned in the event that the client
+ requested a subset of the blob.
+ :ivar ~azure.storage.file.models.ContentSettings content_settings:
+ Stores all the content settings for the file.
+ :ivar ~azure.storage.file.models.CopyProperties copy:
+ Stores all the copy properties for the file.
+ ivar bool server_encrypted:
+ Set to true if the file data and application metadata are completely encrypted.
+ '''
+
+ def __init__(self):
+ self.last_modified = None
+ self.etag = None
+ self.content_length = None
+ self.content_range = None
+ self.content_settings = ContentSettings()
+ self.copy = CopyProperties()
+ self.server_encrypted = None
+
+
+class ContentSettings(object):
+ '''
+ Used to store the content settings of a file.
+
+ :ivar str content_type:
+ The content type specified for the file. If no content type was
+ specified, the default content type is application/octet-stream.
+ :ivar str content_encoding:
+ If content_encoding has previously been set
+ for the file, that value is stored.
+ :ivar str content_language:
+ If content_language has previously been set
+ for the file, that value is stored.
+ :ivar str content_disposition:
+ content_disposition conveys additional information about how to
+ process the response payload, and also can be used to attach
+ additional metadata. If content_disposition has previously been set
+ for the file, that value is stored.
+ :ivar str cache_control:
+ If cache_control has previously been set for
+ the file, that value is stored.
+ :ivar str content_md5:
+ If the content_md5 has been set for the file, this response
+ header is stored so that the client can check for message content
+ integrity.
+ '''
+
+ def __init__(
+ self, content_type=None, content_encoding=None,
+ content_language=None, content_disposition=None,
+ cache_control=None, content_md5=None):
+ self.content_type = content_type
+ self.content_encoding = content_encoding
+ self.content_language = content_language
+ self.content_disposition = content_disposition
+ self.cache_control = cache_control
+ self.content_md5 = content_md5
+
+ def _to_headers(self):
+ return {
+ 'x-ms-cache-control': _to_str(self.cache_control),
+ 'x-ms-content-type': _to_str(self.content_type),
+ 'x-ms-content-disposition': _to_str(self.content_disposition),
+ 'x-ms-content-md5': _to_str(self.content_md5),
+ 'x-ms-content-encoding': _to_str(self.content_encoding),
+ 'x-ms-content-language': _to_str(self.content_language),
+ }
+
+
+class CopyProperties(object):
+ '''
+ File Copy Properties.
+
+ :ivar str id:
+ String identifier for the last attempted Copy File operation where this file
+ was the destination file. This header does not appear if this file has never
+ been the destination in a Copy File operation, or if this file has been
+ modified after a concluded Copy File operation using Set File Properties or
+ Put File.
+ :ivar str source:
+ URL up to 2 KB in length that specifies the source file used in the last attempted
+ Copy File operation where this file was the destination file. This header does not
+ appear if this file has never been the destination in a Copy File operation, or if
+ this file has been modified after a concluded Copy File operation using
+ Set File Properties or Put File.
+ :ivar str status:
+ State of the copy operation identified by Copy ID, with these values:
+ success:
+ Copy completed successfully.
+ pending:
+ Copy is in progress. Check copy_status_description if intermittent,
+ non-fatal errors impede copy progress but don't cause failure.
+ aborted:
+ Copy was ended by Abort Copy File.
+ failed:
+ Copy failed. See copy_status_description for failure details.
+ :ivar str progress:
+ Contains the number of bytes copied and the total bytes in the source in the last
+ attempted Copy File operation where this file was the destination file. Can show
+ between 0 and Content-Length bytes copied.
+ :ivar datetime completion_time:
+ Conclusion time of the last attempted Copy File operation where this file was the
+ destination file. This value can specify the time of a completed, aborted, or
+ failed copy attempt.
+ :ivar str status_description:
+ Only appears when x-ms-copy-status is failed or pending. Describes cause of fatal
+ or non-fatal copy operation failure.
+ '''
+
+ def __init__(self):
+ self.id = None
+ self.source = None
+ self.status = None
+ self.progress = None
+ self.completion_time = None
+ self.status_description = None
+
+
+class FileRange(object):
+ '''
+ File Range.
+
+ :ivar int start:
+ Byte index for start of file range.
+ :ivar int end:
+ Byte index for end of file range.
+ '''
+
+ def __init__(self, start=None, end=None):
+ self.start = start
+ self.end = end
+
+
+class DeleteSnapshot(object):
+ '''
+ Required if the Share has associated snapshots. Specifies how to handle the snapshots.
+ '''
+
+ Include = 'include'
+ '''
+ Delete the share and all of its snapshots.
+ '''
+
+
+class FilePermissions(object):
+ '''
+ FilePermissions class to be used with
+ :func:`~azure.storage.file.fileservice.FileService.generate_file_shared_access_signature` API.
+
+ :ivar FilePermissions FilePermissions.CREATE:
+ Create a new file or copy a file to a new file.
+ :ivar FilePermissions FilePermissions.DELETE:
+ Delete the file.
+ :ivar FilePermissions FilePermissions.READ:
+ Read the content, properties, metadata. Use the file as the source of a copy
+ operation.
+ :ivar FilePermissions FilePermissions.WRITE:
+ Create or write content, properties, metadata. Resize the file. Use the file
+ as the destination of a copy operation within the same account.
+ '''
+
+ def __init__(self, read=False, create=False, write=False, delete=False,
+ _str=None):
+ '''
+ :param bool read:
+ Read the content, properties, metadata. Use the file as the source of a copy
+ operation.
+ :param bool create:
+ Create a new file or copy a file to a new file.
+ :param bool write:
+ Create or write content, properties, metadata. Resize the file. Use the file
+ as the destination of a copy operation within the same account.
+ :param bool delete:
+ Delete the file.
+ :param str _str:
+ A string representing the permissions.
+ '''
+
+ if not _str:
+ _str = ''
+ self.read = read or ('r' in _str)
+ self.create = create or ('c' in _str)
+ self.write = write or ('w' in _str)
+ self.delete = delete or ('d' in _str)
+
+ def __or__(self, other):
+ return FilePermissions(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return FilePermissions(_str=str(self) + str(other))
+
+ def __str__(self):
+ return (('r' if self.read else '') +
+ ('c' if self.create else '') +
+ ('w' if self.write else '') +
+ ('d' if self.delete else ''))
+
+
+FilePermissions.CREATE = FilePermissions(create=True)
+FilePermissions.DELETE = FilePermissions(delete=True)
+FilePermissions.READ = FilePermissions(read=True)
+FilePermissions.WRITE = FilePermissions(write=True)
+
+
+class SharePermissions(object):
+ '''
+ SharePermissions class to be used with `azure.storage.file.FileService.generate_share_shared_access_signature`
+ method and for the AccessPolicies used with `azure.storage.file.FileService.set_share_acl`.
+
+ :ivar SharePermissions FilePermissions.DELETE:
+ Delete any file in the share.
+ Note: You cannot grant permissions to delete a share with a service SAS. Use
+ an account SAS instead.
+ :ivar SharePermissions FilePermissions.LIST:
+ List files and directories in the share.
+ :ivar SharePermissions FilePermissions.READ:
+ Read the content, properties or metadata of any file in the share. Use any
+ file in the share as the source of a copy operation.
+ :ivar SharePermissions FilePermissions.WRITE:
+ For any file in the share, create or write content, properties or metadata.
+ Resize the file. Use the file as the destination of a copy operation within
+ the same account.
+ Note: You cannot grant permissions to read or write share properties or
+ metadata with a service SAS. Use an account SAS instead.
+ '''
+
+ def __init__(self, read=False, write=False, delete=False, list=False,
+ _str=None):
+ '''
+ :param bool read:
+ Read the content, properties or metadata of any file in the share. Use any
+ file in the share as the source of a copy operation.
+ :param bool write:
+ For any file in the share, create or write content, properties or metadata.
+ Resize the file. Use the file as the destination of a copy operation within
+ the same account.
+ Note: You cannot grant permissions to read or write share properties or
+ metadata with a service SAS. Use an account SAS instead.
+ :param bool delete:
+ Delete any file in the share.
+ Note: You cannot grant permissions to delete a share with a service SAS. Use
+ an account SAS instead.
+ :param bool list:
+ List files and directories in the share.
+ :param str _str:
+ A string representing the permissions
+ '''
+
+ if not _str:
+ _str = ''
+ self.read = read or ('r' in _str)
+ self.write = write or ('w' in _str)
+ self.delete = delete or ('d' in _str)
+ self.list = list or ('l' in _str)
+
+ def __or__(self, other):
+ return SharePermissions(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return SharePermissions(_str=str(self) + str(other))
+
+ def __str__(self):
+ return (('r' if self.read else '') +
+ ('w' if self.write else '') +
+ ('d' if self.delete else '') +
+ ('l' if self.list else ''))
+
+
+SharePermissions.DELETE = SharePermissions(delete=True)
+SharePermissions.LIST = SharePermissions(list=True)
+SharePermissions.READ = SharePermissions(read=True)
+SharePermissions.WRITE = SharePermissions(write=True)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/sharedaccesssignature.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/sharedaccesssignature.py
new file mode 100644
index 00000000000..de52de1ee4c
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/file/sharedaccesssignature.py
@@ -0,0 +1,188 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+from ..common.sharedaccesssignature import (
+ SharedAccessSignature,
+ _SharedAccessHelper,
+)
+from ..common._common_conversion import (
+ _to_str,
+)
+from ._constants import X_MS_VERSION
+
+
+class FileSharedAccessSignature(SharedAccessSignature):
+ '''
+ Provides a factory for creating file and share access
+ signature tokens with a common account name and account key. Users can either
+ use the factory or can construct the appropriate service and use the
+ generate_*_shared_access_signature method directly.
+ '''
+
+ def __init__(self, account_name, account_key):
+ '''
+ :param str account_name:
+ The storage account name used to generate the shared access signatures.
+ :param str account_key:
+ The access key to generate the shares access signatures.
+ '''
+ super(FileSharedAccessSignature, self).__init__(account_name, account_key, x_ms_version=X_MS_VERSION)
+
+ def generate_file(self, share_name, directory_name=None, file_name=None,
+ permission=None, expiry=None, start=None, id=None,
+ ip=None, protocol=None, cache_control=None,
+ content_disposition=None, content_encoding=None,
+ content_language=None, content_type=None):
+ '''
+ Generates a shared access signature for the file.
+ Use the returned signature with the sas_token parameter of FileService.
+
+ :param str share_name:
+ Name of share.
+ :param str directory_name:
+ Name of directory. SAS tokens cannot be created for directories, so
+ this parameter should only be present if file_name is provided.
+ :param str file_name:
+ Name of file.
+ :param FilePermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, create, write, delete, list.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use
+ set_file_service_properties.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :param str cache_control:
+ Response header value for Cache-Control when resource is accessed
+ using this shared access signature.
+ :param str content_disposition:
+ Response header value for Content-Disposition when resource is accessed
+ using this shared access signature.
+ :param str content_encoding:
+ Response header value for Content-Encoding when resource is accessed
+ using this shared access signature.
+ :param str content_language:
+ Response header value for Content-Language when resource is accessed
+ using this shared access signature.
+ :param str content_type:
+ Response header value for Content-Type when resource is accessed
+ using this shared access signature.
+ '''
+ resource_path = share_name
+ if directory_name is not None:
+ resource_path += '/' + _to_str(directory_name)
+ resource_path += '/' + _to_str(file_name)
+
+ sas = _SharedAccessHelper()
+ sas.add_base(permission, expiry, start, ip, protocol, self.x_ms_version)
+ sas.add_id(id)
+ sas.add_resource('f')
+ sas.add_override_response_headers(cache_control, content_disposition,
+ content_encoding, content_language,
+ content_type)
+ sas.add_resource_signature(self.account_name, self.account_key, 'file', resource_path)
+
+ return sas.get_token()
+
+ def generate_share(self, share_name, permission=None, expiry=None,
+ start=None, id=None, ip=None, protocol=None,
+ cache_control=None, content_disposition=None,
+ content_encoding=None, content_language=None,
+ content_type=None):
+ '''
+ Generates a shared access signature for the share.
+ Use the returned signature with the sas_token parameter of FileService.
+
+ :param str share_name:
+ Name of share.
+ :param SharePermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, create, write, delete, list.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use
+ set_file_service_properties.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :param str cache_control:
+ Response header value for Cache-Control when resource is accessed
+ using this shared access signature.
+ :param str content_disposition:
+ Response header value for Content-Disposition when resource is accessed
+ using this shared access signature.
+ :param str content_encoding:
+ Response header value for Content-Encoding when resource is accessed
+ using this shared access signature.
+ :param str content_language:
+ Response header value for Content-Language when resource is accessed
+ using this shared access signature.
+ :param str content_type:
+ Response header value for Content-Type when resource is accessed
+ using this shared access signature.
+ '''
+ sas = _SharedAccessHelper()
+ sas.add_base(permission, expiry, start, ip, protocol, self.x_ms_version)
+ sas.add_id(id)
+ sas.add_resource('s')
+ sas.add_override_response_headers(cache_control, content_disposition,
+ content_encoding, content_language,
+ content_type)
+ sas.add_resource_signature(self.account_name, self.account_key, 'file', share_name)
+
+ return sas.get_token()
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/__init__.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/__init__.py
new file mode 100644
index 00000000000..0c64f78907f
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/__init__.py
@@ -0,0 +1,13 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from .models import (
+ Queue,
+ QueueMessage,
+ QueuePermissions,
+ QueueMessageFormat,
+)
+
+from .queueservice import QueueService
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_constants.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_constants.py
new file mode 100644
index 00000000000..9ec0ece8853
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_constants.py
@@ -0,0 +1,11 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+__author__ = 'Microsoft Corp. '
+__version__ = '1.2.0rc0'
+
+# x-ms-version for storage service.
+X_MS_VERSION = '2017-11-09'
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_deserialization.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_deserialization.py
new file mode 100644
index 00000000000..d0ef2973c9e
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_deserialization.py
@@ -0,0 +1,150 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from dateutil import parser
+
+try:
+ from xml.etree import cElementTree as ETree
+except ImportError:
+ from xml.etree import ElementTree as ETree
+
+from .models import (
+ Queue,
+ QueueMessage,
+)
+from ..common.models import (
+ _list,
+)
+from ..common._deserialization import (
+ _to_int,
+ _parse_metadata,
+)
+from ._encryption import (
+ _decrypt_queue_message,
+)
+
+
+def _parse_metadata_and_message_count(response):
+ '''
+ Extracts approximate messages count header.
+ '''
+ metadata = _parse_metadata(response)
+ metadata.approximate_message_count = _to_int(response.headers.get('x-ms-approximate-messages-count'))
+
+ return metadata
+
+
+def _parse_queue_message_from_headers(response):
+ '''
+ Extracts pop receipt and time next visible from headers.
+ '''
+ message = QueueMessage()
+ message.pop_receipt = response.headers.get('x-ms-popreceipt')
+ message.time_next_visible = parser.parse(response.headers.get('x-ms-time-next-visible'))
+
+ return message
+
+
+def _convert_xml_to_queues(response):
+ '''
+
+
+ string-value
+ string-value
+ int-value
+
+
+ string-value
+
+ value
+
+
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ queues = _list()
+ list_element = ETree.fromstring(response.body)
+
+ # Set next marker
+ next_marker = list_element.findtext('NextMarker') or None
+ setattr(queues, 'next_marker', next_marker)
+
+ queues_element = list_element.find('Queues')
+
+ for queue_element in queues_element.findall('Queue'):
+ # Name element
+ queue = Queue()
+ queue.name = queue_element.findtext('Name')
+
+ # Metadata
+ metadata_root_element = queue_element.find('Metadata')
+ if metadata_root_element is not None:
+ queue.metadata = dict()
+ for metadata_element in metadata_root_element:
+ queue.metadata[metadata_element.tag] = metadata_element.text
+
+ # Add queue to list
+ queues.append(queue)
+
+ return queues
+
+
+def _convert_xml_to_queue_messages(response, decode_function, require_encryption, key_encryption_key, resolver,
+ content=None):
+ '''
+
+
+
+ string-message-id
+ insertion-time
+ expiration-time
+ opaque-string-receipt-data
+ time-next-visible
+ integer
+ message-body
+
+
+ '''
+ if response is None or response.body is None:
+ return None
+
+ messages = list()
+ list_element = ETree.fromstring(response.body)
+
+ for message_element in list_element.findall('QueueMessage'):
+ message = QueueMessage()
+
+ message.id = message_element.findtext('MessageId')
+
+ dequeue_count = message_element.findtext('DequeueCount')
+ if dequeue_count is not None:
+ message.dequeue_count = _to_int(dequeue_count)
+
+ # content is not returned for put_message
+ if content is not None:
+ message.content = content
+ else:
+ message.content = message_element.findtext('MessageText')
+ if (key_encryption_key is not None) or (resolver is not None):
+ message.content = _decrypt_queue_message(message.content, require_encryption,
+ key_encryption_key, resolver)
+ message.content = decode_function(message.content)
+
+ message.insertion_time = parser.parse(message_element.findtext('InsertionTime'))
+ message.expiration_time = parser.parse(message_element.findtext('ExpirationTime'))
+
+ message.pop_receipt = message_element.findtext('PopReceipt')
+
+ time_next_visible = message_element.find('TimeNextVisible')
+ if time_next_visible is not None:
+ message.time_next_visible = parser.parse(time_next_visible.text)
+
+ # Add message to list
+ messages.append(message)
+
+ return messages
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_encryption.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_encryption.py
new file mode 100644
index 00000000000..75979f36411
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_encryption.py
@@ -0,0 +1,159 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+import os
+from json import (
+ dumps,
+ loads,
+)
+
+from azure.common import (
+ AzureException,
+)
+from cryptography.hazmat.primitives.padding import PKCS7
+
+from ..common._common_conversion import (
+ _encode_base64,
+ _decode_base64_to_bytes
+)
+from ..common._encryption import (
+ _generate_encryption_data_dict,
+ _dict_to_encryption_data,
+ _generate_AES_CBC_cipher,
+ _validate_and_unwrap_cek,
+ _EncryptionAlgorithm,
+)
+from ..common._error import (
+ _ERROR_DECRYPTION_FAILURE,
+ _ERROR_UNSUPPORTED_ENCRYPTION_ALGORITHM,
+ _validate_not_none,
+ _validate_key_encryption_key_wrap,
+)
+from ._error import (
+ _ERROR_MESSAGE_NOT_ENCRYPTED
+)
+
+
+def _encrypt_queue_message(message, key_encryption_key):
+ '''
+ Encrypts the given plain text message using AES256 in CBC mode with 128 bit padding.
+ Wraps the generated content-encryption-key using the user-provided key-encryption-key (kek).
+ Returns a json-formatted string containing the encrypted message and the encryption metadata.
+
+ :param object message:
+ The plain text messge to be encrypted.
+ :param object key_encryption_key:
+ The user-provided key-encryption-key. Must implement the following methods:
+ wrap_key(key)--wraps the specified key using an algorithm of the user's choice.
+ get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.
+ get_kid()--returns a string key id for this key-encryption-key.
+ :return: A json-formatted string containing the encrypted message and the encryption metadata.
+ :rtype: str
+ '''
+
+ _validate_not_none('message', message)
+ _validate_not_none('key_encryption_key', key_encryption_key)
+ _validate_key_encryption_key_wrap(key_encryption_key)
+
+ # AES256 uses 256 bit (32 byte) keys and always with 16 byte blocks
+ content_encryption_key = os.urandom(32)
+ initialization_vector = os.urandom(16)
+
+ # Queue encoding functions all return unicode strings, and encryption should
+ # operate on binary strings.
+ message = message.encode('utf-8')
+
+ cipher = _generate_AES_CBC_cipher(content_encryption_key, initialization_vector)
+
+ # PKCS7 with 16 byte blocks ensures compatibility with AES.
+ padder = PKCS7(128).padder()
+ padded_data = padder.update(message) + padder.finalize()
+
+ # Encrypt the data.
+ encryptor = cipher.encryptor()
+ encrypted_data = encryptor.update(padded_data) + encryptor.finalize()
+
+ # Build the dictionary structure.
+ queue_message = {'EncryptedMessageContents': _encode_base64(encrypted_data),
+ 'EncryptionData': _generate_encryption_data_dict(key_encryption_key,
+ content_encryption_key,
+ initialization_vector)}
+
+ return dumps(queue_message)
+
+
+def _decrypt_queue_message(message, require_encryption, key_encryption_key, resolver):
+ '''
+ Returns the decrypted message contents from an EncryptedQueueMessage.
+ If no encryption metadata is present, will return the unaltered message.
+ :param str message:
+ The JSON formatted QueueEncryptedMessage contents with all associated metadata.
+ :param bool require_encryption:
+ If set, will enforce that the retrieved messages are encrypted and decrypt them.
+ :param object key_encryption_key:
+ The user-provided key-encryption-key. Must implement the following methods:
+ unwrap_key(key, algorithm)--returns the unwrapped form of the specified symmetric key using the string-specified algorithm.
+ get_kid()--returns a string key id for this key-encryption-key.
+ :param function resolver(kid):
+ The user-provided key resolver. Uses the kid string to return a key-encryption-key implementing the interface defined above.
+ :return: The plain text message from the queue message.
+ :rtype: str
+ '''
+
+ try:
+ message = loads(message)
+
+ encryption_data = _dict_to_encryption_data(message['EncryptionData'])
+ decoded_data = _decode_base64_to_bytes(message['EncryptedMessageContents'])
+ except (KeyError, ValueError):
+ # Message was not json formatted and so was not encrypted
+ # or the user provided a json formatted message.
+ if require_encryption:
+ raise ValueError(_ERROR_MESSAGE_NOT_ENCRYPTED)
+ else:
+ return message
+ try:
+ return _decrypt(decoded_data, encryption_data, key_encryption_key, resolver).decode('utf-8')
+ except Exception:
+ raise AzureException(_ERROR_DECRYPTION_FAILURE)
+
+
+def _decrypt(message, encryption_data, key_encryption_key=None, resolver=None):
+ '''
+ Decrypts the given ciphertext using AES256 in CBC mode with 128 bit padding.
+ Unwraps the content-encryption-key using the user-provided or resolved key-encryption-key (kek). Returns the original plaintex.
+
+ :param str message:
+ The ciphertext to be decrypted.
+ :param _EncryptionData encryption_data:
+ The metadata associated with this ciphertext.
+ :param object key_encryption_key:
+ The user-provided key-encryption-key. Must implement the following methods:
+ unwrap_key(key, algorithm)--returns the unwrapped form of the specified symmetric key using the string-specified algorithm.
+ get_kid()--returns a string key id for this key-encryption-key.
+ :param function resolver(kid):
+ The user-provided key resolver. Uses the kid string to return a key-encryption-key implementing the interface defined above.
+ :return: The decrypted plaintext.
+ :rtype: str
+ '''
+ _validate_not_none('message', message)
+ content_encryption_key = _validate_and_unwrap_cek(encryption_data, key_encryption_key, resolver)
+
+ if not (_EncryptionAlgorithm.AES_CBC_256 == encryption_data.encryption_agent.encryption_algorithm):
+ raise ValueError(_ERROR_UNSUPPORTED_ENCRYPTION_ALGORITHM)
+
+ cipher = _generate_AES_CBC_cipher(content_encryption_key, encryption_data.content_encryption_IV)
+
+ # decrypt data
+ decrypted_data = message
+ decryptor = cipher.decryptor()
+ decrypted_data = (decryptor.update(decrypted_data) + decryptor.finalize())
+
+ # unpad data
+ unpadder = PKCS7(128).unpadder()
+ decrypted_data = (unpadder.update(decrypted_data) + unpadder.finalize())
+
+ return decrypted_data
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_error.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_error.py
new file mode 100644
index 00000000000..cb15935dd8b
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_error.py
@@ -0,0 +1,27 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+
+from ..common._error import (
+ _validate_type_bytes,
+)
+
+_ERROR_MESSAGE_SHOULD_BE_UNICODE = 'message should be of type unicode.'
+_ERROR_MESSAGE_SHOULD_BE_STR = 'message should be of type str.'
+_ERROR_MESSAGE_NOT_BASE64 = 'message is not a valid base64 value.'
+_ERROR_MESSAGE_NOT_ENCRYPTED = 'Message was not encrypted.'
+
+def _validate_message_type_text(param):
+ if sys.version_info < (3,):
+ if not isinstance(param, unicode):
+ raise TypeError(_ERROR_MESSAGE_SHOULD_BE_UNICODE)
+ else:
+ if not isinstance(param, str):
+ raise TypeError(_ERROR_MESSAGE_SHOULD_BE_STR)
+
+
+def _validate_message_type_bytes(param):
+ _validate_type_bytes('message', param)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_serialization.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_serialization.py
new file mode 100644
index 00000000000..21569e5f508
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/_serialization.py
@@ -0,0 +1,73 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+import sys
+
+if sys.version_info >= (3,):
+ from io import BytesIO
+else:
+ try:
+ from cStringIO import StringIO as BytesIO
+ except:
+ from StringIO import StringIO as BytesIO
+
+try:
+ from xml.etree import cElementTree as ETree
+except ImportError:
+ from xml.etree import ElementTree as ETree
+
+from ..common._common_conversion import (
+ _str,
+)
+from ._encryption import (
+ _encrypt_queue_message,
+)
+
+
+def _get_path(queue_name=None, include_messages=None, message_id=None):
+ '''
+ Creates the path to access a queue resource.
+
+ queue_name:
+ Name of queue.
+ include_messages:
+ Whether or not to include messages.
+ message_id:
+ Message id.
+ '''
+ if queue_name and include_messages and message_id:
+ return '/{0}/messages/{1}'.format(_str(queue_name), message_id)
+ if queue_name and include_messages:
+ return '/{0}/messages'.format(_str(queue_name))
+ elif queue_name:
+ return '/{0}'.format(_str(queue_name))
+ else:
+ return '/'
+
+
+def _convert_queue_message_xml(message_text, encode_function, key_encryption_key):
+ '''
+
+
+
+
+ '''
+ queue_message_element = ETree.Element('QueueMessage')
+
+ # Enabled
+ message_text = encode_function(message_text)
+ if key_encryption_key is not None:
+ message_text = _encrypt_queue_message(message_text, key_encryption_key)
+ ETree.SubElement(queue_message_element, 'MessageText').text = message_text
+
+ # Add xml declaration and serialize
+ try:
+ stream = BytesIO()
+ ETree.ElementTree(queue_message_element).write(stream, xml_declaration=True, encoding='utf-8', method='xml')
+ output = stream.getvalue()
+ finally:
+ stream.close()
+
+ return output
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/models.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/models.py
new file mode 100644
index 00000000000..fb3932a608d
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/models.py
@@ -0,0 +1,239 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from base64 import (
+ b64encode,
+ b64decode,
+)
+from xml.sax.saxutils import escape as xml_escape
+from xml.sax.saxutils import unescape as xml_unescape
+
+from ._error import (
+ _validate_message_type_bytes,
+ _validate_message_type_text,
+ _ERROR_MESSAGE_NOT_BASE64,
+)
+
+
+class Queue(object):
+ '''
+ Queue class.
+
+ :ivar str name:
+ The name of the queue.
+ :ivar metadata:
+ A dict containing name-value pairs associated with the queue as metadata.
+ This var is set to None unless the include=metadata param was included
+ for the list queues operation. If this parameter was specified but the
+ queue has no metadata, metadata will be set to an empty dictionary.
+ :vartype metadata: dict(str, str)
+ '''
+
+ def __init__(self):
+ self.name = None
+ self.metadata = None
+
+
+class QueueMessage(object):
+ '''
+ Queue message class.
+
+ :ivar str id:
+ A GUID value assigned to the message by the Queue service that
+ identifies the message in the queue. This value may be used together
+ with the value of pop_receipt to delete a message from the queue after
+ it has been retrieved with the get messages operation.
+ :ivar date insertion_time:
+ A UTC date value representing the time the messages was inserted.
+ :ivar date expiration_time:
+ A UTC date value representing the time the message expires.
+ :ivar int dequeue_count:
+ Begins with a value of 1 the first time the message is dequeued. This
+ value is incremented each time the message is subsequently dequeued.
+ :ivar obj content:
+ The message content. Type is determined by the decode_function set on
+ the service. Default is str.
+ :ivar str pop_receipt:
+ A receipt str which can be used together with the message_id element to
+ delete a message from the queue after it has been retrieved with the get
+ messages operation. Only returned by get messages operations. Set to
+ None for peek messages.
+ :ivar date time_next_visible:
+ A UTC date value representing the time the message will next be visible.
+ Only returned by get messages operations. Set to None for peek messages.
+ '''
+
+ def __init__(self):
+ self.id = None
+ self.insertion_time = None
+ self.expiration_time = None
+ self.dequeue_count = None
+ self.content = None
+ self.pop_receipt = None
+ self.time_next_visible = None
+
+
+class QueueMessageFormat:
+ '''
+ Encoding and decoding methods which can be used to modify how the queue service
+ encodes and decodes queue messages. Set these to queueservice.encode_function
+ and queueservice.decode_function to modify the behavior. The defaults are
+ text_xmlencode and text_xmldecode, respectively.
+ '''
+
+ @staticmethod
+ def text_base64encode(data):
+ '''
+ Base64 encode unicode text.
+
+ :param str data: String to encode.
+ :return: Base64 encoded string.
+ :rtype: str
+ '''
+ _validate_message_type_text(data)
+ return b64encode(data.encode('utf-8')).decode('utf-8')
+
+ @staticmethod
+ def text_base64decode(data):
+ '''
+ Base64 decode to unicode text.
+
+ :param str data: String data to decode to unicode.
+ :return: Base64 decoded string.
+ :rtype: str
+ '''
+ try:
+ return b64decode(data.encode('utf-8')).decode('utf-8')
+ except (ValueError, TypeError):
+ # ValueError for Python 3, TypeError for Python 2
+ raise ValueError(_ERROR_MESSAGE_NOT_BASE64)
+
+ @staticmethod
+ def binary_base64encode(data):
+ '''
+ Base64 encode byte strings.
+
+ :param str data: Binary string to encode.
+ :return: Base64 encoded data.
+ :rtype: str
+ '''
+ _validate_message_type_bytes(data)
+ return b64encode(data).decode('utf-8')
+
+ @staticmethod
+ def binary_base64decode(data):
+ '''
+ Base64 decode to byte string.
+
+ :param str data: Data to decode to a byte string.
+ :return: Base64 decoded data.
+ :rtype: str
+ '''
+ try:
+ return b64decode(data.encode('utf-8'))
+ except (ValueError, TypeError):
+ # ValueError for Python 3, TypeError for Python 2
+ raise ValueError(_ERROR_MESSAGE_NOT_BASE64)
+
+ @staticmethod
+ def text_xmlencode(data):
+ '''
+ XML encode unicode text.
+
+ :param str data: Unicode string to encode
+ :return: XML encoded data.
+ :rtype: str
+ '''
+ _validate_message_type_text(data)
+ return xml_escape(data)
+
+ @staticmethod
+ def text_xmldecode(data):
+ '''
+ XML decode to unicode text.
+
+ :param str data: Data to decode to unicode.
+ :return: XML decoded data.
+ :rtype: str
+ '''
+ return xml_unescape(data)
+
+ @staticmethod
+ def noencode(data):
+ '''
+ Do no encoding.
+
+ :param str data: Data.
+ :return: The data passed in is returned unmodified.
+ :rtype: str
+ '''
+ return data
+
+ @staticmethod
+ def nodecode(data):
+ '''
+ Do no decoding.
+
+ :param str data: Data.
+ :return: The data passed in is returned unmodified.
+ :rtype: str
+ '''
+ return data
+
+
+class QueuePermissions(object):
+ '''
+ QueuePermissions class to be used with :func:`~azure.storage.queue.queueservice.QueueService.generate_queue_shared_access_signature`
+ method and for the AccessPolicies used with :func:`~azure.storage.queue.queueservice.QueueService.set_queue_acl`.
+
+ :ivar QueuePermissions QueuePermissions.READ:
+ Read metadata and properties, including message count. Peek at messages.
+ :ivar QueuePermissions QueuePermissions.ADD:
+ Add messages to the queue.
+ :ivar QueuePermissions QueuePermissions.UPDATE:
+ Update messages in the queue. Note: Use the Process permission with
+ Update so you can first get the message you want to update.
+ :ivar QueuePermissions QueuePermissions.PROCESS: Delete entities.
+ Get and delete messages from the queue.
+ '''
+
+ def __init__(self, read=False, add=False, update=False, process=False, _str=None):
+ '''
+ :param bool read:
+ Read metadata and properties, including message count. Peek at messages.
+ :param bool add:
+ Add messages to the queue.
+ :param bool update:
+ Update messages in the queue. Note: Use the Process permission with
+ Update so you can first get the message you want to update.
+ :param bool process:
+ Get and delete messages from the queue.
+ :param str _str:
+ A string representing the permissions.
+ '''
+ if not _str:
+ _str = ''
+ self.read = read or ('r' in _str)
+ self.add = add or ('a' in _str)
+ self.update = update or ('u' in _str)
+ self.process = process or ('p' in _str)
+
+ def __or__(self, other):
+ return QueuePermissions(_str=str(self) + str(other))
+
+ def __add__(self, other):
+ return QueuePermissions(_str=str(self) + str(other))
+
+ def __str__(self):
+ return (('r' if self.read else '') +
+ ('a' if self.add else '') +
+ ('u' if self.update else '') +
+ ('p' if self.process else ''))
+
+
+QueuePermissions.READ = QueuePermissions(read=True)
+QueuePermissions.ADD = QueuePermissions(add=True)
+QueuePermissions.UPDATE = QueuePermissions(update=True)
+QueuePermissions.PROCESS = QueuePermissions(process=True)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/queueservice.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/queueservice.py
new file mode 100644
index 00000000000..6bd1903013c
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/queueservice.py
@@ -0,0 +1,996 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+from azure.common import (
+ AzureConflictHttpError,
+ AzureHttpError,
+)
+
+from ..common._auth import (
+ _StorageSASAuthentication,
+ _StorageSharedKeyAuthentication,
+ _StorageTokenAuthentication,
+)
+from ..common._common_conversion import (
+ _int_to_str,
+ _to_str,
+)
+from ..common._connection import _ServiceParameters
+from ..common._constants import (
+ SERVICE_HOST_BASE,
+ DEFAULT_PROTOCOL,
+)
+from ..common._deserialization import (
+ _convert_xml_to_service_properties,
+ _convert_xml_to_signed_identifiers,
+ _convert_xml_to_service_stats,
+)
+from ..common._error import (
+ _dont_fail_not_exist,
+ _dont_fail_on_exist,
+ _validate_not_none,
+ _ERROR_CONFLICT,
+ _ERROR_STORAGE_MISSING_INFO,
+ _validate_access_policies,
+ _validate_encryption_required,
+ _validate_decryption_required,
+)
+from ..common._http import (
+ HTTPRequest,
+)
+from ..common._serialization import (
+ _convert_signed_identifiers_to_xml,
+ _convert_service_properties_to_xml,
+)
+from ..common._serialization import (
+ _get_request_body,
+ _add_metadata_headers,
+)
+from ..common.models import (
+ Services,
+ ListGenerator,
+ _OperationContext,
+)
+from .sharedaccesssignature import (
+ QueueSharedAccessSignature,
+)
+from ..common.storageclient import StorageClient
+from ._deserialization import (
+ _convert_xml_to_queues,
+ _convert_xml_to_queue_messages,
+ _parse_queue_message_from_headers,
+ _parse_metadata_and_message_count,
+)
+from ._serialization import (
+ _convert_queue_message_xml,
+ _get_path,
+)
+from .models import (
+ QueueMessageFormat,
+)
+from ._constants import (
+ X_MS_VERSION,
+ __version__ as package_version,
+)
+
+_HTTP_RESPONSE_NO_CONTENT = 204
+
+
+class QueueService(StorageClient):
+ '''
+ This is the main class managing queue resources.
+
+ The Queue service stores messages. A queue can contain an unlimited number of
+ messages, each of which can be up to 64KB in size. Messages are generally added
+ to the end of the queue and retrieved from the front of the queue, although
+ first in, first out (FIFO) behavior is not guaranteed.
+
+ :ivar function(data) encode_function:
+ A function used to encode queue messages. Takes as
+ a parameter the data passed to the put_message API and returns the encoded
+ message. Defaults to take text and xml encode, but bytes and other
+ encodings can be used. For example, base64 may be preferable for developing
+ across multiple Azure Storage libraries in different languages. See the
+ :class:`~azure.storage.queue.models.QueueMessageFormat` for xml, base64 and
+ no encoding methods as well as binary equivalents.
+ :ivar function(data) decode_function:
+ A function used to encode decode messages. Takes as
+ a parameter the data returned by the get_messages and peek_messages APIs and
+ returns the decoded message. Defaults to return text and xml decode, but
+ bytes and other decodings can be used. For example, base64 may be preferable
+ for developing across multiple Azure Storage libraries in different languages.
+ See the :class:`~azure.storage.queue.models.QueueMessageFormat` for xml, base64
+ and no decoding methods as well as binary equivalents.
+ :ivar object key_encryption_key:
+ The key-encryption-key optionally provided by the user. If provided, will be used to
+ encrypt/decrypt in supported methods.
+ For methods requiring decryption, either the key_encryption_key OR the resolver must be provided.
+ If both are provided, the resolver will take precedence.
+ Must implement the following methods for APIs requiring encryption:
+ wrap_key(key)--wraps the specified key (bytes) using an algorithm of the user's choice. Returns the encrypted key as bytes.
+ get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.
+ get_kid()--returns a string key id for this key-encryption-key.
+ Must implement the following methods for APIs requiring decryption:
+ unwrap_key(key, algorithm)--returns the unwrapped form of the specified symmetric key using the string-specified algorithm.
+ get_kid()--returns a string key id for this key-encryption-key.
+ :ivar function key_resolver_function(kid):
+ A function to resolve keys optionally provided by the user. If provided, will be used to decrypt in supported methods.
+ For methods requiring decryption, either the key_encryption_key OR
+ the resolver must be provided. If both are provided, the resolver will take precedence.
+ It uses the kid string to return a key-encryption-key implementing the interface defined above.
+ :ivar bool require_encryption:
+ A flag that may be set to ensure that all messages successfully uploaded to the queue and all those downloaded and
+ successfully read from the queue are/were encrypted while on the server. If this flag is set, all required
+ parameters for encryption/decryption must be provided. See the above comments on the key_encryption_key and resolver.
+ '''
+
+ def __init__(self, account_name=None, account_key=None, sas_token=None, is_emulated=False,
+ protocol=DEFAULT_PROTOCOL, endpoint_suffix=SERVICE_HOST_BASE, request_session=None,
+ connection_string=None, socket_timeout=None, token_credential=None):
+ '''
+ :param str account_name:
+ The storage account name. This is used to authenticate requests
+ signed with an account key and to construct the storage endpoint. It
+ is required unless a connection string is given.
+ :param str account_key:
+ The storage account key. This is used for shared key authentication.
+ :param str sas_token:
+ A shared access signature token to use to authenticate requests
+ instead of the account key. If account key and sas token are both
+ specified, account key will be used to sign.
+ :param bool is_emulated:
+ Whether to use the emulator. Defaults to False. If specified, will
+ override all other parameters besides connection string and request
+ session.
+ :param str protocol:
+ The protocol to use for requests. Defaults to https.
+ :param str endpoint_suffix:
+ The host base component of the url, minus the account name. Defaults
+ to Azure (core.windows.net). Override this to use the China cloud
+ (core.chinacloudapi.cn).
+ :param requests.Session request_session:
+ The session object to use for http requests.
+ :param str connection_string:
+ If specified, this will override all other parameters besides
+ request session. See
+ http://azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/
+ for the connection string format.
+ :param int socket_timeout:
+ If specified, this will override the default socket timeout. The timeout specified is in seconds.
+ See DEFAULT_SOCKET_TIMEOUT in _constants.py for the default value.
+ :param token_credential:
+ A token credential used to authenticate HTTPS requests. The token value
+ should be updated before its expiration.
+ :type `~..common.TokenCredential`
+ '''
+ service_params = _ServiceParameters.get_service_parameters(
+ 'queue',
+ account_name=account_name,
+ account_key=account_key,
+ sas_token=sas_token,
+ token_credential=token_credential,
+ is_emulated=is_emulated,
+ protocol=protocol,
+ endpoint_suffix=endpoint_suffix,
+ request_session=request_session,
+ connection_string=connection_string,
+ socket_timeout=socket_timeout)
+
+ super(QueueService, self).__init__(service_params)
+
+ if self.account_key:
+ self.authentication = _StorageSharedKeyAuthentication(
+ self.account_name,
+ self.account_key,
+ self.is_emulated
+ )
+ elif self.sas_token:
+ self.authentication = _StorageSASAuthentication(self.sas_token)
+ elif self.token_credential:
+ self.authentication = _StorageTokenAuthentication(self.token_credential)
+ else:
+ raise ValueError(_ERROR_STORAGE_MISSING_INFO)
+
+ self.encode_function = QueueMessageFormat.text_xmlencode
+ self.decode_function = QueueMessageFormat.text_xmldecode
+ self.key_encryption_key = None
+ self.key_resolver_function = None
+ self.require_encryption = False
+ self._X_MS_VERSION = X_MS_VERSION
+ self._update_user_agent_string(package_version)
+
+ def generate_account_shared_access_signature(self, resource_types, permission,
+ expiry, start=None, ip=None, protocol=None):
+ '''
+ Generates a shared access signature for the queue service.
+ Use the returned signature with the sas_token parameter of QueueService.
+
+ :param ResourceTypes resource_types:
+ Specifies the resource types that are accessible with the account SAS.
+ :param AccountPermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :return: A Shared Access Signature (sas) token.
+ :rtype: str
+ '''
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = QueueSharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_account(Services.QUEUE, resource_types, permission,
+ expiry, start=start, ip=ip, protocol=protocol)
+
+ def generate_queue_shared_access_signature(self, queue_name,
+ permission=None,
+ expiry=None,
+ start=None,
+ id=None,
+ ip=None, protocol=None, ):
+ '''
+ Generates a shared access signature for the queue.
+ Use the returned signature with the sas_token parameter of QueueService.
+
+ :param str queue_name:
+ The name of the queue to create a SAS token for.
+ :param QueuePermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use :func:`~set_queue_acl`.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip='168.1.5.65' or sip='168.1.5.60-168.1.5.70' on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ :return: A Shared Access Signature (sas) token.
+ :rtype: str
+ '''
+ _validate_not_none('queue_name', queue_name)
+ _validate_not_none('self.account_name', self.account_name)
+ _validate_not_none('self.account_key', self.account_key)
+
+ sas = QueueSharedAccessSignature(self.account_name, self.account_key)
+ return sas.generate_queue(
+ queue_name,
+ permission=permission,
+ expiry=expiry,
+ start=start,
+ id=id,
+ ip=ip,
+ protocol=protocol,
+ )
+
+ def get_queue_service_stats(self, timeout=None):
+ '''
+ Retrieves statistics related to replication for the Queue service. It is
+ only available when read-access geo-redundant replication is enabled for
+ the storage account.
+
+ With geo-redundant replication, Azure Storage maintains your data durable
+ in two locations. In both locations, Azure Storage constantly maintains
+ multiple healthy replicas of your data. The location where you read,
+ create, update, or delete data is the primary storage account location.
+ The primary location exists in the region you choose at the time you
+ create an account via the Azure Management Azure classic portal, for
+ example, North Central US. The location to which your data is replicated
+ is the secondary location. The secondary location is automatically
+ determined based on the location of the primary; it is in a second data
+ center that resides in the same region as the primary location. Read-only
+ access is available from the secondary location, if read-access geo-redundant
+ replication is enabled for your storage account.
+
+ :param int timeout:
+ The timeout parameter is expressed in seconds.
+ :return: The queue service stats.
+ :rtype: :class:`~..common.models.ServiceStats`
+ '''
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(primary=False, secondary=True)
+ request.path = _get_path()
+ request.query = {
+ 'restype': 'service',
+ 'comp': 'stats',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_service_stats)
+
+ def get_queue_service_properties(self, timeout=None):
+ '''
+ Gets the properties of a storage account's Queue service, including
+ logging, analytics and CORS rules.
+
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return: The queue service properties.
+ :rtype: :class:`~..common.models.ServiceProperties`
+ '''
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path()
+ request.query = {
+ 'restype': 'service',
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_service_properties)
+
+ def set_queue_service_properties(self, logging=None, hour_metrics=None,
+ minute_metrics=None, cors=None, timeout=None):
+ '''
+ Sets the properties of a storage account's Queue service, including
+ Azure Storage Analytics. If an element (ex Logging) is left as None, the
+ existing settings on the service for that functionality are preserved.
+ For more information on Azure Storage Analytics, see
+ https://msdn.microsoft.com/en-us/library/azure/hh343270.aspx.
+
+ :param Logging logging:
+ The logging settings provide request logs.
+ :param Metrics hour_metrics:
+ The hour metrics settings provide a summary of request
+ statistics grouped by API in hourly aggregates for queuess.
+ :param Metrics minute_metrics:
+ The minute metrics settings provide request statistics
+ for each minute for queues.
+ :param cors:
+ You can include up to five CorsRule elements in the
+ list. If an empty list is specified, all CORS rules will be deleted,
+ and CORS will be disabled for the service. For detailed information
+ about CORS rules and evaluation logic, see
+ https://msdn.microsoft.com/en-us/library/azure/dn535601.aspx.
+ :type cors: list(:class:`~..common.models.CorsRule`)
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ '''
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path()
+ request.query = {
+ 'restype': 'service',
+ 'comp': 'properties',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.body = _get_request_body(
+ _convert_service_properties_to_xml(logging, hour_metrics, minute_metrics, cors))
+ self._perform_request(request)
+
+ def list_queues(self, prefix=None, num_results=None, include_metadata=False,
+ marker=None, timeout=None):
+ '''
+ Returns a generator to list the queues. The generator will lazily follow
+ the continuation tokens returned by the service and stop when all queues
+ have been returned or num_results is reached.
+
+ If num_results is specified and the account has more than that number of
+ queues, the generator will have a populated next_marker field once it
+ finishes. This marker can be used to create a new generator if more
+ results are desired.
+
+ :param str prefix:
+ Filters the results to return only queues with names that begin
+ with the specified prefix.
+ :param int num_results:
+ The maximum number of queues to return.
+ :param bool include_metadata:
+ Specifies that container metadata be returned in the response.
+ :param str marker:
+ An opaque continuation token. This value can be retrieved from the
+ next_marker field of a previous generator object if num_results was
+ specified and that generator has finished enumerating results. If
+ specified, this generator will begin returning results from the point
+ where the previous generator stopped.
+ :param int timeout:
+ The server timeout, expressed in seconds. This function may make multiple
+ calls to the service in which case the timeout value specified will be
+ applied to each individual call.
+ '''
+ include = 'metadata' if include_metadata else None
+ operation_context = _OperationContext(location_lock=True)
+ kwargs = {'prefix': prefix, 'max_results': num_results, 'include': include,
+ 'marker': marker, 'timeout': timeout, '_context': operation_context}
+ resp = self._list_queues(**kwargs)
+
+ return ListGenerator(resp, self._list_queues, (), kwargs)
+
+ def _list_queues(self, prefix=None, marker=None, max_results=None,
+ include=None, timeout=None, _context=None):
+ '''
+ Returns a list of queues under the specified account. Makes a single list
+ request to the service. Used internally by the list_queues method.
+
+ :param str prefix:
+ Filters the results to return only queues with names that begin
+ with the specified prefix.
+ :param str marker:
+ A token which identifies the portion of the query to be
+ returned with the next query operation. The operation returns a
+ next_marker element within the response body if the list returned
+ was not complete. This value may then be used as a query parameter
+ in a subsequent call to request the next portion of the list of
+ queues. The marker value is opaque to the client.
+ :param int max_results:
+ The maximum number of queues to return. A single list request may
+ return up to 1000 queues and potentially a continuation token which
+ should be followed to get additional resutls.
+ :param str include:
+ Include this parameter to specify that the container's
+ metadata be returned as part of the response body.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ '''
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path()
+ request.query = {
+ 'comp': 'list',
+ 'prefix': _to_str(prefix),
+ 'marker': _to_str(marker),
+ 'maxresults': _int_to_str(max_results),
+ 'include': _to_str(include),
+ 'timeout': _int_to_str(timeout)
+ }
+
+ return self._perform_request(request, _convert_xml_to_queues, operation_context=_context)
+
+ def create_queue(self, queue_name, metadata=None, fail_on_exist=False, timeout=None):
+ '''
+ Creates a queue under the given account.
+
+ :param str queue_name:
+ The name of the queue to create. A queue name must be from 3 through
+ 63 characters long and may only contain lowercase letters, numbers,
+ and the dash (-) character. The first and last letters in the queue
+ must be alphanumeric. The dash (-) character cannot be the first or
+ last character. Consecutive dash characters are not permitted in the
+ queue name.
+ :param metadata:
+ A dict containing name-value pairs to associate with the queue as
+ metadata. Note that metadata names preserve the case with which they
+ were created, but are case-insensitive when set or read.
+ :type metadata: dict(str, str)
+ :param bool fail_on_exist:
+ Specifies whether to throw an exception if the queue already exists.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return:
+ A boolean indicating whether the queue was created. If fail_on_exist
+ was set to True, this will throw instead of returning false.
+ :rtype: bool
+ '''
+ _validate_not_none('queue_name', queue_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name)
+ request.query = {'timeout': _int_to_str(timeout)}
+ _add_metadata_headers(metadata, request)
+
+ def _return_request(request):
+ return request
+
+ if not fail_on_exist:
+ try:
+ response = self._perform_request(request, parser=_return_request)
+ if response.status == _HTTP_RESPONSE_NO_CONTENT:
+ return False
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_on_exist(ex)
+ return False
+ else:
+ response = self._perform_request(request, parser=_return_request)
+ if response.status == _HTTP_RESPONSE_NO_CONTENT:
+ raise AzureConflictHttpError(
+ _ERROR_CONFLICT.format(response.message), response.status)
+ return True
+
+ def delete_queue(self, queue_name, fail_not_exist=False, timeout=None):
+ '''
+ Deletes the specified queue and any messages it contains.
+
+ When a queue is successfully deleted, it is immediately marked for deletion
+ and is no longer accessible to clients. The queue is later removed from
+ the Queue service during garbage collection.
+
+ Note that deleting a queue is likely to take at least 40 seconds to complete.
+ If an operation is attempted against the queue while it was being deleted,
+ an :class:`AzureConflictHttpError` will be thrown.
+
+ :param str queue_name:
+ The name of the queue to delete.
+ :param bool fail_not_exist:
+ Specifies whether to throw an exception if the queue doesn't exist.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return:
+ A boolean indicating whether the queue was deleted. If fail_not_exist
+ was set to True, this will throw instead of returning false.
+ :rtype: bool
+ '''
+ _validate_not_none('queue_name', queue_name)
+ request = HTTPRequest()
+ request.method = 'DELETE'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name)
+ request.query = {'timeout': _int_to_str(timeout)}
+ if not fail_not_exist:
+ try:
+ self._perform_request(request)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_not_exist(ex)
+ return False
+ else:
+ self._perform_request(request)
+ return True
+
+ def get_queue_metadata(self, queue_name, timeout=None):
+ '''
+ Retrieves user-defined metadata and queue properties on the specified
+ queue. Metadata is associated with the queue as name-value pairs.
+
+ :param str queue_name:
+ The name of an existing queue.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return:
+ A dictionary representing the queue metadata with an
+ approximate_message_count int property on the dict estimating the
+ number of messages in the queue.
+ :rtype: dict(str, str)
+ '''
+ _validate_not_none('queue_name', queue_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(queue_name)
+ request.query = {
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _parse_metadata_and_message_count)
+
+ def set_queue_metadata(self, queue_name, metadata=None, timeout=None):
+ '''
+ Sets user-defined metadata on the specified queue. Metadata is
+ associated with the queue as name-value pairs.
+
+ :param str queue_name:
+ The name of an existing queue.
+ :param dict metadata:
+ A dict containing name-value pairs to associate with the
+ queue as metadata.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ '''
+ _validate_not_none('queue_name', queue_name)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name)
+ request.query = {
+ 'comp': 'metadata',
+ 'timeout': _int_to_str(timeout),
+ }
+ _add_metadata_headers(metadata, request)
+
+ self._perform_request(request)
+
+ def exists(self, queue_name, timeout=None):
+ '''
+ Returns a boolean indicating whether the queue exists.
+
+ :param str queue_name:
+ The name of queue to check for existence.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return: A boolean indicating whether the queue exists.
+ :rtype: bool
+ '''
+ try:
+ self.get_queue_metadata(queue_name, timeout=timeout)
+ return True
+ except AzureHttpError as ex:
+ _dont_fail_not_exist(ex)
+ return False
+
+ def get_queue_acl(self, queue_name, timeout=None):
+ '''
+ Returns details about any stored access policies specified on the
+ queue that may be used with Shared Access Signatures.
+
+ :param str queue_name:
+ The name of an existing queue.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return: A dictionary of access policies associated with the queue.
+ :rtype: dict(str, :class:`~..common.models.AccessPolicy`)
+ '''
+ _validate_not_none('queue_name', queue_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(queue_name)
+ request.query = {
+ 'comp': 'acl',
+ 'timeout': _int_to_str(timeout),
+ }
+
+ return self._perform_request(request, _convert_xml_to_signed_identifiers)
+
+ def set_queue_acl(self, queue_name, signed_identifiers=None, timeout=None):
+ '''
+ Sets stored access policies for the queue that may be used with Shared
+ Access Signatures.
+
+ When you set permissions for a queue, the existing permissions are replaced.
+ To update the queue's permissions, call :func:`~get_queue_acl` to fetch
+ all access policies associated with the queue, modify the access policy
+ that you wish to change, and then call this function with the complete
+ set of data to perform the update.
+
+ When you establish a stored access policy on a queue, it may take up to
+ 30 seconds to take effect. During this interval, a shared access signature
+ that is associated with the stored access policy will throw an
+ :class:`AzureHttpError` until the access policy becomes active.
+
+ :param str queue_name:
+ The name of an existing queue.
+ :param signed_identifiers:
+ A dictionary of access policies to associate with the queue. The
+ dictionary may contain up to 5 elements. An empty dictionary
+ will clear the access policies set on the service.
+ :type signed_identifiers: dict(str, :class:`~..common.models.AccessPolicy`)
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ '''
+ _validate_not_none('queue_name', queue_name)
+ _validate_access_policies(signed_identifiers)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name)
+ request.query = {
+ 'comp': 'acl',
+ 'timeout': _int_to_str(timeout),
+ }
+ request.body = _get_request_body(
+ _convert_signed_identifiers_to_xml(signed_identifiers))
+ self._perform_request(request)
+
+ def put_message(self, queue_name, content, visibility_timeout=None,
+ time_to_live=None, timeout=None):
+ '''
+ Adds a new message to the back of the message queue.
+
+ The visibility timeout specifies the time that the message will be
+ invisible. After the timeout expires, the message will become visible.
+ If a visibility timeout is not specified, the default value of 0 is used.
+
+ The message time-to-live specifies how long a message will remain in the
+ queue. The message will be deleted from the queue when the time-to-live
+ period expires.
+
+ If the key-encryption-key field is set on the local service object, this method will
+ encrypt the content before uploading.
+
+ :param str queue_name:
+ The name of the queue to put the message into.
+ :param obj content:
+ Message content. Allowed type is determined by the encode_function
+ set on the service. Default is str. The encoded message can be up to
+ 64KB in size.
+ :param int visibility_timeout:
+ If not specified, the default value is 0. Specifies the
+ new visibility timeout value, in seconds, relative to server time.
+ The value must be larger than or equal to 0, and cannot be
+ larger than 7 days. The visibility timeout of a message cannot be
+ set to a value later than the expiry time. visibility_timeout
+ should be set to a value smaller than the time-to-live value.
+ :param int time_to_live:
+ Specifies the time-to-live interval for the message, in
+ seconds. The time-to-live may be any positive number or -1 for infinity. If this
+ parameter is omitted, the default time-to-live is 7 days.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return:
+ A :class:`~azure.storage.queue.models.QueueMessage` object.
+ This object is also populated with the content although it is not
+ returned from the service.
+ :rtype: :class:`~azure.storage.queue.models.QueueMessage`
+ '''
+
+ _validate_encryption_required(self.require_encryption, self.key_encryption_key)
+
+ _validate_not_none('queue_name', queue_name)
+ _validate_not_none('content', content)
+ request = HTTPRequest()
+ request.method = 'POST'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name, True)
+ request.query = {
+ 'visibilitytimeout': _to_str(visibility_timeout),
+ 'messagettl': _to_str(time_to_live),
+ 'timeout': _int_to_str(timeout)
+ }
+
+ request.body = _get_request_body(_convert_queue_message_xml(content, self.encode_function,
+ self.key_encryption_key))
+
+ message_list = self._perform_request(request, _convert_xml_to_queue_messages,
+ [self.decode_function, False,
+ None, None, content])
+ return message_list[0]
+
+ def get_messages(self, queue_name, num_messages=None,
+ visibility_timeout=None, timeout=None):
+ '''
+ Retrieves one or more messages from the front of the queue.
+
+ When a message is retrieved from the queue, the response includes the message
+ content and a pop_receipt value, which is required to delete the message.
+ The message is not automatically deleted from the queue, but after it has
+ been retrieved, it is not visible to other clients for the time interval
+ specified by the visibility_timeout parameter.
+
+ If the key-encryption-key or resolver field is set on the local service object, the messages will be
+ decrypted before being returned.
+
+ :param str queue_name:
+ The name of the queue to get messages from.
+ :param int num_messages:
+ A nonzero integer value that specifies the number of
+ messages to retrieve from the queue, up to a maximum of 32. If
+ fewer are visible, the visible messages are returned. By default,
+ a single message is retrieved from the queue with this operation.
+ :param int visibility_timeout:
+ Specifies the new visibility timeout value, in seconds, relative
+ to server time. The new value must be larger than or equal to 1
+ second, and cannot be larger than 7 days. The visibility timeout of
+ a message can be set to a value later than the expiry time.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return: A :class:`~azure.storage.queue.models.QueueMessage` object representing the information passed.
+ :rtype: list(:class:`~azure.storage.queue.models.QueueMessage`)
+ '''
+ _validate_decryption_required(self.require_encryption, self.key_encryption_key,
+ self.key_resolver_function)
+
+ _validate_not_none('queue_name', queue_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name, True)
+ request.query = {
+ 'numofmessages': _to_str(num_messages),
+ 'visibilitytimeout': _to_str(visibility_timeout),
+ 'timeout': _int_to_str(timeout)
+ }
+
+ return self._perform_request(request, _convert_xml_to_queue_messages,
+ [self.decode_function, self.require_encryption,
+ self.key_encryption_key, self.key_resolver_function])
+
+ def peek_messages(self, queue_name, num_messages=None, timeout=None):
+ '''
+ Retrieves one or more messages from the front of the queue, but does
+ not alter the visibility of the message.
+
+ Only messages that are visible may be retrieved. When a message is retrieved
+ for the first time with a call to get_messages, its dequeue_count property
+ is set to 1. If it is not deleted and is subsequently retrieved again, the
+ dequeue_count property is incremented. The client may use this value to
+ determine how many times a message has been retrieved. Note that a call
+ to peek_messages does not increment the value of DequeueCount, but returns
+ this value for the client to read.
+
+ If the key-encryption-key or resolver field is set on the local service object, the messages will be
+ decrypted before being returned.
+
+ :param str queue_name:
+ The name of the queue to peek messages from.
+ :param int num_messages:
+ A nonzero integer value that specifies the number of
+ messages to peek from the queue, up to a maximum of 32. By default,
+ a single message is peeked from the queue with this operation.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return:
+ A list of :class:`~azure.storage.queue.models.QueueMessage` objects. Note that
+ time_next_visible and pop_receipt will not be populated as peek does
+ not pop the message and can only retrieve already visible messages.
+ :rtype: list(:class:`~azure.storage.queue.models.QueueMessage`)
+ '''
+
+ _validate_decryption_required(self.require_encryption, self.key_encryption_key,
+ self.key_resolver_function)
+
+ _validate_not_none('queue_name', queue_name)
+ request = HTTPRequest()
+ request.method = 'GET'
+ request.host_locations = self._get_host_locations(secondary=True)
+ request.path = _get_path(queue_name, True)
+ request.query = {
+ 'peekonly': 'true',
+ 'numofmessages': _to_str(num_messages),
+ 'timeout': _int_to_str(timeout)
+ }
+
+ return self._perform_request(request, _convert_xml_to_queue_messages,
+ [self.decode_function, self.require_encryption,
+ self.key_encryption_key, self.key_resolver_function])
+
+ def delete_message(self, queue_name, message_id, pop_receipt, timeout=None):
+ '''
+ Deletes the specified message.
+
+ Normally after a client retrieves a message with the get_messages operation,
+ the client is expected to process and delete the message. To delete the
+ message, you must have two items of data: id and pop_receipt. The
+ id is returned from the previous get_messages operation. The
+ pop_receipt is returned from the most recent :func:`~get_messages` or
+ :func:`~update_message` operation. In order for the delete_message operation
+ to succeed, the pop_receipt specified on the request must match the
+ pop_receipt returned from the :func:`~get_messages` or :func:`~update_message`
+ operation.
+
+ :param str queue_name:
+ The name of the queue from which to delete the message.
+ :param str message_id:
+ The message id identifying the message to delete.
+ :param str pop_receipt:
+ A valid pop receipt value returned from an earlier call
+ to the :func:`~get_messages` or :func:`~update_message`.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ '''
+ _validate_not_none('queue_name', queue_name)
+ _validate_not_none('message_id', message_id)
+ _validate_not_none('pop_receipt', pop_receipt)
+ request = HTTPRequest()
+ request.method = 'DELETE'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name, True, message_id)
+ request.query = {
+ 'popreceipt': _to_str(pop_receipt),
+ 'timeout': _int_to_str(timeout)
+ }
+ self._perform_request(request)
+
+ def clear_messages(self, queue_name, timeout=None):
+ '''
+ Deletes all messages from the specified queue.
+
+ :param str queue_name:
+ The name of the queue whose messages to clear.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ '''
+ _validate_not_none('queue_name', queue_name)
+ request = HTTPRequest()
+ request.method = 'DELETE'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name, True)
+ request.query = {'timeout': _int_to_str(timeout)}
+ self._perform_request(request)
+
+ def update_message(self, queue_name, message_id, pop_receipt, visibility_timeout,
+ content=None, timeout=None):
+ '''
+ Updates the visibility timeout of a message. You can also use this
+ operation to update the contents of a message.
+
+ This operation can be used to continually extend the invisibility of a
+ queue message. This functionality can be useful if you want a worker role
+ to "lease" a queue message. For example, if a worker role calls get_messages
+ and recognizes that it needs more time to process a message, it can
+ continually extend the message's invisibility until it is processed. If
+ the worker role were to fail during processing, eventually the message
+ would become visible again and another worker role could process it.
+
+ If the key-encryption-key field is set on the local service object, this method will
+ encrypt the content before uploading.
+
+ :param str queue_name:
+ The name of the queue containing the message to update.
+ :param str message_id:
+ The message id identifying the message to update.
+ :param str pop_receipt:
+ A valid pop receipt value returned from an earlier call
+ to the :func:`~get_messages` or :func:`~update_message` operation.
+ :param int visibility_timeout:
+ Specifies the new visibility timeout value, in seconds,
+ relative to server time. The new value must be larger than or equal
+ to 0, and cannot be larger than 7 days. The visibility timeout of a
+ message cannot be set to a value later than the expiry time. A
+ message can be updated until it has been deleted or has expired.
+ :param obj content:
+ Message content. Allowed type is determined by the encode_function
+ set on the service. Default is str.
+ :param int timeout:
+ The server timeout, expressed in seconds.
+ :return:
+ A list of :class:`~azure.storage.queue.models.QueueMessage` objects. For convenience,
+ this object is also populated with the content, although it is not returned by the service.
+ :rtype: list(:class:`~azure.storage.queue.models.QueueMessage`)
+ '''
+
+ _validate_encryption_required(self.require_encryption, self.key_encryption_key)
+
+ _validate_not_none('queue_name', queue_name)
+ _validate_not_none('message_id', message_id)
+ _validate_not_none('pop_receipt', pop_receipt)
+ _validate_not_none('visibility_timeout', visibility_timeout)
+ request = HTTPRequest()
+ request.method = 'PUT'
+ request.host_locations = self._get_host_locations()
+ request.path = _get_path(queue_name, True, message_id)
+ request.query = {
+ 'popreceipt': _to_str(pop_receipt),
+ 'visibilitytimeout': _int_to_str(visibility_timeout),
+ 'timeout': _int_to_str(timeout)
+ }
+
+ if content is not None:
+ request.body = _get_request_body(_convert_queue_message_xml(content, self.encode_function,
+ self.key_encryption_key))
+
+ return self._perform_request(request, _parse_queue_message_from_headers)
diff --git a/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/sharedaccesssignature.py b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/sharedaccesssignature.py
new file mode 100644
index 00000000000..1cf585a48b6
--- /dev/null
+++ b/src/storage-preview/azext_storage_preview/vendored_sdks/azure_storage/v2017_11_09/queue/sharedaccesssignature.py
@@ -0,0 +1,81 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+from ..common.sharedaccesssignature import (
+ SharedAccessSignature,
+ _SharedAccessHelper,
+)
+from ._constants import X_MS_VERSION
+
+
+class QueueSharedAccessSignature(SharedAccessSignature):
+ '''
+ Provides a factory for creating queue shares access
+ signature tokens with a common account name and account key. Users can either
+ use the factory or can construct the appropriate service and use the
+ generate_*_shared_access_signature method directly.
+ '''
+
+ def __init__(self, account_name, account_key):
+ '''
+ :param str account_name:
+ The storage account name used to generate the shared access signatures.
+ :param str account_key:
+ The access key to generate the shares access signatures.
+ '''
+ super(QueueSharedAccessSignature, self).__init__(account_name, account_key, x_ms_version=X_MS_VERSION)
+
+ def generate_queue(self, queue_name, permission=None,
+ expiry=None, start=None, id=None,
+ ip=None, protocol=None):
+ '''
+ Generates a shared access signature for the queue.
+ Use the returned signature with the sas_token parameter of QueueService.
+
+ :param str queue_name:
+ Name of queue.
+ :param QueuePermissions permission:
+ The permissions associated with the shared access signature. The
+ user is restricted to operations allowed by the permissions.
+ Permissions must be ordered read, add, update, process.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has been
+ specified in an associated stored access policy.
+ :param expiry:
+ The time at which the shared access signature becomes invalid.
+ Required unless an id is given referencing a stored access policy
+ which contains this field. This field must be omitted if it has
+ been specified in an associated stored access policy. Azure will always
+ convert values to UTC. If a date is passed in without timezone info, it
+ is assumed to be UTC.
+ :type expiry: datetime or str
+ :param start:
+ The time at which the shared access signature becomes valid. If
+ omitted, start time for this call is assumed to be the time when the
+ storage service receives the request. Azure will always convert values
+ to UTC. If a date is passed in without timezone info, it is assumed to
+ be UTC.
+ :type start: datetime or str
+ :param str id:
+ A unique value up to 64 characters in length that correlates to a
+ stored access policy. To create a stored access policy, use
+ set_blob_service_properties.
+ :param str ip:
+ Specifies an IP address or a range of IP addresses from which to accept requests.
+ If the IP address from which the request originates does not match the IP address
+ or address range specified on the SAS token, the request is not authenticated.
+ For example, specifying sip=168.1.5.65 or sip=168.1.5.60-168.1.5.70 on the SAS
+ restricts the request to those IP addresses.
+ :param str protocol:
+ Specifies the protocol permitted for a request made. The default value
+ is https,http. See :class:`~..common.models.Protocol` for possible values.
+ '''
+ sas = _SharedAccessHelper()
+ sas.add_base(permission, expiry, start, ip, protocol, self.x_ms_version)
+ sas.add_id(id)
+ sas.add_resource_signature(self.account_name, self.account_key, 'queue', queue_name)
+
+ return sas.get_token()