diff --git a/azure-cli.pyproj b/azure-cli.pyproj index 1631938cdb4..dfacbea8381 100644 --- a/azure-cli.pyproj +++ b/azure-cli.pyproj @@ -39,8 +39,20 @@ + + Code + + + + + + Code + + + Code + @@ -62,6 +74,18 @@ Code + + Code + + + Code + + + Code + + + Code + @@ -70,8 +94,20 @@ Code + + Code + + + Code + + + Code + + + Code + @@ -82,7 +118,6 @@ - @@ -139,10 +174,6 @@ - - - - @@ -167,6 +198,10 @@ + + Code + + Code diff --git a/src/azure/cli/commands/__init__.py b/src/azure/cli/commands/__init__.py index ceb0ad09942..99af12c819f 100644 --- a/src/azure/cli/commands/__init__.py +++ b/src/azure/cli/commands/__init__.py @@ -20,49 +20,46 @@ logger.info('Installed command modules %s', INSTALLED_COMMAND_MODULES) -RESOURCE_GROUP_ARG_NAME = 'resource_group_name' - COMMON_PARAMETERS = { 'deployment_name': { 'name': '--deployment-name', 'metavar': 'DEPLOYMENTNAME', 'help': 'Name of the resource deployment', 'default': 'azurecli' + str(time.time()) + str(random.randint(0, 10000000)), - 'required': False }, 'location': { 'name': '--location -l', 'metavar': 'LOCATION', 'help': 'Location', - 'required': True }, 'resource_group_name': { 'name': '--resource-group -g', - 'dest': RESOURCE_GROUP_ARG_NAME, 'metavar': 'RESOURCEGROUP', 'help': 'The name of the resource group', - 'required': True }, 'tag' : { 'name': '--tag', 'metavar': 'TAG', 'help': L('a single tag in \'key[=value]\' format'), - 'required': False, 'type': validate_tag }, 'tags' : { 'name': '--tags', 'metavar': 'TAGS', 'help': L('multiple semicolon separated tags in \'key[=value]\' format'), - 'required': False, 'type': validate_tags }, } def extend_parameter(parameter_metadata, **kwargs): - modified_parameter_metadata = parameter_metadata.copy() - modified_parameter_metadata.update(kwargs) - return modified_parameter_metadata + extended_param = parameter_metadata.copy() + extended_param.update(kwargs) + return extended_param + +def patch_aliases(aliases, patch): + patched_aliases = aliases.copy() + patched_aliases.update(patch) + return patched_aliases class LongRunningOperation(object): #pylint: disable=too-few-public-methods diff --git a/src/azure/cli/commands/_auto_command.py b/src/azure/cli/commands/_auto_command.py index 4aa1214b46f..c773ec0c9f7 100644 --- a/src/azure/cli/commands/_auto_command.py +++ b/src/azure/cli/commands/_auto_command.py @@ -8,9 +8,9 @@ from ..commands import COMMON_PARAMETERS EXCLUDED_PARAMS = frozenset(['self', 'raw', 'custom_headers', 'operation_config', - 'content_version']) + 'content_version', 'kwargs']) -class AutoCommandDefinition(object): #pylint: disable=too-few-public-methods +class CommandDefinition(object): #pylint: disable=too-few-public-methods def __init__(self, operation, return_type, command_alias=None): self.operation = operation @@ -35,13 +35,15 @@ def _get_member(obj, path): pass return obj -def _make_func(client_factory, member_path, return_type_or_func, unbound_func): - def call_client(args): - client = client_factory(args) +def _make_func(client_factory, member_path, return_type_or_func, unbound_func, extra_parameters): + def call_client(kwargs): + client = client_factory(**kwargs) + for param in extra_parameters.keys() if extra_parameters else []: + kwargs.pop(param) ops_instance = _get_member(client, member_path) try: - result = unbound_func(ops_instance, **args) + result = unbound_func(ops_instance, **kwargs) if not return_type_or_func: return {} if callable(return_type_or_func): @@ -59,32 +61,33 @@ def call_client(args): def _option_descriptions(operation): """Pull out parameter help from doccomments of the command """ - lines = inspect.getdoc(operation).splitlines() option_descs = {} - index = 0 - while index < len(lines): - l = lines[index] - regex = r'\s*(:param)\s+(.+)\s*:(.*)' - match = re.search(regex, l) - if match: - # 'arg name' portion might have type info, we don't need it - arg_name = str.split(match.group(2))[-1] - arg_desc = match.group(3).strip() - #look for more descriptions on subsequent lines - index += 1 - while index < len(lines): - temp = lines[index].strip() - if temp.startswith(':'): - break - else: - if temp: - arg_desc += (' ' + temp) - index += 1 - - option_descs[arg_name] = arg_desc - else: - index += 1 - + lines = inspect.getdoc(operation) + if lines: + lines = lines.splitlines() + index = 0 + while index < len(lines): + l = lines[index] + regex = r'\s*(:param)\s+(.+)\s*:(.*)' + match = re.search(regex, l) + if match: + # 'arg name' portion might have type info, we don't need it + arg_name = str.split(match.group(2))[-1] + arg_desc = match.group(3).strip() + #look for more descriptions on subsequent lines + index += 1 + while index < len(lines): + temp = lines[index].strip() + if temp.startswith(':'): + break + else: + if temp: + arg_desc += (' ' + temp) + index += 1 + + option_descs[arg_name] = arg_desc + else: + index += 1 return option_descs @@ -99,7 +102,7 @@ def build_operation(command_name, for op in operations: - func = _make_func(client_type, member_path, op.return_type, op.operation) + func = _make_func(client_type, member_path, op.return_type, op.operation, extra_parameters) args = [] try: @@ -152,8 +155,8 @@ def build_operation(command_name, # append any 'extra' args needed (for example to obtain a client) that aren't required # by the SDK. if extra_parameters: - for arg in extra_parameters: - options.append(arg.copy()) + for arg in extra_parameters.keys(): + options.append(extra_parameters[arg].copy()) command_table[func] = { 'name': ' '.join([command_name, op.opname]), diff --git a/src/azure/cli/tests/test_autocommand.py b/src/azure/cli/tests/test_autocommand.py index ae740cf3ed5..c0c2b690a32 100644 --- a/src/azure/cli/tests/test_autocommand.py +++ b/src/azure/cli/tests/test_autocommand.py @@ -3,7 +3,7 @@ from azure.cli.commands._auto_command import build_operation, _option_descriptions from azure.cli.commands import CommandTable -from azure.cli.commands._auto_command import AutoCommandDefinition +from azure.cli.commands._auto_command import CommandDefinition from azure.cli.main import main as cli from six import StringIO @@ -45,7 +45,7 @@ def test_autocommand_basic(self): "", None, [ - AutoCommandDefinition(Test_autocommand.sample_vm_get, None) + CommandDefinition(Test_autocommand.sample_vm_get, None) ], command_table) @@ -78,7 +78,7 @@ def test_autocommand_with_parameter_alias(self): "", None, [ - AutoCommandDefinition(Test_autocommand.sample_vm_get, None) + CommandDefinition(Test_autocommand.sample_vm_get, None) ], command_table, VM_SPECIFIC_PARAMS @@ -99,19 +99,19 @@ def test_autocommand_with_parameter_alias(self): def test_autocommand_with_extra_parameters(self): command_table = CommandTable() - NEW_PARAMETERS= [ - { + NEW_PARAMETERS = { + 'added_param': { 'name': '--added-param', 'metavar': 'ADDED', 'help': 'Just added this right now!', 'required': True } - ] + } build_operation("test autocommand", "", None, [ - AutoCommandDefinition(Test_autocommand.sample_vm_get, None) + CommandDefinition(Test_autocommand.sample_vm_get, None) ], command_table, None, NEW_PARAMETERS @@ -137,7 +137,7 @@ def test_autocommand_with_command_alias(self): "", None, [ - AutoCommandDefinition(Test_autocommand.sample_vm_get, None, 'woot') + CommandDefinition(Test_autocommand.sample_vm_get, None, 'woot') ], command_table ) @@ -165,7 +165,7 @@ def sample_sdk_method_with_weired_docstring(self, param_a, param_b, param_c): "", None, [ - AutoCommandDefinition(sample_sdk_method_with_weired_docstring, None) + CommandDefinition(sample_sdk_method_with_weired_docstring, None) ], command_table) diff --git a/src/azure/cli/tests/test_test_script.py b/src/azure/cli/tests/test_test_script.py new file mode 100644 index 00000000000..66279927fc9 --- /dev/null +++ b/src/azure/cli/tests/test_test_script.py @@ -0,0 +1,45 @@ +import json +import unittest +from six import StringIO + +from azure.cli.utils.command_test_script import _check_json as check_json + +class Test_test_script_checks(unittest.TestCase): + + @classmethod + def setUpClass(cls): + pass + + @classmethod + def tearDownClass(cls): + pass + + def setUp(self): + self.io = StringIO() + + def tearDown(self): + self.io.close() + + def test_json_string(self): + ''' Verify a simple string value can be used to match a property on a source object. ''' + source = json.loads(json.dumps({'a': 'b', 'c': 'd'})) + check = {'c': 'd'} + check_json(source, check) + + def test_json_dict(self): + ''' Verify a dict can be used to search within child objects without having to match the + child object exactly.''' + source = json.loads(json.dumps({'a': {'foo': 'bar', 'fizz': 'buzz'}})) + check = {'a': {'fizz': 'buzz'}} + check_json(source, check) + + def test_json_list(self): + ''' Verify that if the source is a list, the check need only pass for any element of the + list. ''' + source = json.loads(json.dumps([{'a': {'b': 1, 'c': 2}}, {'a': {'b': 3, 'c': 5}}])) + check = {'a': {'c': 5}} + check_json(source, check) + + +if __name__ == '__main__': + unittest.main() diff --git a/src/azure/cli/utils/command_test_script.py b/src/azure/cli/utils/command_test_script.py index 5892bcc0892..ba84363fa1a 100644 --- a/src/azure/cli/utils/command_test_script.py +++ b/src/azure/cli/utils/command_test_script.py @@ -9,6 +9,7 @@ from azure.cli.main import main as cli from azure.cli.parser import IncorrectUsageError +from azure.cli._util import CLIError class JMESPathComparatorAssertionError(AssertionError): @@ -34,12 +35,31 @@ def compare(self, json_data): if not actual_result == self.expected_result: raise JMESPathComparatorAssertionError(self, actual_result, json_data) +def _check_json(source, checks): + + def _check_json_child(item, checks): + for check in checks.keys(): + if isinstance(checks[check], dict) and check in item: + return _check_json_child(item[check], checks[check]) + else: + return item[check] == checks[check] + + if not isinstance(source, list): + source = [source] + passed = False + for item in source: + passed = _check_json_child(item, checks) + if passed: + break + return passed + class CommandTestScript(object): #pylint: disable=too-many-instance-attributes def __init__(self, set_up, test_body, tear_down): self._display = StringIO() self._raw = StringIO() self.display_result = '' + self.debug = False self.raw_result = '' self.auto = True self.fail = False @@ -71,6 +91,8 @@ def rec(self, command): save the output to a display file so you can see the command, followed by its output in order to determine if the output is acceptable. Invoking this command in a script turns off the flag that signals the test is fully automatic. ''' + if self.debug: + print('RECORDING: {}'.format(command)) self.auto = False output = StringIO() command_list = command if isinstance(command, list) else command.split() @@ -84,6 +106,8 @@ def rec(self, command): def run(self, command): #pylint: disable=no-self-use ''' Run a command without recording the output as part of expected results. Useful if you need to run a command for branching logic or just to reset back to a known condition. ''' + if self.debug: + print('RUNNING: {}'.format(command)) output = StringIO() command_list = command if isinstance(command, list) else command.split() cli(command_list, file=output) @@ -95,45 +119,44 @@ def test(self, command, checks): ''' Runs a command with the json output format and validates the input against the provided checks. Multiple JSON properties can be submitted as a dictionary and are treated as an AND condition. ''' - def _check_json(source, checks): - for check in checks.keys(): - if isinstance(checks[check], dict) and check in source: - _check_json(source[check], checks[check]) - else: - assert source[check] == checks[check] - + if self.debug: + print('TESTING: {}'.format(command)) output = StringIO() command_list = command if isinstance(command, list) else command.split() command_list += ['-o', 'json'] cli(command_list, file=output) result = output.getvalue().strip() self._raw.write(result) - if isinstance(checks, list) and all( - isinstance(comparator, JMESPathComparator) for comparator in checks): - for comparator in checks: - comparator.compare(result) - elif isinstance(checks, JMESPathComparator): - checks.compare(result) - elif isinstance(checks, bool): - result_val = str(result).lower().replace('"', '') - bool_val = result_val in ('yes', 'true', 't', '1') - assert bool_val == checks - elif isinstance(checks, str): - assert result.replace('"', '') == checks - elif isinstance(checks, dict): - json_val = json.loads(result) - _check_json(json_val, checks) - elif checks is None: - assert result is None or result == '' - else: - raise IncorrectUsageError('unsupported type \'{}\' in test'.format(type(checks))) + try: + if isinstance(checks, list) and all( + isinstance(comparator, JMESPathComparator) for comparator in checks): + for comparator in checks: + comparator.compare(result) + elif isinstance(checks, JMESPathComparator): + checks.compare(result) + elif isinstance(checks, bool): + result_val = str(result).lower().replace('"', '') + result = result_val in ('yes', 'true', 't', '1') + assert result == checks + elif isinstance(checks, str): + assert result.replace('"', '') == checks + elif isinstance(checks, dict): + json_val = json.loads(result) + assert _check_json(json_val, checks) + elif checks is None: + assert result is None or result == '' + else: + raise IncorrectUsageError('unsupported type \'{}\' in test'.format(type(checks))) + except AssertionError: + raise CLIError('COMMAND {} FAILED. Result: {} Checks: {}'.format( + command, result, checks)) def set_env(self, key, val): #pylint: disable=no-self-use os.environ[key] = val def pop_env(self, key): #pylint: disable=no-self-use return os.environ.pop(key, None) - def print_(self, string): + def display(self, string): ''' Write free text to the display output only. This text will not be included in the raw saved output and using this command does not flag a test as requiring manual verification. ''' diff --git a/src/azure/cli/utils/command_test_util.py b/src/azure/cli/utils/command_test_util.py index ca3b6008aaa..3ace687c47b 100644 --- a/src/azure/cli/utils/command_test_util.py +++ b/src/azure/cli/utils/command_test_util.py @@ -16,6 +16,7 @@ import vcr from azure.cli.main import main as cli +from azure.cli._util import CLIError class CommandTestGenerator(object): @@ -178,7 +179,7 @@ def test(self): _test_impl(self, test_name, expected, recording_dir) else: # yaml file failed to delete or bug exists - raise RuntimeError('Unable to generate test for {} due to inconsistent data. ' \ + raise CLIError('Unable to generate test for {} due to inconsistent data. ' \ + 'Please manually remove the associated .yaml cassette and/or the test\'s ' \ + 'entry in expected_results.res and try again.') return test diff --git a/src/command_modules/azure-cli-component/azure/cli/command_modules/component/__init__.py b/src/command_modules/azure-cli-component/azure/cli/command_modules/component/__init__.py index 3b140ed80e4..c4578d074f0 100644 --- a/src/command_modules/azure-cli-component/azure/cli/command_modules/component/__init__.py +++ b/src/command_modules/azure-cli-component/azure/cli/command_modules/component/__init__.py @@ -1,154 +1,2 @@ -from __future__ import print_function -import os -import pip -from six.moves import input #pylint: disable=redefined-builtin - -from azure.cli.parser import IncorrectUsageError -from azure.cli.commands import CommandTable -from azure.cli._locale import L - -from azure.cli.utils.update_checker import check_for_component_update -from azure.cli._util import CLIError - -CLI_PACKAGE_NAME = 'azure-cli' -COMPONENT_PREFIX = 'azure-cli-' - -PRIVATE_PYPI_URL_ENV_NAME = 'AZURE_CLI_PRIVATE_PYPI_URL' -PRIVATE_PYPI_URL = os.environ.get(PRIVATE_PYPI_URL_ENV_NAME) -PRIVATE_PYPI_HOST_ENV_NAME = 'AZURE_CLI_PRIVATE_PYPI_HOST' -PRIVATE_PYPI_HOST = os.environ.get(PRIVATE_PYPI_HOST_ENV_NAME) - -command_table = CommandTable() - -@command_table.command('component list') -@command_table.description(L('List the installed components.')) -def list_components(args): #pylint: disable=unused-argument - return sorted([{'name': dist.key.replace(COMPONENT_PREFIX, ''), 'version': dist.version} - for dist in pip.get_installed_distributions(local_only=True) - if dist.key.startswith(COMPONENT_PREFIX)], key=lambda x: x['name']) - -def _install_or_update(component_name, version, link, private, upgrade=False): - if not component_name: - raise IncorrectUsageError(L('Specify a component name.')) - found = bool([dist for dist in pip.get_installed_distributions(local_only=True) - if dist.key == COMPONENT_PREFIX + component_name]) - if found and not upgrade: - raise CLIError('Component already installed.') - else: - version_no = '==' + version if version else '' - options = ['--quiet', '--isolated', '--disable-pip-version-check'] - if upgrade: - options.append('--upgrade') - pkg_index_options = [] - if link: - pkg_index_options += ['--find-links', link] - if private: - if not PRIVATE_PYPI_URL: - raise CLIError('{} environment variable not set.' - .format(PRIVATE_PYPI_URL_ENV_NAME)) - if not PRIVATE_PYPI_HOST: - raise CLIError('{} environment variable not set.' - .format(PRIVATE_PYPI_HOST_ENV_NAME)) - pkg_index_options += ['--extra-index-url', PRIVATE_PYPI_URL, - '--trusted-host', PRIVATE_PYPI_HOST] - pip.main(['install'] + options + [COMPONENT_PREFIX + component_name+version_no] - + pkg_index_options) - -@command_table.command('component install') -@command_table.description(L('Install a component')) -@command_table.option('--name -n', help=L('Name of component to install'), required=True) -@command_table.option('--version', help=L('Component version (otherwise latest)')) -@command_table.option('--link -l', help=L("If a url or path to an html file, then parse \ -for links to archives. If a local path or \ -file:// url that's a directory,then look for \ -archives in the directory listing.")) -@command_table.option('--private -p', action='store_true', - help=L('Get from the project private PyPI server')) -def install_component(args): - _install_or_update(args.get('name'), args.get('version'), args.get('link'), - args.get('private'), upgrade=False) - -@command_table.command('component update') -@command_table.description(L('Update a component')) -@command_table.option('--name -n', help=L('Name of component to install'), required=True) -@command_table.option('--link -l', help=L("If a url or path to an html file, then parse \ -for links to archives. If a local path or \ -file:// url that's a directory,then look for \ -archives in the directory listing.")) -@command_table.option('--private -p', action='store_true', - help=L('Get from the project private PyPI server')) -def update_component(args): - _install_or_update(args.get('name'), None, args.get('link'), args.get('private'), upgrade=True) - -@command_table.command('component update-self') -@command_table.description(L('Update the CLI')) -@command_table.option('--private -p', action='store_true', - help=L('Get from the project private PyPI server')) -def update_self(args): - pkg_index_options = [] - if args.get('private'): - if not PRIVATE_PYPI_URL: - raise CLIError('{} environment variable not set.' - .format(PRIVATE_PYPI_URL_ENV_NAME)) - if not PRIVATE_PYPI_HOST: - raise CLIError('{} environment variable not set.' - .format(PRIVATE_PYPI_HOST_ENV_NAME)) - pkg_index_options += ['--extra-index-url', PRIVATE_PYPI_URL, - '--trusted-host', PRIVATE_PYPI_HOST] - pip.main(['install', '--quiet', '--isolated', '--disable-pip-version-check', '--upgrade'] - + [CLI_PACKAGE_NAME] + pkg_index_options) - -@command_table.command('component update-all') -@command_table.description(L('Update all components')) -@command_table.option('--link -l', help=L("If a url or path to an html file, then parse \ -for links to archives. If a local path or \ -file:// url that's a directory,then look for \ -archives in the directory listing.")) -@command_table.option('--private -p', action='store_true', - help=L('Get from the project private PyPI server')) -def update_all_components(args): - component_names = [dist.key.replace(COMPONENT_PREFIX, '') - for dist in pip.get_installed_distributions(local_only=True) - if dist.key.startswith(COMPONENT_PREFIX)] - for component_name in component_names: - _install_or_update(component_name, None, args.get('link'), - args.get('private'), upgrade=True) - -@command_table.command('component check') -@command_table.description(L('Check a component for an update')) -@command_table.option('--name -n', help=L('Name of component to remove'), required=True) -@command_table.option('--private -p', action='store_true', - help=L('Look for updates from the project private PyPI server')) -def check_component(args): - component_name = args.get('name') - private = args.get('private') - found = bool([dist for dist in pip.get_installed_distributions(local_only=True) - if dist.key == COMPONENT_PREFIX+component_name]) - if not found: - raise CLIError(L("Component not installed.")) - update_status = check_for_component_update(component_name, private) - result = {} - result['currentVersion'] = str(update_status['current_version']) - result['latestVersion'] = str(update_status['latest_version']) - result['updateAvailable'] = update_status['update_available'] - return result - -@command_table.command('component remove') -@command_table.description(L('Remove a component')) -@command_table.option('--name -n', help=L('Name of component to remove'), required=True) -@command_table.option('--force -f', action='store_true', - help=L('supress delete confirmation prompt')) -def remove_component(args): - component_name = args.get('name') - prompt_for_delete = args.get('force') is None - found = bool([dist for dist in pip.get_installed_distributions(local_only=True) - if dist.key == COMPONENT_PREFIX+component_name]) - if found: - if prompt_for_delete: - ans = input("Really delete '{}'? [y/N] ".format(component_name)) - if not ans or ans[0].lower() != 'y': - return - pip.main(['uninstall', '--quiet', '--isolated', '--yes', - '--disable-pip-version-check', COMPONENT_PREFIX+component_name]) - else: - raise CLIError(L("Component not installed.")) +# pylint: disable=unused-import +from .generated import command_table diff --git a/src/command_modules/azure-cli-component/azure/cli/command_modules/component/_params.py b/src/command_modules/azure-cli-component/azure/cli/command_modules/component/_params.py new file mode 100644 index 00000000000..2c19386e9a7 --- /dev/null +++ b/src/command_modules/azure-cli-component/azure/cli/command_modules/component/_params.py @@ -0,0 +1,30 @@ +from azure.cli._locale import L + +# BASIC PARAMETER CONFIGURATION + +PARAMETER_ALIASES = { + 'component_name': { + 'name': '--name -n', + 'help': L('Name of component'), + }, + 'force': { + 'name': '--force -f', + 'help': L('Suppress delete confirmation prompt'), + 'action': 'store_true' + }, + 'link': { + 'name': '--link -l', + 'help': L('If a url or path to an html file, the parse for links to archives. If local ' + \ + 'path or file:// url that\'s a directory, then look for archives in the ' + \ + 'directory listing.') + }, + 'private': { + 'name': '--private -p', + 'action': 'store_true', + 'help': L('Get from the project PyPI server') + }, + 'version': { + 'name': '--version', + 'help': L('Component version (otherwise latest)') + } +} diff --git a/src/command_modules/azure-cli-component/azure/cli/command_modules/component/custom.py b/src/command_modules/azure-cli-component/azure/cli/command_modules/component/custom.py new file mode 100644 index 00000000000..f60915ae2d0 --- /dev/null +++ b/src/command_modules/azure-cli-component/azure/cli/command_modules/component/custom.py @@ -0,0 +1,142 @@ +# pylint: disable=no-self-use +from __future__ import print_function +import os +import pip +from six.moves import input #pylint: disable=redefined-builtin + +from azure.cli.parser import IncorrectUsageError +from azure.cli._locale import L +from azure.cli._help_files import helps +from azure.cli.utils.update_checker import check_for_component_update +from azure.cli._util import CLIError + +CLI_PACKAGE_NAME = 'azure-cli' +COMPONENT_PREFIX = 'azure-cli-' + +PRIVATE_PYPI_URL_ENV_NAME = 'AZURE_CLI_PRIVATE_PYPI_URL' +PRIVATE_PYPI_URL = os.environ.get(PRIVATE_PYPI_URL_ENV_NAME) +PRIVATE_PYPI_HOST_ENV_NAME = 'AZURE_CLI_PRIVATE_PYPI_HOST' +PRIVATE_PYPI_HOST = os.environ.get(PRIVATE_PYPI_HOST_ENV_NAME) + +def _install_or_update(component_name, version, link, private, upgrade=False): + if not component_name: + raise IncorrectUsageError(L('Specify a component name.')) + found = bool([dist for dist in pip.get_installed_distributions(local_only=True) + if dist.key == COMPONENT_PREFIX + component_name]) + if found and not upgrade: + raise CLIError("Component already installed.") + else: + version_no = '==' + version if version else '' + options = ['--quiet', '--isolated', '--disable-pip-version-check'] + if upgrade: + options.append('--upgrade') + pkg_index_options = [] + if link: + pkg_index_options += ['--find-links', link] + if private: + if not PRIVATE_PYPI_URL: + raise CLIError('{} environment variable not set.' + .format(PRIVATE_PYPI_URL_ENV_NAME)) + if not PRIVATE_PYPI_HOST: + raise CLIError('{} environment variable not set.' + .format(PRIVATE_PYPI_HOST_ENV_NAME)) + pkg_index_options += ['--extra-index-url', PRIVATE_PYPI_URL, + '--trusted-host', PRIVATE_PYPI_HOST] + pip.main(['install'] + options + [COMPONENT_PREFIX + component_name+version_no] + + pkg_index_options) + +class ComponentCommands(object): + + def __init__(self, **_): + pass + + helps['component list'] = """ + short-summary: List the installed components + """ + def list(self): + return sorted([{'name': dist.key.replace(COMPONENT_PREFIX, ''), 'version': dist.version} + for dist in pip.get_installed_distributions(local_only=True) + if dist.key.startswith(COMPONENT_PREFIX)], key=lambda x: x['name']) + + helps['component install'] = """ + short-summary: Install a component + parameters: + - name: --name -n + short-summary: The component name to install. + """ + def install(self, component_name, link, private=False, version=None): + _install_or_update(component_name, version, link, private, upgrade=False) + + helps['component update'] = """ + short-summary: Update a component + parameters: + - name: --name -n + short-summary: The component name to update. + """ + def update(self, component_name, link, private=False): + _install_or_update(component_name, None, link, private, upgrade=True) + + helps['component update-self'] = """ + short-summary: Update the CLI + """ + def update_self(self, private=False): + pkg_index_options = [] + if private: + if not PRIVATE_PYPI_URL: + raise CLIError('{} environment variable not set.' + .format(PRIVATE_PYPI_URL_ENV_NAME)) + if not PRIVATE_PYPI_HOST: + raise CLIError('{} environment variable not set.' + .format(PRIVATE_PYPI_HOST_ENV_NAME)) + pkg_index_options += ['--extra-index-url', PRIVATE_PYPI_URL, + '--trusted-host', PRIVATE_PYPI_HOST] + pip.main(['install', '--quiet', '--isolated', '--disable-pip-version-check', '--upgrade'] + + [CLI_PACKAGE_NAME] + pkg_index_options) + + helps['component update-all'] = """ + short-summary: Update all components + """ + def update_all(self, link, private=False): + component_names = [dist.key.replace(COMPONENT_PREFIX, '') + for dist in pip.get_installed_distributions(local_only=True) + if dist.key.startswith(COMPONENT_PREFIX)] + for name in component_names: + _install_or_update(name, None, link, private, upgrade=True) + + helps['component check'] = """ + short-summary: Check a component for an update + parameters: + - name: --name -n + short-summary: The component name to check. + """ + def check_component(self, component_name, private=False): + found = bool([dist for dist in pip.get_installed_distributions(local_only=True) + if dist.key == COMPONENT_PREFIX + component_name]) + if not found: + raise CLIError(L("Component not installed.")) + update_status = check_for_component_update(component_name, private) + result = {} + result['currentVersion'] = str(update_status['current_version']) + result['latestVersion'] = str(update_status['latest_version']) + result['updateAvailable'] = update_status['update_available'] + return result + + helps['component remove'] = """ + short-summary: Remove a component + parameters: + - name: --name -n + short-summary: The component name to remove. + """ + def remove(self, component_name, force=False): + prompt_for_delete = force is None + found = bool([dist for dist in pip.get_installed_distributions(local_only=True) + if dist.key == COMPONENT_PREFIX + component_name]) + if found: + if prompt_for_delete: + ans = input("Really delete '{}'? [y/N] ".format(component_name)) + if not ans or ans[0].lower() != 'y': + return + pip.main(['uninstall', '--quiet', '--isolated', '--yes', + '--disable-pip-version-check', COMPONENT_PREFIX + component_name]) + else: + raise CLIError(L("Component not installed.")) diff --git a/src/command_modules/azure-cli-component/azure/cli/command_modules/component/generated.py b/src/command_modules/azure-cli-component/azure/cli/command_modules/component/generated.py new file mode 100644 index 00000000000..28b900342ca --- /dev/null +++ b/src/command_modules/azure-cli-component/azure/cli/command_modules/component/generated.py @@ -0,0 +1,28 @@ +from __future__ import print_function + +from azure.cli.commands import CommandTable +from azure.cli.commands._auto_command import build_operation, CommandDefinition + +from ._params import PARAMETER_ALIASES +from .custom import ComponentCommands + +command_table = CommandTable() + +# HELPER METHODS + +def _patch_aliases(alias_items): + aliases = PARAMETER_ALIASES.copy() + aliases.update(alias_items) + return aliases + +build_operation( + 'component', None, ComponentCommands, + [ + CommandDefinition(ComponentCommands.list, '[Component]'), + CommandDefinition(ComponentCommands.install, 'Result'), + CommandDefinition(ComponentCommands.update, 'Result'), + CommandDefinition(ComponentCommands.update_all, 'Result'), + CommandDefinition(ComponentCommands.update_self, 'Result'), + CommandDefinition(ComponentCommands.remove, 'Result'), + CommandDefinition(ComponentCommands.check_component, 'Result', 'check') + ], command_table, PARAMETER_ALIASES) diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/__init__.py b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/__init__.py index c15bffaa1b2..c4578d074f0 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/__init__.py +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/__init__.py @@ -1,389 +1,2 @@ -from azure.mgmt.network import NetworkManagementClient, NetworkManagementClientConfiguration -from azure.mgmt.network.operations import (ApplicationGatewaysOperations, - ExpressRouteCircuitAuthorizationsOperations, - ExpressRouteCircuitPeeringsOperations, - ExpressRouteCircuitsOperations, - ExpressRouteServiceProvidersOperations, - LoadBalancersOperations, - LocalNetworkGatewaysOperations, - NetworkInterfacesOperations, - NetworkSecurityGroupsOperations, - PublicIPAddressesOperations, - RouteTablesOperations, - RoutesOperations, - SecurityRulesOperations, - SubnetsOperations, - UsagesOperations, - VirtualNetworkGatewayConnectionsOperations, - VirtualNetworkGatewaysOperations, - VirtualNetworksOperations) - -from azure.cli.command_modules.network.mgmt.lib import (ResourceManagementClient as VNetClient, - ResourceManagementClientConfiguration - as VNetClientConfig) -from azure.cli.command_modules.network.mgmt.lib.operations import VNetOperations - -from azure.cli.commands._command_creation import get_mgmt_service_client -from azure.cli.commands._auto_command import build_operation, AutoCommandDefinition -from azure.cli.commands import (CommandTable, - LongRunningOperation, - COMMON_PARAMETERS, - RESOURCE_GROUP_ARG_NAME) -from azure.cli._locale import L - -command_table = CommandTable() - -def _network_client_factory(_): - return get_mgmt_service_client(NetworkManagementClient, NetworkManagementClientConfiguration) - -_VNET_PARAM_NAME = '--vnet-name' - -# pylint: disable=line-too-long -# Application gateways -build_operation("network application-gateway", - "application_gateways", - _network_client_factory, - [ - AutoCommandDefinition(ApplicationGatewaysOperations.delete, LongRunningOperation(L('Deleting application gateway'), L('Application gateway deleted'))), - AutoCommandDefinition(ApplicationGatewaysOperations.get, 'ApplicationGateway', command_alias='show'), - AutoCommandDefinition(ApplicationGatewaysOperations.list, '[ApplicationGateway]'), - AutoCommandDefinition(ApplicationGatewaysOperations.list_all, '[ApplicationGateway]'), - AutoCommandDefinition(ApplicationGatewaysOperations.start, LongRunningOperation(L('Starting application gateway'), L('Application gateway started'))), - AutoCommandDefinition(ApplicationGatewaysOperations.stop, LongRunningOperation(L('Stopping application gateway'), L('Application gateway stopped'))), - ], - command_table, - { - 'application_gateway_name': {'name': '--name -n'} - }) - -# ExpressRouteCircuitAuthorizationsOperations -build_operation("network express-route circuit-auth", - "express_route_circuit_authorizations", - _network_client_factory, - [ - AutoCommandDefinition(ExpressRouteCircuitAuthorizationsOperations.delete, LongRunningOperation(L('Deleting express route authorization'), L('Express route authorization deleted'))), - AutoCommandDefinition(ExpressRouteCircuitAuthorizationsOperations.get, 'ExpressRouteCircuitAuthorization', command_alias='show'), - AutoCommandDefinition(ExpressRouteCircuitAuthorizationsOperations.list, '[ExpressRouteCircuitAuthorization]'), - ], - command_table, - { - 'authorization_name': {'name': '--name -n'} - }) - - -# ExpressRouteCircuitPeeringsOperations -build_operation("network express-route circuit-peering", - "express_route_circuit_peerings", - _network_client_factory, - [ - AutoCommandDefinition(ExpressRouteCircuitPeeringsOperations.delete, LongRunningOperation(L('Deleting express route circuit peering'), L('Express route circuit peering deleted'))), - AutoCommandDefinition(ExpressRouteCircuitPeeringsOperations.get, 'ExpressRouteCircuitPeering', command_alias='show'), - AutoCommandDefinition(ExpressRouteCircuitPeeringsOperations.list, '[ExpressRouteCircuitPeering]'), - ], - command_table, - { - 'peering_name': {'name': '--name -n'} - }) - -# ExpressRouteCircuitsOperations -build_operation("network express-route circuit", - "express_route_circuits", - _network_client_factory, - [ - AutoCommandDefinition(ExpressRouteCircuitsOperations.delete, LongRunningOperation(L('Deleting express route circuit'), L('Express route circuit deleted'))), - AutoCommandDefinition(ExpressRouteCircuitsOperations.get, 'ExpressRouteCircuit', command_alias='show'), - AutoCommandDefinition(ExpressRouteCircuitsOperations.list_arp_table, '[ExpressRouteCircuitArpTable]', 'list-arp'), - AutoCommandDefinition(ExpressRouteCircuitsOperations.list_routes_table, '[ExpressRouteCircuitRoutesTable]', 'list-routes'), - AutoCommandDefinition(ExpressRouteCircuitsOperations.list_stats, '[ExpressRouteCircuitStats]'), - AutoCommandDefinition(ExpressRouteCircuitsOperations.list, '[ExpressRouteCircuit]'), - AutoCommandDefinition(ExpressRouteCircuitsOperations.list_all, '[ExpressRouteCircuit]'), - ], - command_table, - { - 'circuit_name': {'name': '--name -n'} - }) - -# ExpressRouteServiceProvidersOperations -build_operation("network express-route service-provider", - "express_route_service_providers", - _network_client_factory, - [ - AutoCommandDefinition(ExpressRouteServiceProvidersOperations.list, '[ExpressRouteServiceProvider]'), - ], - command_table) - -# LoadBalancersOperations -build_operation("network lb", - "load_balancers", - _network_client_factory, - [ - AutoCommandDefinition(LoadBalancersOperations.delete, LongRunningOperation(L('Deleting load balancer'), L('Load balancer deleted'))), - AutoCommandDefinition(LoadBalancersOperations.get, 'LoadBalancer', command_alias='show'), - AutoCommandDefinition(LoadBalancersOperations.list_all, '[LoadBalancer]'), - AutoCommandDefinition(LoadBalancersOperations.list, '[LoadBalancer]'), - ], - command_table, - { - 'load_balancer_name': {'name': '--name -n'} - }) - -# LocalNetworkGatewaysOperations -build_operation("network local-gateway", - "local_network_gateways", - _network_client_factory, - [ - AutoCommandDefinition(LocalNetworkGatewaysOperations.get, 'LocalNetworkGateway', command_alias='show'), - AutoCommandDefinition(LocalNetworkGatewaysOperations.delete, LongRunningOperation(L('Deleting local network gateway'), L('Local network gateway deleted'))), - AutoCommandDefinition(LocalNetworkGatewaysOperations.list, '[LocalNetworkGateway]'), - ], - command_table, - { - 'local_network_gateway_name': {'name': '--name -n'} - }) - - -# NetworkInterfacesOperations -build_operation("network nic", - "network_interfaces", - _network_client_factory, - [ - AutoCommandDefinition(NetworkInterfacesOperations.delete, LongRunningOperation(L('Deleting network interface'), L('Network interface deleted'))), - AutoCommandDefinition(NetworkInterfacesOperations.get, 'NetworkInterface', command_alias='show'), - AutoCommandDefinition(NetworkInterfacesOperations.list_all, '[NetworkInterface]'), - AutoCommandDefinition(NetworkInterfacesOperations.list, '[NetworkInterface]'), - ], - command_table, - { - 'network_interface_name': {'name': '--name -n'} - }) - -# NetworkInterfacesOperations: scaleset -build_operation("network nic scale-set", - "network_interfaces", - _network_client_factory, - [ - AutoCommandDefinition(NetworkInterfacesOperations.list_virtual_machine_scale_set_vm_network_interfaces, '[NetworkInterface]', command_alias='list-vm-nics'), - AutoCommandDefinition(NetworkInterfacesOperations.list_virtual_machine_scale_set_network_interfaces, '[NetworkInterface]', command_alias='list'), - AutoCommandDefinition(NetworkInterfacesOperations.get_virtual_machine_scale_set_network_interface, 'NetworkInterface', command_alias='show'), - ], - command_table, - { - 'virtual_machine_scale_set_name': {'name': '--vm-scale-set'}, - 'network_interface_name': {'name': '--name -n'}, - 'virtualmachine_index': {'name': '--vm-index'} - }) - -# NetworkSecurityGroupsOperations -build_operation("network nsg", - "network_security_groups", - _network_client_factory, - [ - AutoCommandDefinition(NetworkSecurityGroupsOperations.delete, LongRunningOperation(L('Deleting network security group'), L('Network security group deleted'))), - AutoCommandDefinition(NetworkSecurityGroupsOperations.get, 'NetworkSecurityGroup', command_alias='show'), - AutoCommandDefinition(NetworkSecurityGroupsOperations.list_all, '[NetworkSecurityGroup]'), - AutoCommandDefinition(NetworkSecurityGroupsOperations.list, '[NetworkSecurityGroup]'), - ], - command_table, - { - 'network_security_group_name': {'name': '--name -n'} - }) - -# PublicIPAddressesOperations -build_operation("network public-ip", - "public_ip_addresses", - _network_client_factory, - [ - AutoCommandDefinition(PublicIPAddressesOperations.delete, LongRunningOperation(L('Deleting public IP address'), L('Public IP address deleted'))), - AutoCommandDefinition(PublicIPAddressesOperations.get, 'PublicIPAddress', command_alias='show'), - AutoCommandDefinition(PublicIPAddressesOperations.list_all, '[PublicIPAddress]'), - AutoCommandDefinition(PublicIPAddressesOperations.list, '[PublicIPAddress]'), - ], - command_table, - { - 'public_ip_address_name': {'name': '--name -n'} - }) - -# RouteTablesOperations -build_operation("network route-table", - "route_tables", - _network_client_factory, - [ - AutoCommandDefinition(RouteTablesOperations.delete, LongRunningOperation(L('Deleting route table'), L('Route table deleted'))), - AutoCommandDefinition(RouteTablesOperations.get, 'RouteTable', command_alias='show'), - AutoCommandDefinition(RouteTablesOperations.list, '[RouteTable]'), - AutoCommandDefinition(RouteTablesOperations.list_all, '[RouteTable]'), - ], - command_table, - { - 'route_table_name': {'name': '--name -n'} - }) - - -# RoutesOperations -build_operation("network route-operation", - "routes", - _network_client_factory, - [ - AutoCommandDefinition(RoutesOperations.delete, LongRunningOperation(L('Deleting route'), L('Route deleted'))), - AutoCommandDefinition(RoutesOperations.get, 'Route', command_alias='show'), - AutoCommandDefinition(RoutesOperations.list, '[Route]'), - ], - command_table, - { - 'route_name': {'name': '--name -n'} - }) - -# SecurityRulesOperations -build_operation("network nsg-rule", - "security_rules", - _network_client_factory, - [ - AutoCommandDefinition(SecurityRulesOperations.delete, LongRunningOperation(L('Deleting security rule'), L('Security rule deleted'))), - AutoCommandDefinition(SecurityRulesOperations.get, 'SecurityRule', command_alias='show'), - AutoCommandDefinition(SecurityRulesOperations.list, '[SecurityRule]'), - ], - command_table, - { - 'security_rule_name': {'name': '--name'}, - 'network_security_group_name': {'name': '--nsg-name'} - }) - -# SubnetsOperations -build_operation("network vnet subnet", - "subnets", - _network_client_factory, - [ - AutoCommandDefinition(SubnetsOperations.delete, LongRunningOperation(L('Deleting subnet'), L('Subnet deleted'))), - AutoCommandDefinition(SubnetsOperations.get, 'Subnet', command_alias='show'), - AutoCommandDefinition(SubnetsOperations.list, '[Subnet]'), - ], - command_table, - { - 'subnet_name': {'name': '--name -n'}, - 'virtual_network_name': {'name': _VNET_PARAM_NAME} - }) - -# UsagesOperations -build_operation("network", - "usages", - _network_client_factory, - [ - AutoCommandDefinition(UsagesOperations.list, '[Usage]', command_alias='list-usages'), - ], - command_table) - -# VirtualNetworkGatewayConnectionsOperations -build_operation("network vpn-connection", - "virtual_network_gateway_connections", - _network_client_factory, - [ - AutoCommandDefinition(VirtualNetworkGatewayConnectionsOperations.delete, LongRunningOperation(L('Deleting virtual network gateway connection'), L('Virtual network gateway connection deleted'))), - AutoCommandDefinition(VirtualNetworkGatewayConnectionsOperations.get, 'VirtualNetworkGatewayConnection', command_alias='show'), - AutoCommandDefinition(VirtualNetworkGatewayConnectionsOperations.list, '[VirtualNetworkGatewayConnection]'), - ], - command_table, - { - 'virtual_network_gateway_connection_name': {'name': '--name -n'} - }) - -# VirtualNetworkGatewayConnectionsOperations: shared-key -build_operation("network vpn-connection shared-key", - "virtual_network_gateway_connections", - _network_client_factory, - [ - AutoCommandDefinition(VirtualNetworkGatewayConnectionsOperations.get_shared_key, 'ConnectionSharedKeyResult', command_alias='show'), - AutoCommandDefinition(VirtualNetworkGatewayConnectionsOperations.reset_shared_key, 'ConnectionResetSharedKey', command_alias='reset'), - AutoCommandDefinition(VirtualNetworkGatewayConnectionsOperations.set_shared_key, 'ConnectionSharedKey', command_alias='set'), - ], - command_table, - { - 'virtual_network_gateway_connection_name': {'name': '--connection-name'}, - 'connection_shared_key_name': {'name': '--name -n'} - - }) - -# VirtualNetworkGatewaysOperations -build_operation("network vpn-gateway", - "virtual_network_gateways", - _network_client_factory, - [ - AutoCommandDefinition(VirtualNetworkGatewaysOperations.delete, LongRunningOperation(L('Deleting virtual network gateway'), L('Virtual network gateway deleted'))), - AutoCommandDefinition(VirtualNetworkGatewaysOperations.get, 'VirtualNetworkGateway', command_alias='show'), - AutoCommandDefinition(VirtualNetworkGatewaysOperations.list, '[VirtualNetworkGateway]'), - AutoCommandDefinition(VirtualNetworkGatewaysOperations.reset, 'VirtualNetworkGateway'), - ], - command_table, - { - 'virtual_network_gateway_name': {'name': '--name -n'} - }) - -# VirtualNetworksOperations -build_operation("network vnet", - "virtual_networks", - _network_client_factory, - [ - AutoCommandDefinition(VirtualNetworksOperations.delete, LongRunningOperation(L('Deleting virtual network'), L('Virtual network deleted'))), - AutoCommandDefinition(VirtualNetworksOperations.get, 'VirtualNetwork', command_alias='show'), - AutoCommandDefinition(VirtualNetworksOperations.list, '[VirtualNetwork]'), - AutoCommandDefinition(VirtualNetworksOperations.list_all, '[VirtualNetwork]'), - ], - command_table, - { - 'virtual_network_name': {'name': '--name -n'} - }) - -# BUG: we are waiting on autorest to support this rename (https://github.com/Azure/autorest/issues/941) -VNET_SPECIFIC_PARAMS = { - 'deployment_parameter_virtual_network_name_value': { - 'name': '--name -n', - 'metavar': 'VNETNAME', - }, - 'deployment_parameter_virtual_network_prefix_value': { - 'name': '--vnet-prefix', - 'metavar': 'VNETPREFIX', - }, - 'deployment_parameter_subnet_name_value': { - 'name': '--subnet-name', - 'metavar': 'SUBNETNAME', - }, - 'deployment_parameter_subnet_prefix_value': { - 'name': '--subnet-prefix', - 'metavar': 'SUBNETPREFIX', - }, - 'deployment_parameter_location_value': { - 'name': '--location', - 'metavar': 'LOCATION', - } -} - -build_operation('network vnet', - 'vnet', - lambda _: get_mgmt_service_client(VNetClient, VNetClientConfig), - [ - AutoCommandDefinition(VNetOperations.create, - LongRunningOperation(L('Creating virtual network'), L('Virtual network created'))) - ], - command_table, - VNET_SPECIFIC_PARAMS) - -@command_table.command('network subnet create') -@command_table.description(L('Create or update a virtual network (VNet) subnet')) -@command_table.option(**COMMON_PARAMETERS['resource_group_name']) -@command_table.option('--name -n', help=L('the subnet name'), required=True) -@command_table.option(_VNET_PARAM_NAME, help=L('the name of the vnet'), required=True) -@command_table.option('--address-prefix -a', help=L('the the address prefix in CIDR format'), required=True) -def create_update_subnet(args): - from azure.mgmt.network.models import Subnet - - resource_group = args.get(RESOURCE_GROUP_ARG_NAME) - vnet = args.get('vnet') - name = args.get('name') - address_prefix = args.get('address_prefix') - - subnet_settings = Subnet(name=name, - address_prefix=address_prefix) - - op = LongRunningOperation('Creating subnet', 'Subnet created') - smc = _network_client_factory(args) - poller = smc.subnets.create_or_update(resource_group, vnet, name, subnet_settings) - return op(poller) +# pylint: disable=unused-import +from .generated import command_table diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_params.py b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_params.py new file mode 100644 index 00000000000..47b0d9edb84 --- /dev/null +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_params.py @@ -0,0 +1,54 @@ +from azure.mgmt.network import NetworkManagementClient, NetworkManagementClientConfiguration + +from azure.cli.commands import COMMON_PARAMETERS as GLOBAL_COMMON_PARAMETERS, patch_aliases +from azure.cli.commands._command_creation import get_mgmt_service_client + +# FACTORIES + +def _network_client_factory(**_): + return get_mgmt_service_client(NetworkManagementClient, NetworkManagementClientConfiguration) + +# BASIC PARAMETER CONFIGURATION + +SUBNET_ALIASES = patch_aliases(GLOBAL_COMMON_PARAMETERS, { + 'subnet_name': { + 'name': '--name -n', + 'metavar': 'SUBNET', + 'help': 'the subnet name' + }, + 'virtual_network_name': { + 'name': '--name -n', + 'metavar': 'VNET', + 'help': 'the name of the VNET' + }, + 'address_prefix': { + 'name': '--address-prefix', + 'metavar': 'PREFIX', + 'help': 'the address prefix in CIDR format' + } +}) + +# BUG: we are waiting on autorest to support this rename +# (https://github.com/Azure/autorest/issues/941) +VNET_ALIASES = patch_aliases(GLOBAL_COMMON_PARAMETERS, { + 'deployment_parameter_virtual_network_name_value': { + 'name': '--name -n', + 'metavar': 'VNETNAME', + }, + 'deployment_parameter_virtual_network_prefix_value': { + 'name': '--vnet-prefix', + 'metavar': 'VNETPREFIX', + }, + 'deployment_parameter_subnet_name_value': { + 'name': '--subnet-name', + 'metavar': 'SUBNETNAME', + }, + 'deployment_parameter_subnet_prefix_value': { + 'name': '--subnet-prefix', + 'metavar': 'SUBNETPREFIX', + }, + 'deployment_parameter_location_value': { + 'name': '--location', + 'metavar': 'LOCATION', + } +}) diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/custom.py b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/custom.py new file mode 100644 index 00000000000..8423b651368 --- /dev/null +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/custom.py @@ -0,0 +1,20 @@ +# pylint: disable=no-self-use,too-many-arguments +from azure.mgmt.network.models import Subnet + +from azure.cli.commands import LongRunningOperation +from azure.cli.command_modules.network._params import _network_client_factory + +class ConvenienceNetworkCommands(object): # pylint: disable=too-few-public-methods + + def __init__(self, **_): + pass + + def create_update_subnet(self, resource_group_name, subnet_name, virtual_network_name, + address_prefix): + '''Create or update a virtual network (VNet) subnet''' + subnet_settings = Subnet(name=subnet_name, address_prefix=address_prefix) + op = LongRunningOperation('Creating subnet', 'Subnet created') + ncf = _network_client_factory() + poller = ncf.subnets.create_or_update( + resource_group_name, virtual_network_name, subnet_name, subnet_settings) + return op(poller) diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/generated.py b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/generated.py new file mode 100644 index 00000000000..20120c41ccc --- /dev/null +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/generated.py @@ -0,0 +1,311 @@ +from azure.mgmt.network.operations import (ApplicationGatewaysOperations, + ExpressRouteCircuitAuthorizationsOperations, + ExpressRouteCircuitPeeringsOperations, + ExpressRouteCircuitsOperations, + ExpressRouteServiceProvidersOperations, + LoadBalancersOperations, + LocalNetworkGatewaysOperations, + NetworkInterfacesOperations, + NetworkSecurityGroupsOperations, + PublicIPAddressesOperations, + RouteTablesOperations, + RoutesOperations, + SecurityRulesOperations, + SubnetsOperations, + UsagesOperations, + VirtualNetworkGatewayConnectionsOperations, + VirtualNetworkGatewaysOperations, + VirtualNetworksOperations) + +from azure.cli.commands._command_creation import get_mgmt_service_client +from azure.cli.command_modules.network.mgmt.lib import (ResourceManagementClient as VNetClient, + ResourceManagementClientConfiguration + as VNetClientConfig) +from azure.cli.command_modules.network.mgmt.lib.operations import VNetOperations +from azure.cli.command_modules.network.custom import ConvenienceNetworkCommands +from azure.cli.command_modules.network._params import (VNET_ALIASES, SUBNET_ALIASES, + _network_client_factory) +from azure.cli.commands._auto_command import build_operation, CommandDefinition +from azure.cli.commands import CommandTable, LongRunningOperation +from azure.cli._locale import L + +command_table = CommandTable() + +# pylint: disable=line-too-long +# Application gateways +build_operation( + 'network application-gateway', 'application_gateways', _network_client_factory, + [ + CommandDefinition(ApplicationGatewaysOperations.delete, LongRunningOperation(L('Deleting application gateway'), L('Application gateway deleted'))), + CommandDefinition(ApplicationGatewaysOperations.get, 'ApplicationGateway', command_alias='show'), + CommandDefinition(ApplicationGatewaysOperations.list, '[ApplicationGateway]'), + CommandDefinition(ApplicationGatewaysOperations.list_all, '[ApplicationGateway]'), + CommandDefinition(ApplicationGatewaysOperations.start, LongRunningOperation(L('Starting application gateway'), L('Application gateway started'))), + CommandDefinition(ApplicationGatewaysOperations.stop, LongRunningOperation(L('Stopping application gateway'), L('Application gateway stopped'))), + ], + command_table, + { + 'application_gateway_name': {'name': '--name -n'} + }) + +# ExpressRouteCircuitAuthorizationsOperations +build_operation( + 'network express-route circuit-auth', 'express_route_circuit_authorizations', _network_client_factory, + [ + CommandDefinition(ExpressRouteCircuitAuthorizationsOperations.delete, LongRunningOperation(L('Deleting express route authorization'), L('Express route authorization deleted'))), + CommandDefinition(ExpressRouteCircuitAuthorizationsOperations.get, 'ExpressRouteCircuitAuthorization', command_alias='show'), + CommandDefinition(ExpressRouteCircuitAuthorizationsOperations.list, '[ExpressRouteCircuitAuthorization]'), + ], + command_table, + { + 'authorization_name': {'name': '--name -n'} + }) + +# ExpressRouteCircuitPeeringsOperations +build_operation( + 'network express-route circuit-peering', 'express_route_circuit_peerings', _network_client_factory, + [ + CommandDefinition(ExpressRouteCircuitPeeringsOperations.delete, LongRunningOperation(L('Deleting express route circuit peering'), L('Express route circuit peering deleted'))), + CommandDefinition(ExpressRouteCircuitPeeringsOperations.get, 'ExpressRouteCircuitPeering', command_alias='show'), + CommandDefinition(ExpressRouteCircuitPeeringsOperations.list, '[ExpressRouteCircuitPeering]'), + ], + command_table, + { + 'peering_name': {'name': '--name -n'} + }) + +# ExpressRouteCircuitsOperations +build_operation( + 'network express-route circuit', 'express_route_circuits', _network_client_factory, + [ + CommandDefinition(ExpressRouteCircuitsOperations.delete, LongRunningOperation(L('Deleting express route circuit'), L('Express route circuit deleted'))), + CommandDefinition(ExpressRouteCircuitsOperations.get, 'ExpressRouteCircuit', command_alias='show'), + CommandDefinition(ExpressRouteCircuitsOperations.list_arp_table, '[ExpressRouteCircuitArpTable]', 'list-arp'), + CommandDefinition(ExpressRouteCircuitsOperations.list_routes_table, '[ExpressRouteCircuitRoutesTable]', 'list-routes'), + CommandDefinition(ExpressRouteCircuitsOperations.list_stats, '[ExpressRouteCircuitStats]'), + CommandDefinition(ExpressRouteCircuitsOperations.list, '[ExpressRouteCircuit]'), + CommandDefinition(ExpressRouteCircuitsOperations.list_all, '[ExpressRouteCircuit]'), + ], + command_table, + { + 'circuit_name': {'name': '--name -n'} + }) + +# ExpressRouteServiceProvidersOperations +build_operation( + 'network express-route service-provider', 'express_route_service_providers', _network_client_factory, + [ + CommandDefinition(ExpressRouteServiceProvidersOperations.list, '[ExpressRouteServiceProvider]'), + ], + command_table) + +# LoadBalancersOperations +build_operation( + 'network lb', 'load_balancers', _network_client_factory, + [ + CommandDefinition(LoadBalancersOperations.delete, LongRunningOperation(L('Deleting load balancer'), L('Load balancer deleted'))), + CommandDefinition(LoadBalancersOperations.get, 'LoadBalancer', command_alias='show'), + CommandDefinition(LoadBalancersOperations.list_all, '[LoadBalancer]'), + CommandDefinition(LoadBalancersOperations.list, '[LoadBalancer]'), + ], + command_table, + { + 'load_balancer_name': {'name': '--name -n'} + }) + +# LocalNetworkGatewaysOperations +build_operation( + 'network local-gateway', 'local_network_gateways', _network_client_factory, + [ + CommandDefinition(LocalNetworkGatewaysOperations.get, 'LocalNetworkGateway', command_alias='show'), + CommandDefinition(LocalNetworkGatewaysOperations.delete, LongRunningOperation(L('Deleting local network gateway'), L('Local network gateway deleted'))), + CommandDefinition(LocalNetworkGatewaysOperations.list, '[LocalNetworkGateway]'), + ], + command_table, + { + 'local_network_gateway_name': {'name': '--name -n'} + }) + + +# NetworkInterfacesOperations +build_operation( + 'network nic', 'network_interfaces', _network_client_factory, + [ + CommandDefinition(NetworkInterfacesOperations.delete, LongRunningOperation(L('Deleting network interface'), L('Network interface deleted'))), + CommandDefinition(NetworkInterfacesOperations.get, 'NetworkInterface', command_alias='show'), + CommandDefinition(NetworkInterfacesOperations.list_all, '[NetworkInterface]'), + CommandDefinition(NetworkInterfacesOperations.list, '[NetworkInterface]'), + ], + command_table, + { + 'network_interface_name': {'name': '--name -n'} + }) + +# NetworkInterfacesOperations: scaleset +build_operation( + 'network nic scale-set', 'network_interfaces', _network_client_factory, + [ + CommandDefinition(NetworkInterfacesOperations.list_virtual_machine_scale_set_vm_network_interfaces, '[NetworkInterface]', command_alias='list-vm-nics'), + CommandDefinition(NetworkInterfacesOperations.list_virtual_machine_scale_set_network_interfaces, '[NetworkInterface]', command_alias='list'), + CommandDefinition(NetworkInterfacesOperations.get_virtual_machine_scale_set_network_interface, 'NetworkInterface', command_alias='show'), + ], + command_table, + { + 'virtual_machine_scale_set_name': {'name': '--vm-scale-set'}, + 'network_interface_name': {'name': '--name -n'}, + 'virtualmachine_index': {'name': '--vm-index'} + }) + +# NetworkSecurityGroupsOperations +build_operation( + 'network nsg', 'network_security_groups', _network_client_factory, + [ + CommandDefinition(NetworkSecurityGroupsOperations.delete, LongRunningOperation(L('Deleting network security group'), L('Network security group deleted'))), + CommandDefinition(NetworkSecurityGroupsOperations.get, 'NetworkSecurityGroup', command_alias='show'), + CommandDefinition(NetworkSecurityGroupsOperations.list_all, '[NetworkSecurityGroup]'), + CommandDefinition(NetworkSecurityGroupsOperations.list, '[NetworkSecurityGroup]'), + ], + command_table, + { + 'network_security_group_name': {'name': '--name -n'} + }) + +# PublicIPAddressesOperations +build_operation( + 'network public-ip', 'public_ip_addresses', _network_client_factory, + [ + CommandDefinition(PublicIPAddressesOperations.delete, LongRunningOperation(L('Deleting public IP address'), L('Public IP address deleted'))), + CommandDefinition(PublicIPAddressesOperations.get, 'PublicIPAddress', command_alias='show'), + CommandDefinition(PublicIPAddressesOperations.list_all, '[PublicIPAddress]'), + CommandDefinition(PublicIPAddressesOperations.list, '[PublicIPAddress]'), + ], + command_table, + { + 'public_ip_address_name': {'name': '--name -n'} + }) + +# RouteTablesOperations +build_operation( + 'network route-table', 'route_tables', _network_client_factory, + [ + CommandDefinition(RouteTablesOperations.delete, LongRunningOperation(L('Deleting route table'), L('Route table deleted'))), + CommandDefinition(RouteTablesOperations.get, 'RouteTable', command_alias='show'), + CommandDefinition(RouteTablesOperations.list, '[RouteTable]'), + CommandDefinition(RouteTablesOperations.list_all, '[RouteTable]'), + ], + command_table, + { + 'route_table_name': {'name': '--name -n'} + }) + + +# RoutesOperations +build_operation( + 'network route-operation', 'routes', _network_client_factory, + [ + CommandDefinition(RoutesOperations.delete, LongRunningOperation(L('Deleting route'), L('Route deleted'))), + CommandDefinition(RoutesOperations.get, 'Route', command_alias='show'), + CommandDefinition(RoutesOperations.list, '[Route]'), + ], + command_table, + { + 'route_name': {'name': '--name -n'} + }) + +# SecurityRulesOperations +build_operation( + 'network nsg-rule', 'security_rules', _network_client_factory, + [ + CommandDefinition(SecurityRulesOperations.delete, LongRunningOperation(L('Deleting security rule'), L('Security rule deleted'))), + CommandDefinition(SecurityRulesOperations.get, 'SecurityRule', command_alias='show'), + CommandDefinition(SecurityRulesOperations.list, '[SecurityRule]'), + ], + command_table, + { + 'security_rule_name': {'name': '--name'}, + 'network_security_group_name': {'name': '--nsg-name'} + }) + +# SubnetsOperations +build_operation( + 'network vnet subnet', 'subnets', _network_client_factory, + [ + CommandDefinition(SubnetsOperations.delete, LongRunningOperation(L('Deleting subnet'), L('Subnet deleted'))), + CommandDefinition(SubnetsOperations.get, 'Subnet', command_alias='show'), + CommandDefinition(SubnetsOperations.list, '[Subnet]'), + ], + command_table, SUBNET_ALIASES) + +build_operation( + 'network subnet', None, ConvenienceNetworkCommands, + [ + CommandDefinition(ConvenienceNetworkCommands.create_update_subnet, 'Object', 'create') + ], + command_table, SUBNET_ALIASES) + +# UsagesOperations +build_operation( + 'network', 'usages', _network_client_factory, + [ + CommandDefinition(UsagesOperations.list, '[Usage]', command_alias='list-usages'), + ], + command_table) + +# VirtualNetworkGatewayConnectionsOperations +build_operation( + 'network vpn-connection', 'virtual_network_gateway_connections', _network_client_factory, + [ + CommandDefinition(VirtualNetworkGatewayConnectionsOperations.delete, LongRunningOperation(L('Deleting virtual network gateway connection'), L('Virtual network gateway connection deleted'))), + CommandDefinition(VirtualNetworkGatewayConnectionsOperations.get, 'VirtualNetworkGatewayConnection', command_alias='show'), + CommandDefinition(VirtualNetworkGatewayConnectionsOperations.list, '[VirtualNetworkGatewayConnection]'), + ], + command_table, + { + 'virtual_network_gateway_connection_name': {'name': '--name -n'} + }) + +# VirtualNetworkGatewayConnectionsOperations: shared-key +build_operation( + 'network vpn-connection shared-key', 'virtual_network_gateway_connections', _network_client_factory, + [ + CommandDefinition(VirtualNetworkGatewayConnectionsOperations.get_shared_key, 'ConnectionSharedKeyResult', command_alias='show'), + CommandDefinition(VirtualNetworkGatewayConnectionsOperations.reset_shared_key, 'ConnectionResetSharedKey', command_alias='reset'), + CommandDefinition(VirtualNetworkGatewayConnectionsOperations.set_shared_key, 'ConnectionSharedKey', command_alias='set'), + ], + command_table, + { + 'virtual_network_gateway_connection_name': {'name': '--connection-name'}, + 'connection_shared_key_name': {'name': '--name -n'} + }) + +# VirtualNetworkGatewaysOperations +build_operation( + 'network vpn-gateway', 'virtual_network_gateways', _network_client_factory, + [ + CommandDefinition(VirtualNetworkGatewaysOperations.delete, LongRunningOperation(L('Deleting virtual network gateway'), L('Virtual network gateway deleted'))), + CommandDefinition(VirtualNetworkGatewaysOperations.get, 'VirtualNetworkGateway', command_alias='show'), + CommandDefinition(VirtualNetworkGatewaysOperations.list, '[VirtualNetworkGateway]'), + CommandDefinition(VirtualNetworkGatewaysOperations.reset, 'VirtualNetworkGateway'), + ], + command_table, + { + 'virtual_network_gateway_name': {'name': '--name -n'} + }) + +# VirtualNetworksOperations +build_operation( + 'network vnet', 'virtual_networks', _network_client_factory, + [ + CommandDefinition(VirtualNetworksOperations.delete, LongRunningOperation(L('Deleting virtual network'), L('Virtual network deleted'))), + CommandDefinition(VirtualNetworksOperations.get, 'VirtualNetwork', command_alias='show'), + CommandDefinition(VirtualNetworksOperations.list, '[VirtualNetwork]'), + CommandDefinition(VirtualNetworksOperations.list_all, '[VirtualNetwork]'), + ], + command_table, VNET_ALIASES) + +build_operation( + 'network vnet', 'vnet', lambda _: get_mgmt_service_client(VNetClient, VNetClientConfig), + [ + CommandDefinition(VNetOperations.create, LongRunningOperation(L('Creating virtual network'), L('Virtual network created'))) + ], + command_table, VNET_ALIASES) diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/expected_results.res b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/expected_results.res index 2017bd2b184..6799f02d595 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/expected_results.res +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/expected_results.res @@ -1,4 +1,4 @@ { - "test_network_nic_list": "Enable Ip Forwarding : False\nEtag : W/\"3b1db574-6f4c-4612-af25-0a72e210a927\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/testvm23456234\nLocation : westus\nMac Address : 00-0D-3A-33-9A-FC\nName : testvm23456234\nNetwork Security Group : None\nPrimary : True\nProvisioning State : Succeeded\nResource Group : TravisTestResourceGroup\nResource Guid : e1f92108-bfcb-48c5-95e4-3e430b610a12\nTags : None\nType : Microsoft.Network/networkInterfaces\nIp Configurations :\n Etag : W/\"3b1db574-6f4c-4612-af25-0a72e210a927\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/testvm23456234/ipConfigurations/ipconfig1\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfig1\n Private Ip Address : 10.1.0.4\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Resource Group : TravisTestResourceGroup\n Subnet : None\n Public Ip Address :\n Dns Settings : None\n Etag : None\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/publicIPAddresses/testvm23456\n Idle Timeout In Minutes : None\n Ip Address : None\n Ip Configuration : None\n Location : None\n Name : None\n Provisioning State : None\n Public Ip Allocation Method : None\n Resource Group : TravisTestResourceGroup\n Resource Guid : None\n Tags : None\n Type : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\nVirtual Machine :\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Compute/virtualMachines/testvm23456\n Resource Group : TravisTestResourceGroup\n\n\n", - "test_network_usage_list": "[\n {\n \"currentValue\": 11,\n \"limit\": 50,\n \"name\": {\n \"localizedValue\": \"Virtual Networks\",\n \"value\": \"VirtualNetworks\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 20,\n \"name\": {\n \"localizedValue\": \"Static Public IP Addresses\",\n \"value\": \"StaticPublicIPAddresses\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 1,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Network Security Groups\",\n \"value\": \"NetworkSecurityGroups\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 6,\n \"limit\": 60,\n \"name\": {\n \"localizedValue\": \"Public IP Addresses\",\n \"value\": \"PublicIPAddresses\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 5,\n \"limit\": 300,\n \"name\": {\n \"localizedValue\": \"Network Interfaces\",\n \"value\": \"NetworkInterfaces\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Load Balancers\",\n \"value\": \"LoadBalancers\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 50,\n \"name\": {\n \"localizedValue\": \"Application Gateways\",\n \"value\": \"ApplicationGateways\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Route Tables\",\n \"value\": \"RouteTables\"\n },\n \"unit\": \"Count\"\n }\n]\n" + "test_network_nic_list": "Enable Ip Forwarding : False\nEtag : W/\"0e52cdf5-175d-4c2c-9fcc-4d9b93fa8f71\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/linuxtestvm476\nLocation : westus\nMac Address : None\nName : linuxtestvm476\nNetwork Security Group : None\nPrimary : None\nProvisioning State : Succeeded\nResource Group : TravisTestResourceGroup\nResource Guid : b64b4a70-9327-454e-90d5-12e3312fe297\nTags : None\nType : Microsoft.Network/networkInterfaces\nIp Configurations :\n Etag : W/\"0e52cdf5-175d-4c2c-9fcc-4d9b93fa8f71\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/linuxtestvm476/ipConfigurations/ipconfig1\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfig1\n Private Ip Address : 10.1.0.7\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Resource Group : TravisTestResourceGroup\n Subnet : None\n Public Ip Address :\n Dns Settings : None\n Etag : None\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/publicIPAddresses/linuxtestvm\n Idle Timeout In Minutes : None\n Ip Address : None\n Ip Configuration : None\n Location : None\n Name : None\n Provisioning State : None\n Public Ip Allocation Method : None\n Resource Group : TravisTestResourceGroup\n Resource Guid : None\n Tags : None\n Type : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\nVirtual Machine :\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Compute/virtualMachines/linuxtestvm\n Resource Group : travistestresourcegroup\n\nEnable Ip Forwarding : False\nEtag : W/\"0dd8f6ec-e617-4e22-a34d-9e2d912fd1ca\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/testvm23456234\nLocation : westus\nMac Address : None\nName : testvm23456234\nNetwork Security Group : None\nPrimary : None\nProvisioning State : Succeeded\nResource Group : TravisTestResourceGroup\nResource Guid : e1f92108-bfcb-48c5-95e4-3e430b610a12\nTags : None\nType : Microsoft.Network/networkInterfaces\nVirtual Machine : None\nIp Configurations :\n Etag : W/\"0dd8f6ec-e617-4e22-a34d-9e2d912fd1ca\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/testvm23456234/ipConfigurations/ipconfig1\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfig1\n Private Ip Address : 10.1.0.4\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Resource Group : TravisTestResourceGroup\n Subnet : None\n Public Ip Address :\n Dns Settings : None\n Etag : None\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/publicIPAddresses/testvm23456\n Idle Timeout In Minutes : None\n Ip Address : None\n Ip Configuration : None\n Location : None\n Name : None\n Provisioning State : None\n Public Ip Allocation Method : None\n Resource Group : TravisTestResourceGroup\n Resource Guid : None\n Tags : None\n Type : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\n\nEnable Ip Forwarding : False\nEtag : W/\"6b561634-ca7f-48b4-a030-b038fbf5e95c\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/testwindowsvm943\nLocation : westus\nMac Address : None\nName : testwindowsvm943\nNetwork Security Group : None\nPrimary : None\nProvisioning State : Succeeded\nResource Group : TravisTestResourceGroup\nResource Guid : ab5b53e6-a40d-4141-9243-c61628a47fd0\nTags : None\nType : Microsoft.Network/networkInterfaces\nVirtual Machine : None\nIp Configurations :\n Etag : W/\"6b561634-ca7f-48b4-a030-b038fbf5e95c\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/testwindowsvm943/ipConfigurations/ipconfig1\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfig1\n Private Ip Address : 10.1.0.5\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Resource Group : TravisTestResourceGroup\n Subnet : None\n Public Ip Address :\n Dns Settings : None\n Etag : None\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/publicIPAddresses/testwindowsvm\n Idle Timeout In Minutes : None\n Ip Address : None\n Ip Configuration : None\n Location : None\n Name : None\n Provisioning State : None\n Public Ip Allocation Method : None\n Resource Group : TravisTestResourceGroup\n Resource Guid : None\n Tags : None\n Type : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\n\nEnable Ip Forwarding : False\nEtag : W/\"abdf3797-0e2d-43f3-afac-c1ed1da22a04\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/networkInterfaces/VMNiclinux-test-public-ips-vm\nLocation : westus\nMac Address : None\nName : VMNiclinux-test-public-ips-vm\nNetwork Security Group : None\nPrimary : None\nProvisioning State : Succeeded\nResource Group : travistestresourcegroup\nResource Guid : a4bb8d7d-26c8-4209-8514-a753ce7dc401\nType : Microsoft.Network/networkInterfaces\nVirtual Machine : None\nIp Configurations :\n Etag : W/\"abdf3797-0e2d-43f3-afac-c1ed1da22a04\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/networkInterfaces/VMNiclinux-test-public-ips-vm/ipConfigurations/ipconfiglinux-test-public-ips-vm\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfiglinux-test-public-ips-vm\n Private Ip Address : 10.0.0.4\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Public Ip Address : None\n Resource Group : travistestresourcegroup\n Subnet : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\nTags :\n Display Name : NetworkInterface\n\nEnable Ip Forwarding : False\nEtag : W/\"844ea4e1-6b0e-4189-a51a-4eb672a3129f\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/networkInterfaces/VMNiclinux-test-public-ips-vm2\nLocation : westus\nMac Address : None\nName : VMNiclinux-test-public-ips-vm2\nNetwork Security Group : None\nPrimary : None\nProvisioning State : Succeeded\nResource Group : travistestresourcegroup\nResource Guid : 061d290e-c533-4b15-aa2f-d06e7cf1b8c9\nType : Microsoft.Network/networkInterfaces\nIp Configurations :\n Etag : W/\"844ea4e1-6b0e-4189-a51a-4eb672a3129f\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/networkInterfaces/VMNiclinux-test-public-ips-vm2/ipConfigurations/ipconfiglinux-test-public-ips-vm2\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfiglinux-test-public-ips-vm2\n Private Ip Address : 10.0.0.4\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Resource Group : travistestresourcegroup\n Subnet : None\n Public Ip Address :\n Dns Settings : None\n Etag : None\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/publicIPAddresses/PublicIPlinux-test-public-ips-vm2\n Idle Timeout In Minutes : None\n Ip Address : None\n Ip Configuration : None\n Location : None\n Name : None\n Provisioning State : None\n Public Ip Allocation Method : None\n Resource Group : travistestresourcegroup\n Resource Guid : None\n Tags : None\n Type : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\nTags :\n Display Name : NetworkInterface\nVirtual Machine :\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Compute/virtualMachines/linux-test-public-ips-vm2\n Resource Group : travistestresourcegroup\n\nEnable Ip Forwarding : False\nEtag : W/\"ba636173-911f-4706-a08c-012753919860\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/networkInterfaces/VMNiclinux_test_public_ips_vm\nLocation : westus\nMac Address : None\nName : VMNiclinux_test_public_ips_vm\nNetwork Security Group : None\nPrimary : None\nProvisioning State : Succeeded\nResource Group : travistestresourcegroup\nResource Guid : 899bc9f6-9c27-4a78-9e53-145966bf2e2f\nType : Microsoft.Network/networkInterfaces\nVirtual Machine : None\nIp Configurations :\n Etag : W/\"ba636173-911f-4706-a08c-012753919860\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/networkInterfaces/VMNiclinux_test_public_ips_vm/ipConfigurations/ipconfiglinux_test_public_ips_vm\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfiglinux_test_public_ips_vm\n Private Ip Address : 10.0.0.4\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Public Ip Address : None\n Resource Group : travistestresourcegroup\n Subnet : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\nTags :\n Display Name : NetworkInterface\n\nEnable Ip Forwarding : False\nEtag : W/\"6b27df66-d028-41de-841a-ea2a0cf122e5\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/networkInterfaces/VMNicsecondlinuxtest\nLocation : westus\nMac Address : None\nName : VMNicsecondlinuxtest\nNetwork Security Group : None\nPrimary : None\nProvisioning State : Succeeded\nResource Group : travistestresourcegroup\nResource Guid : d04a1bcc-53e7-4f7b-9d6e-496d7f89daba\nType : Microsoft.Network/networkInterfaces\nVirtual Machine : None\nIp Configurations :\n Etag : W/\"6b27df66-d028-41de-841a-ea2a0cf122e5\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Network/networkInterfaces/VMNicsecondlinuxtest/ipConfigurations/ipconfigsecondlinuxtest\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfigsecondlinuxtest\n Private Ip Address : 10.0.0.4\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Public Ip Address : None\n Resource Group : travistestresourcegroup\n Subnet : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\nTags :\n Display Name : NetworkInterface\n\nEnable Ip Forwarding : False\nEtag : W/\"9f40eb22-bc10-4c6b-a45a-929498cfbeb7\"\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/windowstestvm58\nLocation : westus\nMac Address : None\nName : windowstestvm58\nNetwork Security Group : None\nPrimary : None\nProvisioning State : Succeeded\nResource Group : TravisTestResourceGroup\nResource Guid : 3baa8673-74f7-4398-8689-43a826d1310c\nTags : None\nType : Microsoft.Network/networkInterfaces\nIp Configurations :\n Etag : W/\"9f40eb22-bc10-4c6b-a45a-929498cfbeb7\"\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/networkInterfaces/windowstestvm58/ipConfigurations/ipconfig1\n Load Balancer Backend Address Pools : None\n Load Balancer Inbound Nat Rules : None\n Name : ipconfig1\n Private Ip Address : 10.1.0.6\n Private Ip Allocation Method : Dynamic\n Provisioning State : Succeeded\n Resource Group : TravisTestResourceGroup\n Subnet : None\n Public Ip Address :\n Dns Settings : None\n Etag : None\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Network/publicIPAddresses/windowstestvm\n Idle Timeout In Minutes : None\n Ip Address : None\n Ip Configuration : None\n Location : None\n Name : None\n Provisioning State : None\n Public Ip Allocation Method : None\n Resource Group : TravisTestResourceGroup\n Resource Guid : None\n Tags : None\n Type : None\nDns Settings :\n Internal Dns Name Label : None\n Internal Fqdn : None\n Applied Dns Servers :\n None\n Dns Servers :\n None\nVirtual Machine :\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup/providers/Microsoft.Compute/virtualMachines/windowstestvm\n Resource Group : TravisTestResourceGroup\n\n\n", + "test_network_usage_list": "[\n {\n \"currentValue\": 31,\n \"limit\": 50,\n \"name\": {\n \"localizedValue\": \"Virtual Networks\",\n \"value\": \"VirtualNetworks\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 1,\n \"name\": {\n \"localizedValue\": \"Network Watchers\",\n \"value\": \"NetworkWatchers\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 20,\n \"name\": {\n \"localizedValue\": \"Static Public IP Addresses\",\n \"value\": \"StaticPublicIPAddresses\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 1,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Network Security Groups\",\n \"value\": \"NetworkSecurityGroups\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 24,\n \"limit\": 60,\n \"name\": {\n \"localizedValue\": \"Public IP Addresses\",\n \"value\": \"PublicIPAddresses\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 26,\n \"limit\": 300,\n \"name\": {\n \"localizedValue\": \"Network Interfaces\",\n \"value\": \"NetworkInterfaces\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Load Balancers\",\n \"value\": \"LoadBalancers\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 50,\n \"name\": {\n \"localizedValue\": \"Application Gateways\",\n \"value\": \"ApplicationGateways\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Route Tables\",\n \"value\": \"RouteTables\"\n },\n \"unit\": \"Count\"\n }\n]\n" } \ No newline at end of file diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/test_network_nic_list.yaml b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/test_network_nic_list.yaml index 1e27469c551..58cff798705 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/test_network_nic_list.yaml +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/test_network_nic_list.yaml @@ -1,4 +1,54 @@ interactions: +- request: + body: !!binary | + cmVzb3VyY2U9aHR0cHMlM0ElMkYlMkZtYW5hZ2VtZW50LmNvcmUud2luZG93cy5uZXQlMkYmZ3Jh + bnRfdHlwZT1yZWZyZXNoX3Rva2VuJnJlZnJlc2hfdG9rZW49QUFBQkFBQUFpTDlLbjJaMjdVdWJ2 + V0ZQYm0wZ0xUV3NhekM1MDJXUDZmUmVhaGZneE04QkFWVW5IOWRKQTZqOW8td2pkNlRicG92TXhG + LTBVbnF2U1BHcnRheVFKOTFZdGlyVzFKcDM1VWNLT2FYMnZSZi1IeW85NWtmUXdtUHBTMzdPWGd1 + b3hxbENWVzNIRGljd2VBczc2enFVdXR5RDV0VU0tSTk5YzROcnFRYkpDLXY2U3pEQ2RUSTZOZzRR + U2FCOW5PQnAyeTNYS1FNVFMzODA4aDBNSURJcmxOUmx0NnVwYjFYeWxYUGlCeHNaMGdZSHBzZ1dW + SVpWM1R6Ulc2SkR1ODMtR25TM2FoU0ZEOXB4eVZiVmxQdlNXbWtmR2tkbk5QdHNwek0yeGNEMWt1 + TE5RVHZSOE91Ml9ZdHNJZ2pKWDhyTzJPS3FJdmJlcWZHTG5ZX3U1UVo4aUsxeG9RR3EzOGhtd3h0 + czEtaFZlMl9JZ2txYUE3c0Z3Y3VfZW41blIzcDJNdFBTZ3o4cGUtcVpGd09oRmt5T3JtQ2g2M1M5 + RGNSTXZOZjc1dC00VDBOaWFNTFB6SUQyMEtyZXRmZjBnbzB1MHRqM0N4TjlKNnc3NWFlcnN4XzdD + eFp3ZmdWQWRBLXVJS0RMT2hZMU1sMlpPbTdKUHZfNHdIRnJkdkhxRHg4WUlfOWxIdDlkVFgxZ2to + RzhvNC0yY1BsRGI0YUg1UkJqMi1jbmpPVWwycXh4N21YSi1wVjNyblFHTkE0RFEzLXQ1LXVrQkd0 + X0RrMzlVY2tvM2hKZWdNSkU1RTR5MWRyOXZtaDFCTTNhTS1DeEVDNG9ybXRDODdOZmhGaGRVU1Rn + bXlhQlpjaEg5dWVuWGpTWnp5cl9VQ0FBJmNsaWVudF9pZD0wNGIwNzc5NS04ZGRiLTQ2MWEtYmJl + ZS0wMmY5ZTFiZjdiNDY= + headers: + Accept: ['*/*'] + Accept-Charset: [utf-8] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['812'] + User-Agent: [python-requests/2.9.1] + content-type: [application/x-www-form-urlencoded] + return-client-request-id: ['true'] + x-client-CPU: [x86] + x-client-OS: [win32] + x-client-SKU: [Python] + x-client-Ver: [0.2.0] + method: POST + uri: https://login.microsoftonline.com/54826b22-38d6-4fb2-bad9-b7b93a3e9c5a/oauth2/token?api-version=1.0 + response: + body: {string: '{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3599","expires_on":"1462556752","not_before":"1462552852","resource":"https://management.core.windows.net/","access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDYyNTUyODUyLCJuYmYiOjE0NjI1NTI4NTIsImV4cCI6MTQ2MjU1Njc1MiwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IkFkbWluMiIsImdpdmVuX25hbWUiOiJBZG1pbjIiLCJncm91cHMiOlsiZTRiYjBiNTYtMTAxNC00MGY4LTg4YWItM2Q4YThjYjBlMDg2Il0sImlwYWRkciI6IjE2Ny4yMjAuMC4xODYiLCJuYW1lIjoiQWRtaW4yIiwib2lkIjoiNTk2M2Y1MGMtN2M0My00MDVjLWFmN2UtNTMyOTRkZTc2YWJkIiwicHVpZCI6IjEwMDNCRkZEOTU5Rjg0MjMiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJzRGdleFJ3Q05JZlktaHpRampDRHZaVDdJemRmbzRTeXJyNHgwZEROelI0IiwidGlkIjoiNTQ4MjZiMjItMzhkNi00ZmIyLWJhZDktYjdiOTNhM2U5YzVhIiwidW5pcXVlX25hbWUiOiJhZG1pbjJAQXp1cmVTREtUZWFtLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImFkbWluMkBBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.DXbZWPdjOnxp6eKZQ1_dXQt5r0hJvD3Wsz-7eWHad-CEy3l3FjiWEty0o_NvG-I-M0UJKANd1NHxV3AIf2t5Pu5zvxs-5j0uEM498yG7SgwVzgwFhEl6rP5VzdohPoCof8RIQ5WtGzBcCLWp64IaMhL_GEWg84HC0UcI4thF816Jng2WptzRIq9daKkQG6IcZffM7YqqY5lu2QMjG2ILX8aDfDRn3uK2p38FnHWZ5jH0-DZFGbJNL5W_fUbCP1vvIReSUZytXQBHpPGuVwXVlTCftotnpRU7VRpgg7lDdPtgutpvvbNmUQ-dOscq45MAzAzPLcDdwibfX27KBnYcSw","refresh_token":"AAABAAAAiL9Kn2Z27UubvWFPbm0gLalWqJoW9vGquPIEZ8r19rwfOIwiMgCYphKofSQZwEZtSFDIy30UAgjDHQYq75gLqAhMk8hslUSzLRK7cewfqK_EzlhwC04mNmhc-GXa377gUIzaNyojlIDjGp_BXpBRenxmso938FCqgJ13kN-mztibzXu27PfjtjpIFIV38KKFw7BLwyOT6JtTEkdIPHIN7DYME0QXxEtwuBG2T5ANuvj5kHq3AXwjdhNHpIWbRIvQ9Nl97c-f8MIkBE3eyGZb1tKktcaEC_SewFop67Etjb6uXMnURd2j8N9wu3cKh0o0piuphqiXHE_5i4upcSOwbNPQamvqRRLEao-gXNeHeZ2NNQpWH8JQu5zIJgwQG8L81LS23DxRLuWhTh3TSEaEX2C6NsI-PoMLHf8tlX-mUAmHtGTNW34uJevAU1He2pkeRtIrVwl1QRpfpOM06Cezpx_ikz8e3jsijTvF_JJUfr04QX7EPccL4ed9vsGcRWkMTC4fwgO7ZQxSVH2Fy5XwyNtjalYviAdjiWRKb5dmiFtGll_8xHBcVOGYb7obgWDi7p2is4mGHsRX8A6T0Eq7-n-EzCMUgFDXRjOUAIKvvZtO-lcDUHDjpzP-fgok_FrTDJogeRmDd5Am7pD4dxHEsCAA"}'} + headers: + Cache-Control: ['no-cache, no-store'] + Content-Length: ['2346'] + Content-Type: [application/json; charset=utf-8] + Date: ['Fri, 06 May 2016 16:45:52 GMT'] + Expires: ['-1'] + P3P: [CP="DSP CUR OTPi IND OTRi ONL FIN"] + Pragma: [no-cache] + Server: [Microsoft-IIS/8.5] + Set-Cookie: [flight-uxoptin=true; path=/; secure; HttpOnly, esctx=AAABAAAAiL9Kn2Z27UubvWFPbm0gLSVbfmieACxkWAU0BCD_lpE8JHJEcVM-g8Ej4ZHHSl4F_UEg37rQRqYS6HJPvEco87x3rcYzEVMfpUtf-UXGtVTbnejlppavFj4vakbbJunttA-JDPYiV-jEeCuXjPR6tQOwJ70d1HUHTpcR-hrYuItjkV8aULodFceaX1QujyViIAA; + domain=.login.microsoftonline.com; path=/; secure; HttpOnly, x-ms-gateway-slice=productiona; + path=/; secure; HttpOnly, stsservicecookie=ests; path=/; secure; HttpOnly] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + X-Content-Type-Options: [nosniff] + X-Powered-By: [ASP.NET] + status: {code: 200, message: OK} - request: body: null headers: @@ -16,23 +66,51 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk - 6UeXWbnOP3qUfg9/pSl/iOejZbbA5x+1edNeLvbu7d//lP75aGQbFDN8fbdZT5ppXazaolo2d3cm - u+ef7j/Y3d6dnO9s789m2XaWT+9tTycP9x7sne88vP9w526dN9W6nuaf19V61dx9U2eXRfOG+nnl - f3F3VVeXxSyvm7tfFNO6aqrzdvwib6+q+u3dpfw8W7Z5fZ5N8+buIJ55m10A0+/e/X0/ujfZnU3u - P9jf/vR8f7q9/+nu3nZ2vnd/eyd7sJfv7e5khOXv+5H3cnu9YircAgPvrbKaZqAH3rwivNb+lzSs - VV63Bb3xyNFbviA60GvF8uJ1m7Xc8ev1dJrns3zmIFBTS8G1zEK+e/6Q0D/YnpxPJ9v7B9P72w/v - 5/vb9/L9ezuTT2lgu3sBgGJ1Ui3Pi4t1zYgCFeUAeTy88FhuKFZTfm/Xh4bn/93scLc7XvpgaCAf - wi/yYCajUywPvqYREho3TrQ89EJxSc3OXh7PZkQtQP1od2e8O94Ze5xuHq95aTjxi7ydVzxDT69p - Lotp7LX1pCym9JbtpIc6tfo5necOiuE8f9TF9pf0x0hoE6/QCP5fN7TLom7XWal/DsMg7GgEzd1Z - fp6ty/Y2gyZ+WGT1NQ2urdd5+PUv8f/0/vi+B+aj2bJ5nbctsWuPK+S7+pIGRV99z3+NvsxWq7LI - Z0/DNq6Jj+xHi2yq80qtPtrZ2d55un3vePveve2Hx9vPTnyO/ShfZpOSOPxZVV9l9Ywwo3fOs7LJ - /VZEKBDzdT5d10V7zQSkduEAfk5nPYbhEFMHxArn1P/mUhjpi2w6L5ZQLf8vGO5JtVit29wwueI2 - OFDzq/7CP4hrfsn/A7UseU6zCAAA + 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 + 9vKWmjsAAA== headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Thu, 07 Apr 2016 21:54:43 GMT'] + Date: ['Fri, 06 May 2016 16:45:52 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/test_network_usage_list.yaml b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/test_network_usage_list.yaml index d0a685ad374..7acec90f0f6 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/test_network_usage_list.yaml +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/test_network_usage_list.yaml @@ -16,21 +16,21 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk - 6UeXWbnOP3qUfg9/pSl/iOej6bqu82X7k/r97u54Z2S/LGb00Ud3m/WkmdbFqi2qZXN3Z7J7/un+ - g93t3cn5zvb+bJZtZ/n03vZ08nDvwd75zsP7D3fururqspjldXP3i2JaV0113o5f5O1VVb+9W1bT - TEBd5U27bu6um+wib+7+ZFG366zUZs1HDo+yWBQtoXJ/x8dumS2Ash0LfQTQZfGDfGbG85ECTftQ - qbmhimllG5k2v8S2/mi9ZBQ+OqnWy1YbmK8tCl1yBvj+cKn5uqWPpy/Xk7KYnr08ns3qvGlyb/yW - qnsBlreiqgBPBXp69jKNwKcXLX2lvTT3kTFtDSHpna9F559DrtXvX+eEUtFef15X65VHBUvl3Z33 - J7PCTg3wtAud3rI01samrTY1LQ0J6Y2vReFPfeR/uBTus43DxFD30/cnroC9BfNKQ79/08pQjVp/ - LaLe95H+4RJVvz9btnl9nk1pUA4TQ9R7H8CyMcD0giWqtvOamVaGatT6axE1wPmHS9TnVTZ7kpXZ - ckrvuXFbgn4dHQCYaQQoNbbERBvXxLQwlKKW/18j5PFqRSLHX32etflVdu2N3JLza7gDHuC0D5le - sTT1WtqGpp0hHbX//xplX1XrNn+TTUqSOIeDoejXYVCGmHZBUlNLSm6hDcz3hkbULkpC/Pj+b5z8 - kv8Hy1oAdb8KAAA= + 6UeXWbnOP3qUfg9/pSl/iOej6bqu82X7k/r9vd3xzsh+Wczoo4/uNutJM62LVVtUy+buzmT3/NP9 + B7vbu5Pzne392SzbzvLpve3p5OHeg73znYf3H+7cXdXVZTHL6+buF8W0rprqvB2/yNurqn57t6ym + mYC6ypt23dxdN9lF3tz9yaJu11mpzZqPHB5lsShaQuX+jo/dMlsAZTsW+gigy+IH+cyM5yMFmvah + UnNDFdPKNjJtfolt/dF6ySh8dFKtl602MF9bFLrkDPD94VJTv/9u1k7n9KYbt6VmMNW3IqbCTPtA + qbklprayjUwbQy1q+/81Yr5u6ePpy/WkLKZnL49nszpvmtwbvyXqXoDlragqwFOBnp69TCPw6UVL + X2kvzX1kTFtDSHrna9E54IsfLp31+9c5oVS015/X1XrlUcFSeXfn/cmssFMDPO1Cp7csjbWxaatN + TUtDQnrja1F4b9/H/odL4j7fOEwMeT99f+oK2FtwrzT0+zetDNmo9dej6qc+1j9cqur3Z8s2r8+z + KY3KYWKoeu8DmDYGmF6wVNV2XjPTypCNWn8tqgY4/3CJ+rzKZk+yMltO6T03bkvQr6MFADONAKXG + lpho45qYFoZS1PL/a4Q8Xq1I5virz7M2v8quvZFbcn4N78oDnPYh0yuWpl5L29C0M6Sj9v9fo+yr + at3mb7JJSRLncDAU/ToMyhDTLkhqaknJLbSB+d7QiNpFSYgf3/+Nk1/y/wCvwtDXDgwAAA== headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Thu, 07 Apr 2016 22:01:51 GMT'] + Date: ['Fri, 06 May 2016 16:46:02 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] diff --git a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/__init__.py b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/__init__.py index 73f6919d352..c4578d074f0 100644 --- a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/__init__.py +++ b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/__init__.py @@ -1,6 +1,2 @@ -import azure.cli.command_modules.profile.account #pylint: disable=unused-import -import azure.cli.command_modules.profile.login #pylint: disable=unused-import -import azure.cli.command_modules.profile.logout #pylint: disable=unused-import -from azure.cli.command_modules.profile.command_tables import generate_command_table - -command_table = generate_command_table() +# pylint: disable=unused-import +from .generated import command_table diff --git a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/_params.py b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/_params.py new file mode 100644 index 00000000000..8cfcd0d6d88 --- /dev/null +++ b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/_params.py @@ -0,0 +1,30 @@ +from azure.cli.commands import COMMON_PARAMETERS as GLOBAL_COMMON_PARAMETERS +from azure.cli._locale import L + +# BASIC PARAMETER CONFIGURATION + +PARAMETER_ALIASES = GLOBAL_COMMON_PARAMETERS.copy() +PARAMETER_ALIASES.update({ + 'password': { + 'name': '--password -p', + 'help': L('User password or client secret. Will prompt if not given.'), + }, + 'service_principal': { + 'name': '--service-principal', + 'action': 'store_true', + 'help': L('The credential representing a service principal.') + }, + 'subscription_name_or_id': { + 'name': '--subscription-name-or-id -n', + 'metavar': 'SUBSCRIPTION_NAME_OR_ID', + 'help': L('Subscription id. Unique name also works.') + }, + 'tenant': { + 'name': '--tenant -t', + 'help': L('The tenant associated with the service principal.') + }, + 'username': { + 'name': '--username -u', + 'help': L('Organization Id or service principal.') + } +}) diff --git a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/account.py b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/account.py deleted file mode 100644 index c4206d9e2b0..00000000000 --- a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/account.py +++ /dev/null @@ -1,43 +0,0 @@ -from azure.cli._profile import Profile -from azure.cli.commands import CommandTable -from azure.cli._locale import L -from azure.cli._util import CLIError -from .command_tables import COMMAND_TABLES -import azure.cli._logging as _logging - -logger = _logging.get_az_logger(__name__) - -command_table = CommandTable() - -COMMAND_TABLES.append(command_table) - -@command_table.command('account list', description=L('List the imported subscriptions.')) -def list_subscriptions(_): - profile = Profile() - subscriptions = profile.load_cached_subscriptions() - if not subscriptions: - logger.warning('Please run "az login" to access your accounts.') - return subscriptions - -@command_table.command('account set') -@command_table.description(L('Set the current subscription')) -@command_table.option('--subscription-name-or-id -n', - metavar='SUBSCRIPTION_NAME_OR_ID', - dest='subscription_name_or_id', - help=L('Subscription Id, unique name also works.'), - required=True) -def set_active_subscription(args): - subscription_name_or_id = args.get('subscription_name_or_id') - if not id: - raise CLIError(L('Please provide subscription id or unique name.')) - - profile = Profile() - profile.set_active_subscription(subscription_name_or_id) - -@command_table.command('account clear') -@command_table.description(L('Clear all stored subscriptions. ' - 'To clear individual, use "logout".')) -def clear(_): - profile = Profile() - profile.logout_all() - diff --git a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/command_tables.py b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/command_tables.py deleted file mode 100644 index beb5d169c87..00000000000 --- a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/command_tables.py +++ /dev/null @@ -1,10 +0,0 @@ -from azure.cli.commands import CommandTable - -COMMAND_TABLES = [] - -def generate_command_table(): - '''Combine the command tables to produce a single command table''' - command_table = CommandTable() - for ct in COMMAND_TABLES: - command_table.update(ct) - return command_table diff --git a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/custom.py b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/custom.py new file mode 100644 index 00000000000..8fc1bdad4f8 --- /dev/null +++ b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/custom.py @@ -0,0 +1,64 @@ +# pylint: disable=too-few-public-methods,too-many-arguments,no-self-use +#TODO: update adal-python to support it +#from azure.cli._debug import should_disable_connection_verify +from adal.adal_error import AdalError + +from azure.cli._profile import Profile +from azure.cli._util import CLIError +import azure.cli._logging as _logging +from azure.cli._locale import L + +logger = _logging.get_az_logger(__name__) + +class ProfileCommands(object): + + def __init__(self, **_): + pass + + def list_subscriptions(self): + '''List the imported subscriptions.''' + profile = Profile() + subscriptions = profile.load_cached_subscriptions() + if not subscriptions: + logger.warning('Please run "az login" to access your accounts.') + return subscriptions + + def set_active_subscription(self, subscription_name_or_id): + '''Set the current subscription''' + if not id: + raise CLIError(L('Please provide subscription id or unique name.')) + profile = Profile() + profile.set_active_subscription(subscription_name_or_id) + + def account_clear(self): + '''Clear all stored subscriptions. To clear individual, use \'logout\'''' + profile = Profile() + profile.logout_all() + + def login(self, username=None, password=None, service_principal=None, tenant=None): + '''Log in to an Azure subscription using Active Directory Organization Id''' + interactive = False + + if username: + if not password: + import getpass + password = getpass.getpass(L('Password: ')) + else: + interactive = True + + profile = Profile() + try: + subscriptions = profile.find_subscriptions_on_login( + interactive, + username, + password, + service_principal, + tenant) + except AdalError as err: + raise CLIError(err) + return list(subscriptions) + + def logout(self, username): + '''Log out from Azure subscription using Active Directory.''' + profile = Profile() + profile.logout(username) diff --git a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/generated.py b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/generated.py new file mode 100644 index 00000000000..21f06e0015b --- /dev/null +++ b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/generated.py @@ -0,0 +1,31 @@ +from __future__ import print_function + +from azure.cli.commands import CommandTable +from azure.cli.commands._auto_command import build_operation, CommandDefinition + +from ._params import PARAMETER_ALIASES +from .custom import ProfileCommands + +command_table = CommandTable() + +# PROFILE COMMANDS + +build_operation( + '', None, ProfileCommands, + [ + CommandDefinition(ProfileCommands.login, 'Result'), + ], command_table, PARAMETER_ALIASES) + +build_operation( + '', None, ProfileCommands, + [ + CommandDefinition(ProfileCommands.logout, 'Result'), + ], command_table, PARAMETER_ALIASES) + +build_operation( + 'account', None, ProfileCommands, + [ + CommandDefinition(ProfileCommands.list_subscriptions, '[Subscription]', 'list'), + CommandDefinition(ProfileCommands.set_active_subscription, 'Result', 'set'), + CommandDefinition(ProfileCommands.account_clear, 'Result', 'clear'), + ], command_table, PARAMETER_ALIASES) diff --git a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/login.py b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/login.py deleted file mode 100644 index 99fa0b2106c..00000000000 --- a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/login.py +++ /dev/null @@ -1,50 +0,0 @@ -from adal.adal_error import AdalError -from azure.cli._profile import Profile -from azure.cli.commands import CommandTable -from azure.cli._locale import L -#TODO: update adal-python to support it -#from azure.cli._debug import should_disable_connection_verify -from azure.cli._util import CLIError -from .command_tables import COMMAND_TABLES - -command_table = CommandTable() - -COMMAND_TABLES.append(command_table) - -@command_table.command('login') -@command_table.description(L('log in to an Azure subscription using Active Directory Organization Id')) # pylint: disable=line-too-long -@command_table.option('--username -u', - help=L('organization Id or service principal. Microsoft Account is not yet supported.')) # pylint: disable=line-too-long -@command_table.option('--password -p', - help=L('user password or client secret, will prompt if not given.')) -@command_table.option('--service-principal', - action='store_true', - help=L('the credential represents a service principal.')) -@command_table.option('--tenant -t', help=L('the tenant associated with the service principal.')) -def login(args): - interactive = False - - username = args.get('username') - password = None - if username: - password = args.get('password') - if not password: - import getpass - password = getpass.getpass(L('Password: ')) - else: - interactive = True - - is_service_principal = args.get('service_principal') - tenant = args.get('tenant') - - profile = Profile() - try: - subscriptions = profile.find_subscriptions_on_login( - interactive, - username, - password, - is_service_principal, - tenant) - except AdalError as err: - raise CLIError(err) - return list(subscriptions) diff --git a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/logout.py b/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/logout.py deleted file mode 100644 index 3bce32d9a96..00000000000 --- a/src/command_modules/azure-cli-profile/azure/cli/command_modules/profile/logout.py +++ /dev/null @@ -1,18 +0,0 @@ -from azure.cli._profile import Profile -from azure.cli.commands import CommandTable -from azure.cli._locale import L - -from .command_tables import COMMAND_TABLES - -command_table = CommandTable() - -COMMAND_TABLES.append(command_table) - -@command_table.command('logout', - description=L('Log out from Azure subscription using Active Directory.')) -@command_table.option('--username -u', - help=L('User name used to log out from Azure Active Directory.'), - required=True) -def logout(args): - profile = Profile() - profile.logout(args['username']) diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/__init__.py b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/__init__.py index 69553b3401f..c4578d074f0 100644 --- a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/__init__.py +++ b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/__init__.py @@ -1,5 +1,2 @@ -from .generated import command_table as generated_command_table -from .custom import command_table as convenience_command_table - -command_table = generated_command_table -command_table.update(convenience_command_table) +# pylint: disable=unused-import +from .generated import command_table diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/_params.py b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/_params.py index 5b163b91f00..5a67de8b664 100644 --- a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/_params.py +++ b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/_params.py @@ -1,12 +1,20 @@ -from azure.cli.commands import COMMON_PARAMETERS as GLOBAL_COMMON_PARAMETERS +from azure.mgmt.resource.resources import (ResourceManagementClient, + ResourceManagementClientConfiguration) + +from azure.cli.commands import COMMON_PARAMETERS as GLOBAL_COMMON_PARAMETERS, patch_aliases +from azure.cli.commands._command_creation import get_mgmt_service_client from azure.cli._locale import L from ._validators import validate_resource_type, validate_parent +# FACTORIES + +def _resource_client_factory(**_): + return get_mgmt_service_client(ResourceManagementClient, ResourceManagementClientConfiguration) + # BASIC PARAMETER CONFIGURATION -PARAMETER_ALIASES = GLOBAL_COMMON_PARAMETERS.copy() -PARAMETER_ALIASES.update({ +PARAMETER_ALIASES = patch_aliases(GLOBAL_COMMON_PARAMETERS, { 'resource_type': { 'name': '--resource-type', 'help': L('the resource type in / format'), diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/custom.py b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/custom.py index da52b9c56d5..fd17a8da803 100644 --- a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/custom.py +++ b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/custom.py @@ -1,59 +1,15 @@ +# pylint: disable=too-few-public-methods,no-self-use,too-many-arguments + from azure.mgmt.resource.resources.models.resource_group import ResourceGroup from azure.cli.parser import IncorrectUsageError from azure.cli.commands import CommandTable -from azure.cli.commands._command_creation import get_mgmt_service_client from azure.cli._locale import L from azure.cli._util import CLIError -command_table = CommandTable() - -def _resource_client_factory(_): - from azure.mgmt.resource.resources import (ResourceManagementClient, - ResourceManagementClientConfiguration) - return get_mgmt_service_client(ResourceManagementClient, ResourceManagementClientConfiguration) - -#### RESOURCE GROUP COMMANDS ################################# - -class ConvenienceResourceGroupCommands(object): # pylint: disable=too-few-public-methods - - def __init__(self, _): - pass - - def list(self, tag=None): # pylint: disable=no-self-use - ''' List resource groups, optionally filtered by a tag. - :param str tag:tag to filter by in 'key[=value]' format - ''' - rcf = _resource_client_factory(None) - - filters = [] - if tag: - key = tag.keys()[0] - filters.append("tagname eq '{}'".format(key)) - filters.append("tagvalue eq '{}'".format(tag[key])) - - filter_text = ' and '.join(filters) if len(filters) > 0 else None - - groups = rcf.resource_groups.list(filter=filter_text) - return list(groups) +from ._params import _resource_client_factory - def create(self, resource_group_name, location, tags=None): # pylint: disable=no-self-use - ''' Create a new resource group. - :param str resource_group_name:the desired resource group name - :param str location:the resource group location - :param str tags:tags in 'a=b;c' format - ''' - rcf = _resource_client_factory(None) - - if rcf.resource_groups.check_existence(resource_group_name): - raise CLIError('Resource group {} already exists'.format(resource_group_name)) - parameters = ResourceGroup( - location=location, - tags=tags - ) - return rcf.resource_groups.create_or_update(resource_group_name, parameters) - -#### RESOURCE COMMANDS ####################################### +command_table = CommandTable() def _list_resources_odata_filter_builder(location=None, resource_type=None, tag=None, name=None): '''Build up OData filter string from parameters @@ -104,19 +60,57 @@ def _resolve_api_version(rcf, resource_type, parent=None): L('API version is required and could not be resolved for resource {}/{}' .format(resource_type.namespace, resource_type.type))) -class ConvenienceResourceCommands(object): # pylint: disable=too-few-public-methods +class ConvenienceResourceGroupCommands(object): + + def __init__(self, **_): + pass + + def list(self, tag=None): # pylint: disable=no-self-use + ''' List resource groups, optionally filtered by a tag. + :param str tag:tag to filter by in 'key[=value]' format + ''' + rcf = _resource_client_factory() + + filters = [] + if tag: + key = list(tag.keys())[0] + filters.append("tagname eq '{}'".format(key)) + filters.append("tagvalue eq '{}'".format(tag[key])) + + filter_text = ' and '.join(filters) if len(filters) > 0 else None + + groups = rcf.resource_groups.list(filter=filter_text) + return list(groups) + + def create(self, resource_group_name, location, tags=None): + ''' Create a new resource group. + :param str resource_group_name:the desired resource group name + :param str location:the resource group location + :param str tags:tags in 'a=b;c' format + ''' + rcf = _resource_client_factory() + + if rcf.resource_groups.check_existence(resource_group_name): + raise CLIError('resource group {} already exists'.format(resource_group_name)) + parameters = ResourceGroup( + location=location, + tags=tags + ) + return rcf.resource_groups.create_or_update(resource_group_name, parameters) + +class ConvenienceResourceCommands(object): - def __init__(self, _): + def __init__(self, **_): pass - def show(self, resource_group, resource_name, resource_type, api_version=None, parent=None): # pylint: disable=too-many-arguments,no-self-use + def show(self, resource_group, resource_name, resource_type, api_version=None, parent=None): ''' Show details of a specific resource in a resource group or subscription - :param str resource-group-name:the containing resource group name - :param str name:the resource name - :param str resource-type:the resource type in format: / - :param str api-version:the API version of the resource provider + :param str resource_group:the containing resource group name + :param str resource_name:the resource name + :param str resource_type:the resource type in format: / + :param str api_version:the API version of the resource provider :param str parent:the name of the parent resource (if needed) in / format''' - rcf = _resource_client_factory(None) + rcf = _resource_client_factory() api_version = _resolve_api_version(rcf, resource_type, parent) \ if not api_version else api_version @@ -132,7 +126,7 @@ def show(self, resource_group, resource_name, resource_type, api_version=None, p ) return results - def list(self, location=None, resource_type=None, tag=None, name=None): # pylint: disable=no-self-use + def list(self, location=None, resource_type=None, tag=None, name=None): ''' List resources EXAMPLES: az resource list --location westus @@ -142,11 +136,11 @@ def list(self, location=None, resource_type=None, tag=None, name=None): # pylint az resource list --tag some* az resource list --tag something=else :param str location:filter by resource location - :param str resource-type:filter by resource type + :param str resource_type:filter by resource type :param str tag:filter by tag in 'a=b;c' format :param str name:filter by resource name ''' - rcf = _resource_client_factory(None) - odata_filter = _list_resources_odata_filter_builder(location, resource_type, tag, name) + rcf = _resource_client_factory() + odata_filter = _list_resources_odata_filter_builder(location, resource_type, str(tag), name) resources = rcf.resources.list(filter=odata_filter) return list(resources) diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/generated.py b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/generated.py index e52026fb422..11697a247fe 100644 --- a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/generated.py +++ b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/generated.py @@ -4,68 +4,58 @@ from azure.mgmt.resource.resources.operations.deployments_operations import DeploymentsOperations from azure.mgmt.resource.resources.operations.deployment_operations_operations \ import DeploymentOperationsOperations -from azure.cli.commands._auto_command import build_operation, AutoCommandDefinition -from azure.cli.commands import CommandTable, LongRunningOperation +from azure.cli.commands._auto_command import build_operation, CommandDefinition +from azure.cli.commands import CommandTable, LongRunningOperation, patch_aliases from azure.cli._locale import L -from ._params import PARAMETER_ALIASES -from .custom import (_resource_client_factory, - ConvenienceResourceGroupCommands, ConvenienceResourceCommands) +from ._params import PARAMETER_ALIASES, _resource_client_factory +from .custom import ConvenienceResourceGroupCommands, ConvenienceResourceCommands command_table = CommandTable() -def _patch_aliases(alias_items): - aliases = PARAMETER_ALIASES.copy() - aliases.update(alias_items) - return aliases - build_operation( 'resource group', 'resource_groups', _resource_client_factory, [ - AutoCommandDefinition( + CommandDefinition( ResourceGroupsOperations.delete, LongRunningOperation(L('Deleting resource group'), L('Resource group deleted'))), - AutoCommandDefinition(ResourceGroupsOperations.get, 'ResourceGroup', 'show'), - AutoCommandDefinition(ResourceGroupsOperations.check_existence, 'Bool', 'exists'), + CommandDefinition(ResourceGroupsOperations.get, 'ResourceGroup', 'show'), + CommandDefinition(ResourceGroupsOperations.check_existence, 'Bool', 'exists'), ], - command_table, - _patch_aliases({ + command_table, patch_aliases(PARAMETER_ALIASES, { 'resource_group_name': {'name': '--name -n'} })) build_operation( 'resource group', None, ConvenienceResourceGroupCommands, [ - AutoCommandDefinition(ConvenienceResourceGroupCommands.list, '[ResourceGroup]'), - AutoCommandDefinition(ConvenienceResourceGroupCommands.create, 'ResourceGroup'), + CommandDefinition(ConvenienceResourceGroupCommands.list, '[ResourceGroup]'), + CommandDefinition(ConvenienceResourceGroupCommands.create, 'ResourceGroup'), ], - command_table, - _patch_aliases({ + command_table, patch_aliases(PARAMETER_ALIASES, { 'resource_group_name': {'name': '--name -n'} })) build_operation( 'resource', None, ConvenienceResourceCommands, [ - AutoCommandDefinition(ConvenienceResourceCommands.list, '[Resource]'), - AutoCommandDefinition(ConvenienceResourceCommands.show, 'Resource'), + CommandDefinition(ConvenienceResourceCommands.list, '[Resource]'), + CommandDefinition(ConvenienceResourceCommands.show, 'Resource'), ], - command_table, - _patch_aliases({ + command_table, patch_aliases(PARAMETER_ALIASES, { 'resource_name': {'name': '--name -n'} })) build_operation( 'tag', 'tags', _resource_client_factory, [ - AutoCommandDefinition(TagsOperations.list, '[Tag]'), - AutoCommandDefinition(TagsOperations.create_or_update, 'Tag', 'create'), - AutoCommandDefinition(TagsOperations.delete, None, 'delete'), - AutoCommandDefinition(TagsOperations.create_or_update_value, 'Tag', 'add-value'), - AutoCommandDefinition(TagsOperations.delete_value, None, 'remove-value'), + CommandDefinition(TagsOperations.list, '[Tag]'), + CommandDefinition(TagsOperations.create_or_update, 'Tag', 'create'), + CommandDefinition(TagsOperations.delete, None, 'delete'), + CommandDefinition(TagsOperations.create_or_update_value, 'Tag', 'add-value'), + CommandDefinition(TagsOperations.delete_value, None, 'remove-value'), ], - command_table, - _patch_aliases({ + command_table, patch_aliases(PARAMETER_ALIASES, { 'tag_name': {'name': '--name -n'}, 'tag_value': {'name': '--value'} })) @@ -73,26 +63,24 @@ def _patch_aliases(alias_items): build_operation( 'resource group deployment', 'deployments', _resource_client_factory, [ - AutoCommandDefinition(DeploymentsOperations.list, '[Deployment]'), - AutoCommandDefinition(DeploymentsOperations.get, 'Deployment', 'show'), - #AutoCommandDefinition(DeploymentsOperations.validate, 'Object'), - #AutoCommandDefinition(DeploymentsOperations.delete, 'Object'), - AutoCommandDefinition(DeploymentsOperations.check_existence, 'Bool', 'exists'), - #AutoCommandDefinition(DeploymentsOperations.cancel, 'Object'), - #AutoCommandDefinition(DeploymentsOperations.create_or_update, 'Object', 'create'), + CommandDefinition(DeploymentsOperations.list, '[Deployment]'), + CommandDefinition(DeploymentsOperations.get, 'Deployment', 'show'), + #CommandDefinition(DeploymentsOperations.validate, 'Object'), + #CommandDefinition(DeploymentsOperations.delete, 'Object'), + CommandDefinition(DeploymentsOperations.check_existence, 'Bool', 'exists'), + #CommandDefinition(DeploymentsOperations.cancel, 'Object'), + #CommandDefinition(DeploymentsOperations.create_or_update, 'Object', 'create'), ], - command_table, - _patch_aliases({ + command_table, patch_aliases(PARAMETER_ALIASES, { 'deployment_name': {'name': '--name -n', 'required': True} })) build_operation( 'resource group deployment operation', 'deployment_operations', _resource_client_factory, [ - AutoCommandDefinition(DeploymentOperationsOperations.list, '[DeploymentOperations]'), - AutoCommandDefinition(DeploymentOperationsOperations.get, 'DeploymentOperations', 'show') + CommandDefinition(DeploymentOperationsOperations.list, '[DeploymentOperations]'), + CommandDefinition(DeploymentOperationsOperations.get, 'DeploymentOperations', 'show') ], - command_table, - _patch_aliases({ + command_table, patch_aliases(PARAMETER_ALIASES, { 'deployment_name': {'name': '--name -n', 'required': True} })) diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/command_specs.py b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/command_specs.py index 3f93dad5e21..bcd553f705b 100644 --- a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/command_specs.py +++ b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/command_specs.py @@ -1,11 +1,40 @@ # AZURE CLI RESOURCE TEST DEFINITIONS +from azure.cli.utils.command_test_script import CommandTestScript + +#pylint: disable=method-hidden +class ResourceGroupScenarioTest(CommandTestScript): + + def set_up(self): + self.resource_group = 'travistestrg' + if self.run('resource group exists -n {}'.format(self.resource_group)): + self.run('resource group delete -n {}'.format(self.resource_group)) + + def test_body(self): + s = self + rg = self.resource_group + s.test('resource group create -n {} -l westus --tag a=b;c'.format(rg), + {'name':'{}'.format(rg), 'tags': {'a':'b', 'c':''}}) + s.test('resource group exists -n {}'.format(rg), True) + s.test('resource group show -n {}'.format(rg), + {'name': rg, 'tags': {'a':'b', 'c':''}}) + s.test('resource group list --tag a=b', {'name': rg, 'tags': {'a':'b', 'c':''}}) + s.run('resource group delete -n {}'.format(rg)) + s.test('resource group exists -n {}'.format(rg), None) + + def tear_down(self): + if self.run('resource group exists -n {}'.format(self.resource_group)): + self.run('resource group delete -n {}'.format(self.resource_group)) + + def __init__(self): + super(ResourceGroupScenarioTest, self).__init__(self.set_up, self.test_body, self.tear_down) + ENV_VAR = {} TEST_DEF = [ { - 'test_name': 'resource_group_list', - 'command': 'resource group list --output json' + 'test_name': 'resource_group_scenario', + 'script': ResourceGroupScenarioTest() }, { 'test_name': 'resource_show_under_group', diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/expected_results.res b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/expected_results.res index 19adb1bd74f..48faaae2fc5 100644 --- a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/expected_results.res +++ b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/expected_results.res @@ -1,4 +1,5 @@ { - "test_resource_group_list": "[\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1116\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1116\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1131\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1131\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1215\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1215\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1397\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1397\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1530\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1530\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1691\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1691\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1804\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1804\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1982\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1982\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup2315\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup2315\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup2316\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup2316\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup2732\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup2732\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup3187\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup3187\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup32\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup32\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup3313\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup3313\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup3661\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup3661\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup381\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup381\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup4175\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup4175\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup4834\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup4834\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup4978\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup4978\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5350\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5350\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5458\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5458\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5584\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5584\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5637\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5637\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5835\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5835\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup6020\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup6020\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7062\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7062\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7154\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7154\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7265\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7265\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7648\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7648\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7917\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7917\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup8241\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup8241\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup8275\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup8275\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup867\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup867\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9079\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9079\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup922\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup922\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9343\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9343\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9345\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9345\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9369\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9369\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9576\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9576\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/availrg\",\n \"location\": \"westus\",\n \"name\": \"availrg\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTeleBenchRG\",\n \"location\": \"westus\",\n \"name\": \"cliTeleBenchRG\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst10658\",\n \"location\": \"westus\",\n \"name\": \"clutst10658\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst10658Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst10658Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst11617\",\n \"location\": \"westus\",\n \"name\": \"clutst11617\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst12131\",\n \"location\": \"westus\",\n \"name\": \"clutst12131\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst14273\",\n \"location\": \"westus\",\n \"name\": \"clutst14273\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst15898\",\n \"location\": \"westus\",\n \"name\": \"clutst15898\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst16319\",\n \"location\": \"westus\",\n \"name\": \"clutst16319\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst16367\",\n \"location\": \"westus\",\n \"name\": \"clutst16367\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst16424\",\n \"location\": \"westus\",\n \"name\": \"clutst16424\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst16599\",\n \"location\": \"westus\",\n \"name\": \"clutst16599\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst18253\",\n \"location\": \"westus\",\n \"name\": \"clutst18253\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst18832\",\n \"location\": \"westus\",\n \"name\": \"clutst18832\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst19840\",\n \"location\": \"westus\",\n \"name\": \"clutst19840\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst19876\",\n \"location\": \"westus\",\n \"name\": \"clutst19876\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst19910\",\n \"location\": \"westus\",\n \"name\": \"clutst19910\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst20217\",\n \"location\": \"westus\",\n \"name\": \"clutst20217\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst22301\",\n \"location\": \"westus\",\n \"name\": \"clutst22301\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst24285\",\n \"location\": \"westus\",\n \"name\": \"clutst24285\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst25492\",\n \"location\": \"westus\",\n \"name\": \"clutst25492\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst25492Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst25492Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst28055\",\n \"location\": \"westus\",\n \"name\": \"clutst28055\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst28400\",\n \"location\": \"westus\",\n \"name\": \"clutst28400\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst28769\",\n \"location\": \"westus\",\n \"name\": \"clutst28769\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst29085\",\n \"location\": \"westus\",\n \"name\": \"clutst29085\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst29333\",\n \"location\": \"westus\",\n \"name\": \"clutst29333\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst30089\",\n \"location\": \"westus\",\n \"name\": \"clutst30089\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst31207\",\n \"location\": \"westus\",\n \"name\": \"clutst31207\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst31335\",\n \"location\": \"westus\",\n \"name\": \"clutst31335\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst32303\",\n \"location\": \"westus\",\n \"name\": \"clutst32303\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst34632\",\n \"location\": \"westus\",\n \"name\": \"clutst34632\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst37223\",\n \"location\": \"westus\",\n \"name\": \"clutst37223\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst38483\",\n \"location\": \"westus\",\n \"name\": \"clutst38483\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst39112\",\n \"location\": \"westus\",\n \"name\": \"clutst39112\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst40026\",\n \"location\": \"westus\",\n \"name\": \"clutst40026\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst41390\",\n \"location\": \"westus\",\n \"name\": \"clutst41390\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst42144\",\n \"location\": \"westus\",\n \"name\": \"clutst42144\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst42144Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst42144Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst43083\",\n \"location\": \"westus\",\n \"name\": \"clutst43083\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst43810\",\n \"location\": \"westus\",\n \"name\": \"clutst43810\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst43963\",\n \"location\": \"westus\",\n \"name\": \"clutst43963\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst44249\",\n \"location\": \"westus\",\n \"name\": \"clutst44249\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst44935\",\n \"location\": \"westus\",\n \"name\": \"clutst44935\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst45773\",\n \"location\": \"westus\",\n \"name\": \"clutst45773\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst47034\",\n \"location\": \"westus\",\n \"name\": \"clutst47034\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst48178\",\n \"location\": \"westus\",\n \"name\": \"clutst48178\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst50877\",\n \"location\": \"westus\",\n \"name\": \"clutst50877\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst50926\",\n \"location\": \"westus\",\n \"name\": \"clutst50926\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst52016\",\n \"location\": \"westus\",\n \"name\": \"clutst52016\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst53369\",\n \"location\": \"westus\",\n \"name\": \"clutst53369\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst54011\",\n \"location\": \"westus\",\n \"name\": \"clutst54011\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"testtag\": \"testval\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst55339\",\n \"location\": \"westus\",\n \"name\": \"clutst55339\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst55642\",\n \"location\": \"westus\",\n \"name\": \"clutst55642\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst56010\",\n \"location\": \"westus\",\n \"name\": \"clutst56010\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst56010Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst56010Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst57974\",\n \"location\": \"westus\",\n \"name\": \"clutst57974\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst59108\",\n \"location\": \"westus\",\n \"name\": \"clutst59108\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst59926\",\n \"location\": \"westus\",\n \"name\": \"clutst59926\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst60612\",\n \"location\": \"westus\",\n \"name\": \"clutst60612\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst62393\",\n \"location\": \"westus\",\n \"name\": \"clutst62393\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst62671\",\n \"location\": \"westus\",\n \"name\": \"clutst62671\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst63961\",\n \"location\": \"westus\",\n \"name\": \"clutst63961\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst64118\",\n \"location\": \"westus\",\n \"name\": \"clutst64118\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst64902\",\n \"location\": \"westus\",\n \"name\": \"clutst64902\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst65563\",\n \"location\": \"westus\",\n \"name\": \"clutst65563\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst65944\",\n \"location\": \"westus\",\n \"name\": \"clutst65944\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst68622\",\n \"location\": \"westus\",\n \"name\": \"clutst68622\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst69042\",\n \"location\": \"westus\",\n \"name\": \"clutst69042\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst72034\",\n \"location\": \"westus\",\n \"name\": \"clutst72034\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst72937\",\n \"location\": \"westus\",\n \"name\": \"clutst72937\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst73017\",\n \"location\": \"westus\",\n \"name\": \"clutst73017\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst73226\",\n \"location\": \"westus\",\n \"name\": \"clutst73226\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst73623\",\n \"location\": \"westus\",\n \"name\": \"clutst73623\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst74333\",\n \"location\": \"westus\",\n \"name\": \"clutst74333\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst74607\",\n \"location\": \"westus\",\n \"name\": \"clutst74607\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst75011\",\n \"location\": \"westus\",\n \"name\": \"clutst75011\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst76021\",\n \"location\": \"westus\",\n \"name\": \"clutst76021\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst76811\",\n \"location\": \"westus\",\n \"name\": \"clutst76811\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst77155\",\n \"location\": \"westus\",\n \"name\": \"clutst77155\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst78595\",\n \"location\": \"westus\",\n \"name\": \"clutst78595\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst81406\",\n \"location\": \"westus\",\n \"name\": \"clutst81406\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst82639\",\n \"location\": \"westus\",\n \"name\": \"clutst82639\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst82782\",\n \"location\": \"westus\",\n \"name\": \"clutst82782\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst83830\",\n \"location\": \"westus\",\n \"name\": \"clutst83830\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst84001\",\n \"location\": \"westus\",\n \"name\": \"clutst84001\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst84215\",\n \"location\": \"westus\",\n \"name\": \"clutst84215\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst84761\",\n \"location\": \"westus\",\n \"name\": \"clutst84761\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst85399\",\n \"location\": \"westus\",\n \"name\": \"clutst85399\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst86517\",\n \"location\": \"westus\",\n \"name\": \"clutst86517\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst86564\",\n \"location\": \"westus\",\n \"name\": \"clutst86564\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst86711\",\n \"location\": \"westus\",\n \"name\": \"clutst86711\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst88326\",\n \"location\": \"westus\",\n \"name\": \"clutst88326\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst88434\",\n \"location\": \"westus\",\n \"name\": \"clutst88434\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst88867\",\n \"location\": \"westus\",\n \"name\": \"clutst88867\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst89058\",\n \"location\": \"westus\",\n \"name\": \"clutst89058\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst89058Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst89058Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst89757\",\n \"location\": \"westus\",\n \"name\": \"clutst89757\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst89757Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst89757Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst90450\",\n \"location\": \"westus\",\n \"name\": \"clutst90450\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst90450Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst90450Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst92020\",\n \"location\": \"westus\",\n \"name\": \"clutst92020\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst92142\",\n \"location\": \"westus\",\n \"name\": \"clutst92142\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst93247\",\n \"location\": \"westus\",\n \"name\": \"clutst93247\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst95104\",\n \"location\": \"westus\",\n \"name\": \"clutst95104\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst96863\",\n \"location\": \"westus\",\n \"name\": \"clutst96863\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst96978\",\n \"location\": \"westus\",\n \"name\": \"clutst96978\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst97385\",\n \"location\": \"westus\",\n \"name\": \"clutst97385\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst98032\",\n \"location\": \"westus\",\n \"name\": \"clutst98032\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst98129\",\n \"location\": \"westus\",\n \"name\": \"clutst98129\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst98581\",\n \"location\": \"westus\",\n \"name\": \"clutst98581\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-ApplicationInsights-CentralUS\",\n \"location\": \"centralus\",\n \"name\": \"Default-ApplicationInsights-CentralUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-Networking\",\n \"location\": \"westus\",\n \"name\": \"Default-Networking\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-NotificationHubs-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-NotificationHubs-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-ServiceBus-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-ServiceBus-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-SQL-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-SQL-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-Storage-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-Storage-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-Web-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-Web-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/destanko-test1\",\n \"location\": \"westus\",\n \"name\": \"destanko-test1\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/destanko-test1233333\",\n \"location\": \"westus\",\n \"name\": \"destanko-test1233333\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/ecvm1458938841925RG\",\n \"location\": \"southeastasia\",\n \"name\": \"ecvm1458938841925RG\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/foozap01\",\n \"location\": \"westus\",\n \"name\": \"foozap01\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/myvms\",\n \"location\": \"westus\",\n \"name\": \"myvms\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/ppppp2\",\n \"location\": \"southcentralus\",\n \"name\": \"ppppp2\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/pppppp\",\n \"location\": \"westus\",\n \"name\": \"pppppp\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/r1\",\n \"location\": \"westus\",\n \"name\": \"r1\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/testrg15109\",\n \"location\": \"westus\",\n \"name\": \"testrg15109\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/testrg16663\",\n \"location\": \"westus\",\n \"name\": \"testrg16663\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/testrg18579\",\n \"location\": \"westus\",\n \"name\": \"testrg18579\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/testrg8559\",\n \"location\": \"westus\",\n \"name\": \"testrg8559\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup\",\n \"location\": \"westus\",\n \"name\": \"TravisTestResourceGroup\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestADE1370\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestADE1370\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplattestadla7278\",\n \"location\": \"southcentralus\",\n \"name\": \"xplattestadla7278\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestCacheRG\",\n \"location\": \"westus\",\n \"name\": \"xplatTestCacheRG\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreate1218\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreate1218\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreate3656\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreate3656\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreateDisk2502\",\n \"location\": \"southeastasia\",\n \"name\": \"xplatTestGCreateDisk2502\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-disk-attachnew-detach-tests\": \"2016-04-29T12:01:11.054Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreateDns2167\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreateDns2167\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreateDns7046\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreateDns7046\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreateLbNat3\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreateLbNat3\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGExpressRoute3509\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGExpressRoute3509\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGExtension5940\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestGExtension5940\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-extension-tests\": \"2016-02-29T08:05:18.907Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGExtension9085\",\n \"location\": \"southeastasia\",\n \"name\": \"xplatTestGExtension9085\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-extension-tests\": \"2016-01-21T23:38:57.711Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGroupGatewayCon7412\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGroupGatewayCon7412\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGSz6241\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestGSz6241\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-sizes-tests\": \"2016-02-02T13:11:46.487Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGVMDocker2951\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestGVMDocker2951\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-docker-tests\": \"2016-02-18T16:05:48.920Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGVMDocker6705\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestGVMDocker6705\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-docker-tests\": \"2016-02-29T12:20:36.945Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource1531\",\n \"location\": \"westus\",\n \"name\": \"xTestResource1531\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource1730\",\n \"location\": \"westus\",\n \"name\": \"xTestResource1730\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource194\",\n \"location\": \"westus\",\n \"name\": \"xTestResource194\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource2039\",\n \"location\": \"westus\",\n \"name\": \"xTestResource2039\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource2660\",\n \"location\": \"westus\",\n \"name\": \"xTestResource2660\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource2807\",\n \"location\": \"westus\",\n \"name\": \"xTestResource2807\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource318\",\n \"location\": \"southcentralus\",\n \"name\": \"xTestResource318\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource3362\",\n \"location\": \"westus\",\n \"name\": \"xTestResource3362\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource3559\",\n \"location\": \"westus\",\n \"name\": \"xTestResource3559\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource411\",\n \"location\": \"westus\",\n \"name\": \"xTestResource411\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource4219\",\n \"location\": \"westus\",\n \"name\": \"xTestResource4219\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource475\",\n \"location\": \"westus\",\n \"name\": \"xTestResource475\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource5203\",\n \"location\": \"westus\",\n \"name\": \"xTestResource5203\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource5515\",\n \"location\": \"westus\",\n \"name\": \"xTestResource5515\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource723\",\n \"location\": \"southcentralus\",\n \"name\": \"xTestResource723\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource7252\",\n \"location\": \"westus\",\n \"name\": \"xTestResource7252\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource7909\",\n \"location\": \"westus\",\n \"name\": \"xTestResource7909\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource811\",\n \"location\": \"westus\",\n \"name\": \"xTestResource811\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource9256\",\n \"location\": \"westus\",\n \"name\": \"xTestResource9256\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource9641\",\n \"location\": \"westus\",\n \"name\": \"xTestResource9641\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource9737\",\n \"location\": \"westus\",\n \"name\": \"xTestResource9737\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/ygvmgroup\",\n \"location\": \"westus\",\n \"name\": \"ygvmgroup\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/yugangw\",\n \"location\": \"westus\",\n \"name\": \"yugangw\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n }\n]\n", + "test_resource_group_list": "[\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1116\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1116\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1131\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1131\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1215\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1215\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1397\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1397\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1530\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1530\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1691\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1691\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1804\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1804\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup1982\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup1982\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup2315\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup2315\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup2316\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup2316\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup2732\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup2732\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup3187\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup3187\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup32\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup32\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup3313\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup3313\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup3661\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup3661\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup381\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup381\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup4175\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup4175\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup4834\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup4834\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup4978\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup4978\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5350\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5350\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5458\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5458\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5584\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5584\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5637\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5637\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup5835\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup5835\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup6020\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup6020\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7062\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7062\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7154\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7154\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7265\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7265\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7648\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7648\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7681\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7681\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup7917\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup7917\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup8241\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup8241\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup8275\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup8275\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup867\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup867\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9079\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9079\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup922\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup922\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9343\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9343\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9345\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9345\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9369\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9369\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9469\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9469\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/armclistorageGroup9576\",\n \"location\": \"westus\",\n \"name\": \"armclistorageGroup9576\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/availrg\",\n \"location\": \"westus\",\n \"name\": \"availrg\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTeleBenchRG\",\n \"location\": \"westus\",\n \"name\": \"cliTeleBenchRG\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses\",\n \"location\": \"westus\",\n \"name\": \"cliTestRg_VmListIpAddresses\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst10658\",\n \"location\": \"westus\",\n \"name\": \"clutst10658\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst10658Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst10658Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst11617\",\n \"location\": \"westus\",\n \"name\": \"clutst11617\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst12131\",\n \"location\": \"westus\",\n \"name\": \"clutst12131\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst14273\",\n \"location\": \"westus\",\n \"name\": \"clutst14273\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst15898\",\n \"location\": \"westus\",\n \"name\": \"clutst15898\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst16319\",\n \"location\": \"westus\",\n \"name\": \"clutst16319\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst16367\",\n \"location\": \"westus\",\n \"name\": \"clutst16367\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst16424\",\n \"location\": \"westus\",\n \"name\": \"clutst16424\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst16599\",\n \"location\": \"westus\",\n \"name\": \"clutst16599\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst18253\",\n \"location\": \"westus\",\n \"name\": \"clutst18253\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst18832\",\n \"location\": \"westus\",\n \"name\": \"clutst18832\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst19840\",\n \"location\": \"westus\",\n \"name\": \"clutst19840\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst19876\",\n \"location\": \"westus\",\n \"name\": \"clutst19876\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst19910\",\n \"location\": \"westus\",\n \"name\": \"clutst19910\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst20217\",\n \"location\": \"westus\",\n \"name\": \"clutst20217\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst22301\",\n \"location\": \"westus\",\n \"name\": \"clutst22301\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst24285\",\n \"location\": \"westus\",\n \"name\": \"clutst24285\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst25492\",\n \"location\": \"westus\",\n \"name\": \"clutst25492\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst25492Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst25492Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst28055\",\n \"location\": \"westus\",\n \"name\": \"clutst28055\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst28400\",\n \"location\": \"westus\",\n \"name\": \"clutst28400\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst28769\",\n \"location\": \"westus\",\n \"name\": \"clutst28769\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst29085\",\n \"location\": \"westus\",\n \"name\": \"clutst29085\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst29333\",\n \"location\": \"westus\",\n \"name\": \"clutst29333\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst30089\",\n \"location\": \"westus\",\n \"name\": \"clutst30089\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst31207\",\n \"location\": \"westus\",\n \"name\": \"clutst31207\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst31335\",\n \"location\": \"westus\",\n \"name\": \"clutst31335\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst32303\",\n \"location\": \"westus\",\n \"name\": \"clutst32303\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst34632\",\n \"location\": \"westus\",\n \"name\": \"clutst34632\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst37223\",\n \"location\": \"westus\",\n \"name\": \"clutst37223\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst38483\",\n \"location\": \"westus\",\n \"name\": \"clutst38483\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst39112\",\n \"location\": \"westus\",\n \"name\": \"clutst39112\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst40026\",\n \"location\": \"westus\",\n \"name\": \"clutst40026\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst41390\",\n \"location\": \"westus\",\n \"name\": \"clutst41390\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst42144\",\n \"location\": \"westus\",\n \"name\": \"clutst42144\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst42144Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst42144Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst43083\",\n \"location\": \"westus\",\n \"name\": \"clutst43083\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst43810\",\n \"location\": \"westus\",\n \"name\": \"clutst43810\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst43963\",\n \"location\": \"westus\",\n \"name\": \"clutst43963\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst44249\",\n \"location\": \"westus\",\n \"name\": \"clutst44249\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst44935\",\n \"location\": \"westus\",\n \"name\": \"clutst44935\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst45773\",\n \"location\": \"westus\",\n \"name\": \"clutst45773\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst47034\",\n \"location\": \"westus\",\n \"name\": \"clutst47034\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst48178\",\n \"location\": \"westus\",\n \"name\": \"clutst48178\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst50877\",\n \"location\": \"westus\",\n \"name\": \"clutst50877\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst50926\",\n \"location\": \"westus\",\n \"name\": \"clutst50926\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst52016\",\n \"location\": \"westus\",\n \"name\": \"clutst52016\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst53369\",\n \"location\": \"westus\",\n \"name\": \"clutst53369\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst54011\",\n \"location\": \"westus\",\n \"name\": \"clutst54011\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"testtag\": \"testval\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst55339\",\n \"location\": \"westus\",\n \"name\": \"clutst55339\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst55642\",\n \"location\": \"westus\",\n \"name\": \"clutst55642\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst56010\",\n \"location\": \"westus\",\n \"name\": \"clutst56010\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst56010Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst56010Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst57974\",\n \"location\": \"westus\",\n \"name\": \"clutst57974\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst59108\",\n \"location\": \"westus\",\n \"name\": \"clutst59108\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst59926\",\n \"location\": \"westus\",\n \"name\": \"clutst59926\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst60612\",\n \"location\": \"westus\",\n \"name\": \"clutst60612\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst62393\",\n \"location\": \"westus\",\n \"name\": \"clutst62393\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst62671\",\n \"location\": \"westus\",\n \"name\": \"clutst62671\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst63961\",\n \"location\": \"westus\",\n \"name\": \"clutst63961\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst64118\",\n \"location\": \"westus\",\n \"name\": \"clutst64118\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst64902\",\n \"location\": \"westus\",\n \"name\": \"clutst64902\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst65563\",\n \"location\": \"westus\",\n \"name\": \"clutst65563\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst65944\",\n \"location\": \"westus\",\n \"name\": \"clutst65944\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst68622\",\n \"location\": \"westus\",\n \"name\": \"clutst68622\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst69042\",\n \"location\": \"westus\",\n \"name\": \"clutst69042\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst72034\",\n \"location\": \"westus\",\n \"name\": \"clutst72034\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst72937\",\n \"location\": \"westus\",\n \"name\": \"clutst72937\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst73017\",\n \"location\": \"westus\",\n \"name\": \"clutst73017\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst73226\",\n \"location\": \"westus\",\n \"name\": \"clutst73226\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst73623\",\n \"location\": \"westus\",\n \"name\": \"clutst73623\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst74333\",\n \"location\": \"westus\",\n \"name\": \"clutst74333\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst74607\",\n \"location\": \"westus\",\n \"name\": \"clutst74607\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst75011\",\n \"location\": \"westus\",\n \"name\": \"clutst75011\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst76021\",\n \"location\": \"westus\",\n \"name\": \"clutst76021\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst76811\",\n \"location\": \"westus\",\n \"name\": \"clutst76811\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst77155\",\n \"location\": \"westus\",\n \"name\": \"clutst77155\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst78595\",\n \"location\": \"westus\",\n \"name\": \"clutst78595\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst81406\",\n \"location\": \"westus\",\n \"name\": \"clutst81406\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst82639\",\n \"location\": \"westus\",\n \"name\": \"clutst82639\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst82782\",\n \"location\": \"westus\",\n \"name\": \"clutst82782\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst83830\",\n \"location\": \"westus\",\n \"name\": \"clutst83830\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst84001\",\n \"location\": \"westus\",\n \"name\": \"clutst84001\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst84215\",\n \"location\": \"westus\",\n \"name\": \"clutst84215\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst84761\",\n \"location\": \"westus\",\n \"name\": \"clutst84761\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst85399\",\n \"location\": \"westus\",\n \"name\": \"clutst85399\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst86517\",\n \"location\": \"westus\",\n \"name\": \"clutst86517\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst86564\",\n \"location\": \"westus\",\n \"name\": \"clutst86564\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst86711\",\n \"location\": \"westus\",\n \"name\": \"clutst86711\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst88326\",\n \"location\": \"westus\",\n \"name\": \"clutst88326\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst88434\",\n \"location\": \"westus\",\n \"name\": \"clutst88434\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst88867\",\n \"location\": \"westus\",\n \"name\": \"clutst88867\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst89058\",\n \"location\": \"westus\",\n \"name\": \"clutst89058\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst89058Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst89058Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst89757\",\n \"location\": \"westus\",\n \"name\": \"clutst89757\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst89757Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst89757Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst90450\",\n \"location\": \"westus\",\n \"name\": \"clutst90450\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst90450Destination\",\n \"location\": \"westus\",\n \"name\": \"clutst90450Destination\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst92020\",\n \"location\": \"westus\",\n \"name\": \"clutst92020\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst92142\",\n \"location\": \"westus\",\n \"name\": \"clutst92142\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst93247\",\n \"location\": \"westus\",\n \"name\": \"clutst93247\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst95104\",\n \"location\": \"westus\",\n \"name\": \"clutst95104\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst96863\",\n \"location\": \"westus\",\n \"name\": \"clutst96863\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst96978\",\n \"location\": \"westus\",\n \"name\": \"clutst96978\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst97385\",\n \"location\": \"westus\",\n \"name\": \"clutst97385\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst98032\",\n \"location\": \"westus\",\n \"name\": \"clutst98032\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst98129\",\n \"location\": \"westus\",\n \"name\": \"clutst98129\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clutst98581\",\n \"location\": \"westus\",\n \"name\": \"clutst98581\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-ApplicationInsights-CentralUS\",\n \"location\": \"centralus\",\n \"name\": \"Default-ApplicationInsights-CentralUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-Networking\",\n \"location\": \"westus\",\n \"name\": \"Default-Networking\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-NotificationHubs-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-NotificationHubs-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-ServiceBus-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-ServiceBus-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-SQL-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-SQL-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-Storage-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-Storage-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/Default-Web-WestUS\",\n \"location\": \"westus\",\n \"name\": \"Default-Web-WestUS\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/destanko-test1\",\n \"location\": \"westus\",\n \"name\": \"destanko-test1\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/destanko-test1233333\",\n \"location\": \"westus\",\n \"name\": \"destanko-test1233333\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/ecvm1458938841925RG\",\n \"location\": \"southeastasia\",\n \"name\": \"ecvm1458938841925RG\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/foozap01\",\n \"location\": \"westus\",\n \"name\": \"foozap01\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/myvms\",\n \"location\": \"westus\",\n \"name\": \"myvms\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/ppppp2\",\n \"location\": \"southcentralus\",\n \"name\": \"ppppp2\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/pppppp\",\n \"location\": \"westus\",\n \"name\": \"pppppp\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/r1\",\n \"location\": \"westus\",\n \"name\": \"r1\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/testrg15109\",\n \"location\": \"westus\",\n \"name\": \"testrg15109\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/testrg16663\",\n \"location\": \"westus\",\n \"name\": \"testrg16663\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/testrg18579\",\n \"location\": \"westus\",\n \"name\": \"testrg18579\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/testrg8559\",\n \"location\": \"westus\",\n \"name\": \"testrg8559\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/TravisTestResourceGroup\",\n \"location\": \"westus\",\n \"name\": \"TravisTestResourceGroup\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": null\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestADE1370\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestADE1370\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestADE6431\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestADE6431\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplattestadla7278\",\n \"location\": \"southcentralus\",\n \"name\": \"xplattestadla7278\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreate1218\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreate1218\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreate3656\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreate3656\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreateDisk2502\",\n \"location\": \"southeastasia\",\n \"name\": \"xplatTestGCreateDisk2502\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-disk-attachnew-detach-tests\": \"2016-04-29T12:01:11.054Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreateDns2167\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreateDns2167\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreateDns7046\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreateDns7046\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGCreateLbNat3\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGCreateLbNat3\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGExpressRoute3509\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGExpressRoute3509\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGExtension5940\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestGExtension5940\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-extension-tests\": \"2016-02-29T08:05:18.907Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGExtension9085\",\n \"location\": \"southeastasia\",\n \"name\": \"xplatTestGExtension9085\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-extension-tests\": \"2016-01-21T23:38:57.711Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGroupGatewayCon7412\",\n \"location\": \"westus\",\n \"name\": \"xplatTestGroupGatewayCon7412\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGSz6241\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestGSz6241\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-sizes-tests\": \"2016-02-02T13:11:46.487Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGVMDocker2951\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestGVMDocker2951\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-docker-tests\": \"2016-02-18T16:05:48.920Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGVMDocker6705\",\n \"location\": \"eastus\",\n \"name\": \"xplatTestGVMDocker6705\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vm-docker-tests\": \"2016-02-29T12:20:36.945Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestVMSSCreate2308\",\n \"location\": \"southeastasia\",\n \"name\": \"xplatTestVMSSCreate2308\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"arm-cli-vmss-create-tests\": \"2016-05-03T08:27:30.109Z\"\n }\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource1531\",\n \"location\": \"westus\",\n \"name\": \"xTestResource1531\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource1730\",\n \"location\": \"westus\",\n \"name\": \"xTestResource1730\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource194\",\n \"location\": \"westus\",\n \"name\": \"xTestResource194\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource2039\",\n \"location\": \"westus\",\n \"name\": \"xTestResource2039\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource2660\",\n \"location\": \"westus\",\n \"name\": \"xTestResource2660\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource2807\",\n \"location\": \"westus\",\n \"name\": \"xTestResource2807\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource318\",\n \"location\": \"southcentralus\",\n \"name\": \"xTestResource318\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource3362\",\n \"location\": \"westus\",\n \"name\": \"xTestResource3362\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource3559\",\n \"location\": \"westus\",\n \"name\": \"xTestResource3559\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource411\",\n \"location\": \"westus\",\n \"name\": \"xTestResource411\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource4219\",\n \"location\": \"westus\",\n \"name\": \"xTestResource4219\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource475\",\n \"location\": \"westus\",\n \"name\": \"xTestResource475\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource5203\",\n \"location\": \"westus\",\n \"name\": \"xTestResource5203\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource5515\",\n \"location\": \"westus\",\n \"name\": \"xTestResource5515\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource723\",\n \"location\": \"southcentralus\",\n \"name\": \"xTestResource723\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource7252\",\n \"location\": \"westus\",\n \"name\": \"xTestResource7252\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource757\",\n \"location\": \"westus\",\n \"name\": \"xTestResource757\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource7909\",\n \"location\": \"westus\",\n \"name\": \"xTestResource7909\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource811\",\n \"location\": \"westus\",\n \"name\": \"xTestResource811\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource9256\",\n \"location\": \"westus\",\n \"name\": \"xTestResource9256\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource9262\",\n \"location\": \"westus\",\n \"name\": \"xTestResource9262\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource9641\",\n \"location\": \"westus\",\n \"name\": \"xTestResource9641\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xTestResource9737\",\n \"location\": \"westus\",\n \"name\": \"xTestResource9737\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/ygvmgroup\",\n \"location\": \"westus\",\n \"name\": \"ygvmgroup\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/yugangw\",\n \"location\": \"westus\",\n \"name\": \"yugangw\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/yugangw2\",\n \"location\": \"westus\",\n \"name\": \"yugangw2\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n },\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/yugangw3\",\n \"location\": \"westus\",\n \"name\": \"yugangw3\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {}\n }\n]\n", + "test_resource_group_scenario": "{\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestrg\",\n \"location\": \"westus\",\n \"name\": \"travistestrg\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"a\": \"b\",\n \"c\": \"\"\n }\n}true{\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestrg\",\n \"location\": \"westus\",\n \"name\": \"travistestrg\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"a\": \"b\",\n \"c\": \"\"\n }\n}[\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestrg\",\n \"location\": \"westus\",\n \"name\": \"travistestrg\",\n \"properties\": {\n \"provisioningState\": \"Succeeded\"\n },\n \"tags\": {\n \"a\": \"b\",\n \"c\": \"\"\n }\n }\n]", "test_resource_show_under_group": "{\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/XPLATTESTGEXTENSION9085/providers/Microsoft.Compute/virtualMachines/xplatvmExt1314\",\n \"location\": \"southeastasia\",\n \"name\": \"xplatvmExt1314\",\n \"plan\": null,\n \"properties\": {\n \"diagnosticsProfile\": {\n \"bootDiagnostics\": {\n \"enabled\": true,\n \"storageUri\": \"https://xplatstoragext4633.blob.core.windows.net/\"\n }\n },\n \"hardwareProfile\": {\n \"vmSize\": \"Standard_A1\"\n },\n \"networkProfile\": {\n \"networkInterfaces\": [\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGExtension9085/providers/Microsoft.Network/networkInterfaces/xplatnicExt4843\",\n \"properties\": {},\n \"resourceGroup\": \"xplatTestGExtension9085\"\n }\n ]\n },\n \"osProfile\": {\n \"adminUsername\": \"azureuser\",\n \"computerName\": \"xplatvmExt1314\",\n \"secrets\": [],\n \"windowsConfiguration\": {\n \"enableAutomaticUpdates\": true,\n \"provisionVMAgent\": true\n }\n },\n \"provisioningState\": \"Succeeded\",\n \"storageProfile\": {\n \"dataDisks\": [],\n \"imageReference\": {\n \"offer\": \"WindowsServerEssentials\",\n \"publisher\": \"MicrosoftWindowsServerEssentials\",\n \"sku\": \"WindowsServerEssentials\",\n \"version\": \"1.0.20131018\"\n },\n \"osDisk\": {\n \"caching\": \"ReadWrite\",\n \"createOption\": \"FromImage\",\n \"name\": \"cli1eaed78b36def353-os-1453419539945\",\n \"osType\": \"Windows\",\n \"vhd\": {\n \"uri\": \"https://xplatstoragext4633.blob.core.windows.net/xplatstoragecntext1789/cli1eaed78b36def353-os-1453419539945.vhd\"\n }\n }\n },\n \"vmId\": \"0a46768d-a544-4d4c-afdc-92651103ee16\"\n },\n \"resourceGroup\": \"XPLATTESTGEXTENSION9085\",\n \"tags\": {},\n \"type\": \"Microsoft.Compute/virtualMachines\"\n}\n" } \ No newline at end of file diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_group_list.yaml b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_group_list.yaml deleted file mode 100644 index f1a81e052fb..00000000000 --- a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_group_list.yaml +++ /dev/null @@ -1,86 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Type: [application/json; charset=utf-8] - User-Agent: [python/2.7.11 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 - Azure-SDK-For-Python AZURECLI_0.0.32] - accept-language: [en-US] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups?api-version=2015-11-01 - response: - body: - string: !!binary | - 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 - headers: - cache-control: [no-cache] - content-encoding: [gzip] - content-length: ['3300'] - content-type: [application/json; charset=utf-8] - date: ['Tue, 03 May 2016 00:01:41 GMT'] - expires: ['-1'] - pragma: [no-cache] - strict-transport-security: [max-age=31536000; includeSubDomains] - vary: [Accept-Encoding] - status: {code: 200, message: OK} -version: 1 diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_group_scenario.yaml b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_group_scenario.yaml new file mode 100644 index 00000000000..77f1b3439fc --- /dev/null +++ b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_group_scenario.yaml @@ -0,0 +1,355 @@ +interactions: +- request: + body: !!binary | + Y2xpZW50X2lkPTA0YjA3Nzk1LThkZGItNDYxYS1iYmVlLTAyZjllMWJmN2I0NiZyZWZyZXNoX3Rv + a2VuPUFBQUJBQUFBaUw5S24yWjI3VXVidldGUGJtMGdMWXZORVd0dTVqakZ0cmVramRXdVhoaUdG + RmhkeEpxUXdUcUlVTkFEeHUyTU1GVVp4OHlNNU1pMllQNTZxZ2VKa2NkWV9qYVdFVGF2LTBPTS03 + YlljaTA0UWlIUnNRYW9yM1FISXpWd2NwSUhZQV90QTd0d3JQODRRYW9pWWlNRHRKR3RXNFRZMWIz + U2ZBbFAzTUZnN1dacHdkZ1JZaDNjYk9QdGhjUU1GWi1RZ1BBZTRadFNSWWRLYWNxMlFtV3dvNk92 + MmNwa3BlM3I3Z2VvVHZkT1R2VjIwMlZCdEVVQl9vczVYWEQ5bEtYTmVpaWt2bUxZUHNMcHZhOVVN + SjdDSlFfOXVrc0hzU0NrSl9yVm1EMWFfTGNkQjlxY0Q4ZjduQl8tUVdscnN3SWY4RUYwcjczZHRF + MW00Z0dHOWNZa24xMkxjU1hzRUVjSWh4VzJITGJPOUxXU2tjYy1RdUNSLWh4amlBTU9WNHVwR2Vl + S1hyZmN5WTFHd05BUS1XNXllRkhnR2h6dDQxbjJsS3UxWWRMS1hsTVFRalVrcTRCTGp1SVpNVUd3 + Q2I3dXAwa3RIUEhYUGw5RkZhR1hLU05LWGY2bS13NXdIamZLUnFhdUpVTTdNR1JDUjQwS1ZaX1E5 + UlNfRHlzal9zZWFPNDMxSThVQkJTU2ppUm9Vc0lRajFGR3NzQ3h5b0E4TkdYbXNQVnV6RDRNc3pV + MjJySlQ4dUlFMmQweC10cGRpWVQwS25jdHdWNk1LODVFU0xOOGdQdFN1RGhjd2tVTmJnZEFvM3lq + ZDdJNzQ3U0liMWkwdXFaWVpaX2Qwcmh4U1RmSmVrZmE3eE4wSVBVSFZfU0ktSXlBQSZncmFudF90 + eXBlPXJlZnJlc2hfdG9rZW4mcmVzb3VyY2U9aHR0cHMlM0ElMkYlMkZtYW5hZ2VtZW50LmNvcmUu + d2luZG93cy5uZXQlMkY= + headers: + Accept: ['*/*'] + Accept-Charset: [utf-8] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['812'] + User-Agent: [python-requests/2.9.1] + content-type: [application/x-www-form-urlencoded] + return-client-request-id: ['true'] + x-client-CPU: [x86] + x-client-OS: [win32] + x-client-SKU: [Python] + x-client-Ver: [0.2.0] + method: POST + uri: https://login.microsoftonline.com/54826b22-38d6-4fb2-bad9-b7b93a3e9c5a/oauth2/token?api-version=1.0 + response: + body: {string: '{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3600","expires_on":"1462823223","not_before":"1462819323","resource":"https://management.core.windows.net/","access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDYyODE5MzIzLCJuYmYiOjE0NjI4MTkzMjMsImV4cCI6MTQ2MjgyMzIyMywiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IkFkbWluMiIsImdpdmVuX25hbWUiOiJBZG1pbjIiLCJncm91cHMiOlsiZTRiYjBiNTYtMTAxNC00MGY4LTg4YWItM2Q4YThjYjBlMDg2Il0sImlwYWRkciI6IjE2Ny4yMjAuMC4xODYiLCJuYW1lIjoiQWRtaW4yIiwib2lkIjoiNTk2M2Y1MGMtN2M0My00MDVjLWFmN2UtNTMyOTRkZTc2YWJkIiwicHVpZCI6IjEwMDNCRkZEOTU5Rjg0MjMiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJzRGdleFJ3Q05JZlktaHpRampDRHZaVDdJemRmbzRTeXJyNHgwZEROelI0IiwidGlkIjoiNTQ4MjZiMjItMzhkNi00ZmIyLWJhZDktYjdiOTNhM2U5YzVhIiwidW5pcXVlX25hbWUiOiJhZG1pbjJAQXp1cmVTREtUZWFtLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImFkbWluMkBBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.t8s14XWKT9gJNQw6nBckk35TxirwCCA5MKVdTCkNWe_O2epnmsx2I-Ijmmf-jRZmY5IOJejWTidx56yCF4-CXZglxq__4Q6MOfdHEeyAYdAbmUq7omkJyTm2FGlwORjthbzDUmTLeRdg60lhzcg1HyIkq24CnkiDwfsxXP3BYJAc3PNtvPi230t3ynta96kfJbUQXFMUFC5AM_GTxpOpxZe5oXZflHHjmVrdFTD4LBI3vfYjW1ird0sNfVZu_jOXIs8LVeRwox1cjrE07XxUvt-XYmaBXnZoxgnBQhmwwUVXmUS8vwb_NfoJ1LcGhiw4ODFAH5fe1f2mv-setSwvig","refresh_token":"AAABAAAAiL9Kn2Z27UubvWFPbm0gLTE1Nj_f603TiBEgn3qCItpkUJF9rsRjH6bq0bDZA1z9z1sX_8E_mp209t7wP7t281JuvV38BBNxH7k-s46Zr6O_xbk9KFgPbZzYxgqZQd1sQsD-TlZpTCWJDQzFjziVJbqHoh_6kQQF35Xhka1DZKNXXpLrE66MbWW3T_08K_Q0HJD2JSaIEjIRB_rwl2zl6KOqTqCJhNy3mdhHJ4NIkLwycn91XHDKNaVSm9Mbedq0NuYfR9f5NtUNeuGW2K8OZIIT5r_cHc1XwPTxuEvVsbY2AyDxnrndfSpCDoXWGaneB20dLZGVjtzljDsxKS4DA5wvWgJUYyYq8WgW2xO6LMEjOMR7HgoEAkPOe9DCkXUy3cPJmV0qehF1ywzf9a_R8sOcLxtGDYoff6e4WSkUyQkrt-7Q7vdN2QLuIm6uQSYWgUUEjrz0SZ-y0xb4kCgleZEyO74Es8U6Njd9aGQ_O-WBF9DwzGPsEM9PQUFe7EN79rnRJtqJ6sF4p1Fvc49W4YS1tfKZ1lZTnItNl-2lPGiMQYYmZxR1UQ1dy31SaQ0EfryfrpwAjdcqjbTLnftkOyTlvbQrUPkDAOYqyWuS-k4KnCiWy3Ec6dBiDeSSu3aFhJo2s1emL9qMvSV5kLLukCAA"}'} + headers: + Cache-Control: ['no-cache, no-store'] + Content-Length: ['2346'] + Content-Type: [application/json; charset=utf-8] + Date: ['Mon, 09 May 2016 18:47:02 GMT'] + Expires: ['-1'] + P3P: [CP="DSP CUR OTPi IND OTRi ONL FIN"] + Pragma: [no-cache] + Server: [Microsoft-IIS/8.5] + Set-Cookie: [flight-uxoptin=true; path=/; secure; HttpOnly, esctx=AAABAAAAiL9Kn2Z27UubvWFPbm0gLdC11Zv14qeDoaCw3wy2Yh2aONBqnPvlC6mS2EuFM8Ok_EnUH1yY4HQRd4bM6JePtVaOvqbwGA66aRUxY_i2kTvz5MxdqqhuNoAWN81jnkwY3RK19dfddVv-XAhQ3oHGxzLo8YBsG1bHx8mIJ3ygWVusy_rxvr8aIE7-friRB7arIAA; + domain=.login.microsoftonline.com; path=/; secure; HttpOnly, x-ms-gateway-slice=productiona; + path=/; secure; HttpOnly, stsservicecookie=ests; path=/; secure; HttpOnly] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + X-Content-Type-Options: [nosniff] + X-Powered-By: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: HEAD + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/travistestrg?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['104'] + Content-Type: [application/json; charset=utf-8] + Date: ['Mon, 09 May 2016 18:47:03 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + x-ms-failure-cause: [gateway] + status: {code: 404, message: Not Found} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: HEAD + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/travistestrg?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['104'] + Content-Type: [application/json; charset=utf-8] + Date: ['Mon, 09 May 2016 18:47:03 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + x-ms-failure-cause: [gateway] + status: {code: 404, message: Not Found} +- request: + body: !!binary | + eyJ0YWdzIjogeyJjIjogIiIsICJhIjogImIifSwgImxvY2F0aW9uIjogIndlc3R1cyJ9 + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['51'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/travistestrg?api-version=2015-11-01 + response: + body: {string: '{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestrg","name":"travistestrg","location":"westus","tags":{"c":"","a":"b"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + Cache-Control: [no-cache] + Content-Length: ['201'] + Content-Type: [application/json; charset=utf-8] + Date: ['Mon, 09 May 2016 18:47:05 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: HEAD + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/travistestrg?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['0'] + Date: ['Mon, 09 May 2016 18:47:05 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + status: {code: 204, message: No Content} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/travistestrg?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR8Xs + o0cf3W3Wk2ZaF6u2qJbN3Z3J7vmn+w92t3cn5zvb+7NZtp3l03vb08nDvQd75zsP7z/cuVvnTbWu + p/nndbVeNXfbOrssmjZv2vrio9FHy2yRE+DOp2U1zdAFfXNFn60b+qzNLpqPHv3ij6b0If2Z0Y/J + R79k9NGqrlZ53RY5f0t/ESB6tVhevG6zFsBfr6fTPJ/ls49+yS/5fwBmmUQiyQAAAA== + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['277'] + Content-Type: [application/json; charset=utf-8] + Date: ['Mon, 09 May 2016 18:47:05 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups?$filter=tagname%20eq%20%27a%27%20and%20tagvalue%20eq%20%27b%27&api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR5dZ + uc4/evS9X/xRMfvo0Ud3m/WkmdbFqi2qZXN3Z7J7/un+g93t3cn5zvb+bJZtZ/n03vZ08nDvwd75 + zsP7D3fu1nlTretp/nldrVfN3bbOLoumzZu2vvho9NEyWxD8jzqfltU0Qxf0zRV9tm7osza7aD56 + 9Is/mtKH9GdGPyYf/ZLRR6u6WuV1W+T8Lf1FgOjVYnnxus1aAH+9nk7zfJbPPvolv+T7v+T/AePt + 0mXVAAAA + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['291'] + Content-Type: [application/json; charset=utf-8] + Date: ['Mon, 09 May 2016 18:47:06 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/travistestrg?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['0'] + Date: ['Mon, 09 May 2016 18:47:07 GMT'] + Expires: ['-1'] + Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1UUkFWSVNURVNUUkctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2015-11-01'] + Pragma: [no-cache] + Retry-After: ['15'] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 202, message: Accepted} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1UUkFWSVNURVNUUkctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['0'] + Date: ['Mon, 09 May 2016 18:47:22 GMT'] + Expires: ['-1'] + Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1UUkFWSVNURVNUUkctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2015-11-01'] + Pragma: [no-cache] + Retry-After: ['15'] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + status: {code: 202, message: Accepted} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1UUkFWSVNURVNUUkctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['0'] + Date: ['Mon, 09 May 2016 18:47:38 GMT'] + Expires: ['-1'] + Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1UUkFWSVNURVNUUkctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2015-11-01'] + Pragma: [no-cache] + Retry-After: ['15'] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + status: {code: 202, message: Accepted} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1UUkFWSVNURVNUUkctV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['0'] + Date: ['Mon, 09 May 2016 18:47:53 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: HEAD + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/travistestrg?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['104'] + Content-Type: [application/json; charset=utf-8] + Date: ['Mon, 09 May 2016 18:47:53 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + x-ms-failure-cause: [gateway] + status: {code: 404, message: Not Found} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: HEAD + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/travistestrg?api-version=2015-11-01 + response: + body: {string: ''} + headers: + Cache-Control: [no-cache] + Content-Length: ['104'] + Content-Type: [application/json; charset=utf-8] + Date: ['Mon, 09 May 2016 18:47:53 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + x-ms-failure-cause: [gateway] + status: {code: 404, message: Not Found} +version: 1 diff --git a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_show_under_group.yaml b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_show_under_group.yaml index feca682559d..7b099a4aecb 100644 --- a/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_show_under_group.yaml +++ b/src/command_modules/azure-cli-resource/azure/cli/command_modules/resource/tests/recordings/test_resource_show_under_group.yaml @@ -35,7 +35,7 @@ interactions: Content-Encoding: [gzip] Content-Length: ['881'] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 21:40:31 GMT'] + Date: ['Thu, 05 May 2016 23:24:26 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -77,7 +77,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 21:40:32 GMT'] + Date: ['Thu, 05 May 2016 23:24:27 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/__init__.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/__init__.py index bd345f54ed0..c4578d074f0 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/__init__.py +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/__init__.py @@ -1,561 +1,2 @@ -from __future__ import print_function -from sys import stderr - -from azure.storage.blob import PublicAccess, BlockBlobService, AppendBlobService, PageBlobService -from azure.storage.file import FileService -from azure.storage import CloudStorageAccount -from azure.mgmt.storage import StorageManagementClient, StorageManagementClientConfiguration -from azure.mgmt.storage.models import AccountType -from azure.mgmt.storage.operations import StorageAccountsOperations - -from azure.cli.commands import (CommandTable, - LongRunningOperation, - RESOURCE_GROUP_ARG_NAME) -from azure.cli.commands._command_creation import get_mgmt_service_client, get_data_service_client -from azure.cli.commands._auto_command import build_operation, AutoCommandDefinition -from azure.cli.commands._validators import validate_key_value_pairs -from azure.cli._locale import L - -from ._params import PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS - -command_table = CommandTable() - -# FACTORIES - -def _storage_client_factory(_): - return get_mgmt_service_client(StorageManagementClient, StorageManagementClientConfiguration) - -def _file_data_service_factory(args): - return get_data_service_client( - FileService, - args.pop('account_name', None), - args.pop('account_key', None), - connection_string=args.pop('connection_string', None), - sas_token=args.pop('sas_token', None)) - -def _blob_data_service_factory(args): - blob_type = args.get('type') - blob_service = blob_types.get(blob_type, BlockBlobService) - return get_data_service_client( - blob_service, - args.pop('account_name', None), - args.pop('account_key', None), - connection_string=args.pop('connection_string', None), - sas_token=args.pop('sas_token', None)) - -def _cloud_storage_account_service_factory(args): - account_name = args.pop('account_name', None) - account_key = args.pop('account_key', None) - sas_token = args.pop('sas_token', None) - connection_string = args.pop('connection_string', None) - if connection_string: - # CloudStorageAccount doesn't accept connection string directly, so we must parse - # out the account name and key manually - conn_dict = validate_key_value_pairs(connection_string) - account_name = conn_dict['AccountName'] - account_key = conn_dict['AccountKey'] - return CloudStorageAccount(account_name, account_key, sas_token) - -def _update_progress(current, total): - if total: - message = 'Percent complete: %' - percent_done = current * 100 / total - message += '{: >5.1f}'.format(percent_done) - print('\b' * len(message) + message, end='', file=stderr) - stderr.flush() - if current == total: - print('', file=stderr) - -#### ACCOUNT COMMANDS ############################################################################# - -build_operation( - 'storage account', 'storage_accounts', _storage_client_factory, - [ - AutoCommandDefinition(StorageAccountsOperations.check_name_availability, - 'Result', 'check-name'), - AutoCommandDefinition(StorageAccountsOperations.delete, None), - AutoCommandDefinition(StorageAccountsOperations.get_properties, 'StorageAccount', 'show') - ], command_table, PARAMETER_ALIASES) - -build_operation( - 'storage account', None, _cloud_storage_account_service_factory, - [ - AutoCommandDefinition(CloudStorageAccount.generate_shared_access_signature, - 'SAS', 'generate-sas') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -@command_table.command('storage account list', description=L('List storage accounts.')) -@command_table.option(**PARAMETER_ALIASES['optional_resource_group_name']) -def list_accounts(args): - from azure.mgmt.storage.models import StorageAccount - from msrestazure.azure_active_directory import UserPassCredentials - smc = _storage_client_factory({}) - group = args.get(RESOURCE_GROUP_ARG_NAME) - if group: - accounts = smc.storage_accounts.list_by_resource_group(group) - else: - accounts = smc.storage_accounts.list() - return list(accounts) - -build_operation( - 'storage account keys', 'storage_accounts', _storage_client_factory, - [ - AutoCommandDefinition(StorageAccountsOperations.list_keys, '[StorageAccountKeys]', 'list') - ], command_table, PARAMETER_ALIASES) - -key_options = ['key1', 'key2'] -@command_table.command('storage account keys renew') -@command_table.description(L('Regenerate one or both keys for a storage account.')) -@command_table.option(**PARAMETER_ALIASES['resource_group_name']) -@command_table.option(**PARAMETER_ALIASES['account_name']) -@command_table.option('--key -y', default=key_options, - choices=key_options, help=L('Key to renew')) -def renew_account_keys(args): - smc = _storage_client_factory({}) - keys_to_renew = args.get('key') - for key in keys_to_renew if isinstance(keys_to_renew, list) else [keys_to_renew]: - result = smc.storage_accounts.regenerate_key( - resource_group_name=args.get(RESOURCE_GROUP_ARG_NAME), - account_name=args.get('account_name'), - key_name=key) - return result - -@command_table.command('storage account usage') -@command_table.description( - L('Show the current count and limit of the storage accounts under the subscription.')) -def show_account_usage(_): - smc = _storage_client_factory({}) - return next((x for x in smc.usage.list() if x.name.value == 'StorageAccounts'), None) - -@command_table.command('storage account connection-string') -@command_table.description(L('Show the connection string for a storage account.')) -@command_table.option(**PARAMETER_ALIASES['resource_group_name']) -@command_table.option(**PARAMETER_ALIASES['account_name_required']) -@command_table.option('--use-http', action='store_const', const='http', default='https', - help=L('use http as the default endpoint protocol')) -def show_storage_connection_string(args): - smc = _storage_client_factory({}) - endpoint_protocol = args.get('use_http') - storage_account = args.get('account_name') - keys = smc.storage_accounts.list_keys(args.get(RESOURCE_GROUP_ARG_NAME), - storage_account) - - connection_string = 'DefaultEndpointsProtocol={};AccountName={};AccountKey={}'.format( - endpoint_protocol, - storage_account, - keys.key1) #pylint: disable=no-member - return {'ConnectionString':connection_string} - -# TODO: update this once enums are supported in commands first-class (task #115175885) -storage_account_types = {'Standard_LRS': AccountType.standard_lrs, - 'Standard_ZRS': AccountType.standard_zrs, - 'Standard_GRS': AccountType.standard_grs, - 'Standard_RAGRS': AccountType.standard_ragrs, - 'Premium_LRS': AccountType.premium_lrs} - -@command_table.command('storage account create') -@command_table.description(L('Create a storage account.')) -@command_table.option(**PARAMETER_ALIASES['resource_group_name']) -@command_table.option(**PARAMETER_ALIASES['account_name_required']) -@command_table.option(**PARAMETER_ALIASES['location']) -@command_table.option('--type', choices=storage_account_types.keys(), required=True) -@command_table.option(**PARAMETER_ALIASES['tags']) -def create_account(args): - from azure.mgmt.storage.models import StorageAccountCreateParameters - smc = _storage_client_factory({}) - - resource_group = args.get(RESOURCE_GROUP_ARG_NAME) - account_name = args.get('account_name') - account_type = storage_account_types[args.get('type')] - params = StorageAccountCreateParameters(args.get('location'), - account_type, - args.get('tags')) - - op = LongRunningOperation('Creating storage account', 'Storage account created') - poller = smc.storage_accounts.create(resource_group, account_name, params) - return op(poller) - -@command_table.command('storage account set') -@command_table.description(L('Update storage account property (only one at a time).')) -@command_table.option(**PARAMETER_ALIASES['resource_group_name']) -@command_table.option(**PARAMETER_ALIASES['account_name_required']) -@command_table.option('--type', - choices=storage_account_types.keys()) -@command_table.option(**PARAMETER_ALIASES['tags']) -@command_table.option('--custom-domain', help=L('the custom domain name')) -@command_table.option('--subdomain', help=L('use indirect CNAME validation')) -def set_account(args): - from azure.mgmt.storage.models import StorageAccountUpdateParameters, CustomDomain - smc = _storage_client_factory({}) - - resource_group = args.get(RESOURCE_GROUP_ARG_NAME) - account_name = args.get('account_name') - domain = args.get('custom_domain') - account_type = storage_account_types[args.get('type')] if args.get('type') else None - - params = StorageAccountUpdateParameters(args.get('tags'), account_type, domain) - return smc.storage_accounts.update(resource_group, account_name, params) - -#### BLOB COMMANDS ################################################################################ - -# CONTAINER COMMANDS - -build_operation( - 'storage container', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.list_containers, '[Container]', 'list'), - AutoCommandDefinition(BlockBlobService.delete_container, 'Bool', 'delete'), - AutoCommandDefinition(BlockBlobService.get_container_properties, - 'ContainerProperties', 'show'), - AutoCommandDefinition(BlockBlobService.create_container, 'Bool', 'create'), - AutoCommandDefinition(BlockBlobService.generate_container_shared_access_signature, - 'SAS', 'generate-sas') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage container acl', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.set_container_acl, 'StoredAccessPolicy', 'set'), - AutoCommandDefinition(BlockBlobService.get_container_acl, '[StoredAccessPolicy]', 'show'), - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage container metadata', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.set_container_metadata, 'Properties', 'set'), - AutoCommandDefinition(BlockBlobService.get_container_metadata, 'Metadata', 'show'), - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -# TODO: update this once enums are supported in commands first-class (task #115175885) -public_access_types = {'none': None, - 'blob': PublicAccess.Blob, - 'container': PublicAccess.Container} - -@command_table.command('storage container exists') -@command_table.description(L('Check if a storage container exists.')) -@command_table.option(**PARAMETER_ALIASES['container_name']) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -@command_table.option('--snapshot', help=L('UTC datetime value which specifies a snapshot')) -@command_table.option(**PARAMETER_ALIASES['timeout']) -def exists_container(args): - bbs = _blob_data_service_factory(args) - return bbs.exists( - container_name=args.get('container_name'), - snapshot=args.get('snapshot'), - timeout=args.get('timeout')) - -lease_duration_values = {'min':15, 'max':60, 'infinite':-1} -lease_duration_values_string = 'Between {} and {} seconds. ({} for infinite)'.format( - lease_duration_values['min'], - lease_duration_values['max'], - lease_duration_values['infinite']) - -build_operation( - 'storage container lease', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.acquire_container_lease, 'LeaseID', 'acquire'), - AutoCommandDefinition(BlockBlobService.renew_container_lease, 'LeaseID', 'renew'), - AutoCommandDefinition(BlockBlobService.release_container_lease, None, 'release'), - AutoCommandDefinition(BlockBlobService.change_container_lease, None, 'change'), - AutoCommandDefinition(BlockBlobService.break_container_lease, 'Int', 'break') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -# BLOB COMMANDS - -build_operation( - 'storage blob', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.list_blobs, '[Blob]', 'list'), - AutoCommandDefinition(BlockBlobService.delete_blob, None, 'delete'), - AutoCommandDefinition(BlockBlobService.generate_blob_shared_access_signature, - 'SAS', 'generate-sas'), - AutoCommandDefinition(BlockBlobService.make_blob_url, 'URL', 'url'), - AutoCommandDefinition(BlockBlobService.snapshot_blob, 'SnapshotProperties', 'snapshot'), - AutoCommandDefinition(BlockBlobService.get_blob_properties, 'Properties', 'show'), - AutoCommandDefinition(BlockBlobService.set_blob_properties, 'Propeties', 'set') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage blob service-properties', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.get_blob_service_properties, - 'ServiceProperties', 'show'), - AutoCommandDefinition(BlockBlobService.set_blob_service_properties, - 'ServiceProperties', 'set') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage blob metadata', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.get_blob_metadata, 'Metadata', 'show'), - AutoCommandDefinition(BlockBlobService.set_blob_metadata, 'Metadata', 'set') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -blob_types = { - 'block': BlockBlobService, - 'page': PageBlobService, - 'append': AppendBlobService -} -blob_types_str = ' '.join(blob_types.keys()) - -@command_table.command('storage blob upload') -@command_table.description(L('Upload a blob to a container.')) -@command_table.option(**PARAMETER_ALIASES['container_name']) -@command_table.option(**PARAMETER_ALIASES['blob_name']) -@command_table.option('--type', required=True, choices=blob_types.keys(), - help=L('type of blob to upload')) -@command_table.option('--upload-from', required=True, - help=L('local path to upload from')) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -@command_table.option('--container.public-access', default=None, - choices=public_access_types.keys(), - type=lambda x: public_access_types.get(x, ValueError)) -@command_table.option('--content.type') -@command_table.option('--content.disposition') -@command_table.option('--content.encoding') -@command_table.option('--content.language') -@command_table.option('--content.md5') -@command_table.option('--content.cache-control') -def upload_blob(args): - from azure.storage.blob import ContentSettings - bds = _blob_data_service_factory(args) - blob_type = args.get('type') - container_name = args.get('container_name') - blob_name = args.get('blob_name') - file_path = args.get('upload_from') - content_settings = ContentSettings( - content_type=args.get('content.type'), - content_disposition=args.get('content.disposition'), - content_encoding=args.get('content.encoding'), - content_language=args.get('content.language'), - content_md5=args.get('content.md5'), - cache_control=args.get('content.cache-control') - ) - - def upload_append_blob(): - if not bds.exists(container_name, blob_name): - bds.create_blob( - container_name=container_name, - blob_name=blob_name, - content_settings=content_settings) - return bds.append_blob_from_path( - container_name=container_name, - blob_name=blob_name, - file_path=file_path, - progress_callback=_update_progress - ) - - def upload_block_blob(): - return bds.create_blob_from_path( - container_name=container_name, - blob_name=blob_name, - file_path=file_path, - progress_callback=_update_progress, - content_settings=content_settings - ) - - type_func = { - 'append': upload_append_blob, - 'block': upload_block_blob, - 'page': upload_block_blob # same implementation - } - return type_func[blob_type]() - -@command_table.command('storage blob download') -@command_table.description(L('Download the specified blob.')) -@command_table.option(**PARAMETER_ALIASES['container_name']) -@command_table.option(**PARAMETER_ALIASES['blob_name']) -@command_table.option('--download-to', help=L('the file path to download to'), required=True) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -def download_blob(args): - bbs = _blob_data_service_factory(args) - - # show dot indicator of download progress (one for every 10%) - bbs.get_blob_to_path(args.get('container_name'), - args.get('blob_name'), - args.get('download_to'), - progress_callback=_update_progress) - -@command_table.command('storage blob exists') -@command_table.description(L('Check if a storage blob exists.')) -@command_table.option(**PARAMETER_ALIASES['container_name']) -@command_table.option(**PARAMETER_ALIASES['blob_name']) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -@command_table.option('--snapshot', help=L('UTC datetime value which specifies a snapshot')) -@command_table.option(**PARAMETER_ALIASES['timeout']) -def exists_blob(args): - bbs = _blob_data_service_factory(args) - return bbs.exists( - blob_name=args.get('blob_name'), - container_name=args.get('container_name'), - snapshot=args.get('snapshot'), - timeout=args.get('timeout')) - -build_operation( - 'storage blob lease', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.acquire_blob_lease, 'LeaseID', 'acquire'), - AutoCommandDefinition(BlockBlobService.renew_blob_lease, 'LeaseID', 'renew'), - AutoCommandDefinition(BlockBlobService.release_blob_lease, None, 'release'), - AutoCommandDefinition(BlockBlobService.change_blob_lease, None, 'change'), - AutoCommandDefinition(BlockBlobService.break_blob_lease, 'Int', 'break') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage blob copy', None, _blob_data_service_factory, - [ - AutoCommandDefinition(BlockBlobService.copy_blob, 'CopyOperationProperties', 'start'), - AutoCommandDefinition(BlockBlobService.abort_copy_blob, None, 'cancel'), - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -#### FILE COMMANDS ################################################################################ - -# SHARE COMMANDS - -build_operation( - 'storage share', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.list_shares, '[Share]', 'list'), - AutoCommandDefinition(FileService.list_directories_and_files, - '[ShareContents]', 'contents'), - AutoCommandDefinition(FileService.create_share, 'Boolean', 'create'), - AutoCommandDefinition(FileService.delete_share, 'Boolean', 'delete'), - AutoCommandDefinition(FileService.generate_share_shared_access_signature, - 'SAS', 'generate-sas'), - AutoCommandDefinition(FileService.get_share_stats, 'ShareStats', 'stats'), - AutoCommandDefinition(FileService.get_share_properties, 'Properties', 'show'), - AutoCommandDefinition(FileService.set_share_properties, 'Properties', 'set') - - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage share metadata', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.get_share_metadata, 'Metadata', 'show'), - AutoCommandDefinition(FileService.set_share_metadata, 'Metadata', 'set') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage share acl', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.set_share_acl, '[StoredAccessPolicy]', 'set'), - AutoCommandDefinition(FileService.get_share_acl, 'StoredAccessPolicy', 'show'), - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -@command_table.command('storage share exists') -@command_table.description(L('Check if a file share exists.')) -@command_table.option(**PARAMETER_ALIASES['share_name']) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -def exist_share(args): - fsc = _file_data_service_factory(args) - return fsc.exists(share_name=args.get('share_name')) - -# DIRECTORY COMMANDS - -build_operation( - 'storage directory', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.create_directory, 'Boolean', 'create'), - AutoCommandDefinition(FileService.delete_directory, 'Boolean', 'delete'), - AutoCommandDefinition(FileService.get_directory_properties, 'Properties', 'show') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage directory metadata', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.get_directory_metadata, 'Metadata', 'show'), - AutoCommandDefinition(FileService.set_directory_metadata, 'Metadata', 'set') - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -@command_table.command('storage directory exists') -@command_table.description(L('Check if a directory exists.')) -@command_table.option(**PARAMETER_ALIASES['share_name']) -@command_table.option('--directory-name -d', help=L('the directory name'), required=True) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -def exist_directory(args): - fsc = _file_data_service_factory(args) - return fsc.exists(share_name=args.get('share_name'), - directory_name=args.get('directory_name')) - -# FILE COMMANDS - -FILE_PARAM_ALIASES = PARAMETER_ALIASES.copy() -FILE_PARAM_ALIASES.update({ - 'directory_name': { - 'name': '--directory-name -d', - 'required': False - } -}) - -build_operation( - 'storage file', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.delete_file, 'Boolean', 'delete'), - AutoCommandDefinition(FileService.resize_file, 'Result', 'resize'), - AutoCommandDefinition(FileService.make_file_url, 'URL', 'url'), - AutoCommandDefinition(FileService.generate_file_shared_access_signature, - 'SAS', 'generate-sas'), - AutoCommandDefinition(FileService.get_file_properties, 'Properties', 'show'), - AutoCommandDefinition(FileService.set_file_properties, 'Properties', 'set') - ], command_table, FILE_PARAM_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage file metadata', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.get_file_metadata, 'Metadata', 'show'), - AutoCommandDefinition(FileService.set_file_metadata, 'Metadata', 'set') - ], command_table, FILE_PARAM_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -build_operation( - 'storage file service-properties', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.get_file_service_properties, 'ServiceProperties', 'show'), - AutoCommandDefinition(FileService.set_file_service_properties, 'ServiceProperties', 'set') - ], command_table, FILE_PARAM_ALIASES, STORAGE_DATA_CLIENT_ARGS) - -@command_table.command('storage file download') -@command_table.option(**PARAMETER_ALIASES['share_name']) -@command_table.option('--file-name -f', help=L('the file name'), required=True) -@command_table.option('--local-file-name', help=L('the path to the local file'), required=True) -@command_table.option('--directory-name -d', help=L('the directory name')) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -def storage_file_download(args): - fsc = _file_data_service_factory(args) - fsc.get_file_to_path(args.get('share_name'), - args.get('directory_name'), - args.get('file_name'), - args.get('local_file_name'), - progress_callback=_update_progress) - -@command_table.command('storage file exists') -@command_table.description(L('Check if a file exists.')) -@command_table.option(**PARAMETER_ALIASES['share_name']) -@command_table.option('--file-name -f', help=L('the file name to check'), required=True) -@command_table.option('--directory-name -d', help=L('subdirectory path to the file')) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -def exist_file(args): - fsc = _file_data_service_factory(args) - return fsc.exists(share_name=args.get('share_name'), - directory_name=args.get('directory_name'), - file_name=args.get('file_name')) - -@command_table.command('storage file upload') -@command_table.option(**PARAMETER_ALIASES['share_name']) -@command_table.option('--file-name -f', help=L('the destination file name'), required=True) -@command_table.option('--local-file-name', help=L('the file name to upload'), required=True) -@command_table.option('--directory-name -d', help=L('the destination directory to upload to')) -@command_table.option_set(STORAGE_DATA_CLIENT_ARGS) -def storage_file_upload(args): - fsc = _file_data_service_factory(args) - fsc.create_file_from_path(args.get('share_name'), - args.get('directory_name'), - args.get('file_name'), - args.get('local_file_name'), - progress_callback=_update_progress) - -build_operation( - 'storage file copy', None, _file_data_service_factory, - [ - AutoCommandDefinition(FileService.copy_file, 'CopyOperationPropeties', 'start'), - AutoCommandDefinition(FileService.abort_copy_file, None, 'cancel'), - ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) +# pylint: disable=unused-import +from .generated import command_table diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_params.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_params.py index cb84ed23ab2..87ee5435991 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_params.py +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/_params.py @@ -1,14 +1,58 @@ from os import environ -from azure.cli.commands import (COMMON_PARAMETERS as GLOBAL_COMMON_PARAMETERS, extend_parameter) +from azure.cli.commands import COMMON_PARAMETERS as GLOBAL_COMMON_PARAMETERS, patch_aliases +from azure.cli.commands._command_creation import get_mgmt_service_client, get_data_service_client from azure.cli.commands._validators import validate_key_value_pairs from azure.cli._locale import L +from azure.mgmt.storage import StorageManagementClient, StorageManagementClientConfiguration +from azure.mgmt.storage.models import AccountType + +from azure.storage.blob import PublicAccess, BlockBlobService, PageBlobService, AppendBlobService +from azure.storage.file import FileService +from azure.storage import CloudStorageAccount + from ._validators import ( validate_container_permission, validate_datetime, validate_datetime_as_string, validate_id, validate_ip_range, validate_resource_types, validate_services, validate_lease_duration, validate_quota) +# FACTORIES + +def storage_client_factory(**_): + return get_mgmt_service_client(StorageManagementClient, StorageManagementClientConfiguration) + +def file_data_service_factory(**kwargs): + return get_data_service_client( + FileService, + kwargs.pop('account_name', None), + kwargs.pop('account_key', None), + connection_string=kwargs.pop('connection_string', None), + sas_token=kwargs.pop('sas_token', None)) + +def blob_data_service_factory(**kwargs): + blob_type = kwargs.get('blob_type') + blob_service = blob_types.get(blob_type, BlockBlobService) + return get_data_service_client( + blob_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)) + +def cloud_storage_account_service_factory(**kwargs): + account_name = kwargs.pop('account_name', None) + account_key = kwargs.pop('account_key', None) + sas_token = kwargs.pop('sas_token', None) + connection_string = kwargs.pop('connection_string', None) + if connection_string: + # CloudStorageAccount doesn't accept connection string directly, so we must parse + # out the account name and key manually + conn_dict = validate_key_value_pairs(connection_string) + account_name = conn_dict['AccountName'] + account_key = conn_dict['AccountKey'] + return CloudStorageAccount(account_name, account_key, sas_token) + # HELPER METHODS def get_account_name(string): @@ -23,52 +67,62 @@ def get_connection_string(string): def get_sas_token(string): return string if string != 'query' else environ.get('AZURE_SAS_TOKEN') +# PARAMETER CHOICE LISTS + +storage_account_key_options = ['key1', 'key2'] + +# TODO: update this once enums are supported in commands first-class (task #115175885) +storage_account_types = {'Standard_LRS': AccountType.standard_lrs, + 'Standard_ZRS': AccountType.standard_zrs, + 'Standard_GRS': AccountType.standard_grs, + 'Standard_RAGRS': AccountType.standard_ragrs, + 'Premium_LRS': AccountType.premium_lrs} + +# TODO: update this once enums are supported in commands first-class (task #115175885) +public_access_types = {'none': None, 'blob': PublicAccess.Blob, 'container': PublicAccess.Container} + +lease_duration_values = {'min':15, 'max':60, 'infinite':-1} +lease_duration_values_string = 'Between {} and {} seconds. ({} for infinite)'.format( + lease_duration_values['min'], + lease_duration_values['max'], + lease_duration_values['infinite']) + +blob_types = {'block': BlockBlobService, 'page': PageBlobService, 'append': AppendBlobService} + # BASIC PARAMETER CONFIGURATION -PARAMETER_ALIASES = GLOBAL_COMMON_PARAMETERS.copy() -PARAMETER_ALIASES.update({ +PARAMETER_ALIASES = patch_aliases(GLOBAL_COMMON_PARAMETERS, { 'account_key': { 'name': '--account-key -k', 'help': L('the storage account key'), - # While account key *may* actually be required if the environment variable hasn't been - # specified, it is only required unless the connection string has been specified - 'required': False, 'type': get_account_key, 'default': 'query' }, 'account_name': { 'name': '--account-name -n', 'help': L('the storage account name'), - # While account name *may* actually be required if the environment variable hasn't been - # specified, it is only required unless the connection string has been specified - 'required': False, 'type': get_account_name, 'default': 'query' }, - 'account_name_required': { - # this is used only to obtain the connection string. Thus, the env variable default - # does not apply and this is a required parameter - 'name': '--account-name -n', - 'help': L('the storage account name'), - 'required': True + 'account_type': { + 'name': '--account-type', + 'choices': storage_account_types }, 'blob_name': { 'name': '--blob-name -b', 'help': L('the name of the blob'), - 'required': True + }, + 'blob_type': { + 'name': '--blob-type', + 'choices': blob_types.keys() }, 'container_name': { 'name': '--container-name -c', - 'required': True }, 'connection_string': { 'name': '--connection-string', 'help': L('the storage connection string'), - # You can either specify connection string or name/key. There is no convenient way - # to express this kind of relationship in argparse... - # TODO: Move to exclusive group 'type': get_connection_string, - 'required': False, 'default': 'query' }, 'directory_name': { @@ -83,7 +137,6 @@ def get_sas_token(string): 'name': '--if-modified-since', 'help': L('alter only if modified since supplied UTC datetime (Y-m-d\'T\'H:M\'Z\')'), 'type': validate_datetime, - 'required': False, }, 'id': { 'name': '--id', @@ -94,7 +147,6 @@ def get_sas_token(string): 'name': '--if-unmodified-since', 'help': L('alter only if unmodified since supplied UTC datetime (Y-m-d\'T\'H:M\'Z\')'), 'type': validate_datetime, - 'required': False, }, 'ip': { 'name': '--ip', @@ -125,8 +177,6 @@ def get_sas_token(string): 'type': validate_key_value_pairs, 'help': L('metadata in "a=b;c=d" format') }, - 'optional_resource_group_name': - extend_parameter(GLOBAL_COMMON_PARAMETERS['resource_group_name'], required=False), 'permission': { 'name': '--permission', 'help': L('permissions granted: (r)ead (w)rite (d)elete (l)ist. Can be combined.'), @@ -164,7 +214,6 @@ def get_sas_token(string): 'share_name': { 'name': '--share-name -s', 'help': L('the name of the file share'), - 'required': True, }, 'signed_identifiers': { 'name': '--signed-identifiers', @@ -180,16 +229,21 @@ def get_sas_token(string): 'timeout': { 'name': '--timeout', 'help': L('timeout in seconds'), - 'required': False, 'type': int - } + }, + 'use_http': { + 'name': '--use-http', + 'help': L('specifies that http should be the default endpoint protocol'), + 'action': 'store_const', + 'const': 'http' + }, }) # SUPPLEMENTAL (EXTRA) PARAMETER SETS -STORAGE_DATA_CLIENT_ARGS = [ - PARAMETER_ALIASES['account_name'], - PARAMETER_ALIASES['account_key'], - PARAMETER_ALIASES['connection_string'], - PARAMETER_ALIASES['sas_token'] -] +STORAGE_DATA_CLIENT_ARGS = { + 'account_name': PARAMETER_ALIASES['account_name'], + 'account_key': PARAMETER_ALIASES['account_key'], + 'connection_string': PARAMETER_ALIASES['connection_string'], + 'sas_token': PARAMETER_ALIASES['sas_token'] +} diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/custom.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/custom.py new file mode 100644 index 00000000000..1a3c92fe142 --- /dev/null +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/custom.py @@ -0,0 +1,199 @@ + # pylint: disable=no-self-use,too-many-arguments + +from __future__ import print_function +from sys import stderr + +from azure.cli.commands import CommandTable, LongRunningOperation + +from ._params import storage_client_factory, blob_data_service_factory, file_data_service_factory + +command_table = CommandTable() + +def _update_progress(current, total): + if total: + message = 'Percent complete: %' + percent_done = current * 100 / total + message += '{: >5.1f}'.format(percent_done) + print('\b' * len(message) + message, end='', file=stderr) + stderr.flush() + if current == total: + print('', file=stderr) + +# CUSTOM METHODS + +class ConvenienceStorageAccountCommands(object): + + def __init__(self, **_): + pass + + def list(self, resource_group_name=None): + ''' List storage accounts. ''' + from azure.mgmt.storage.models import StorageAccount + from msrestazure.azure_active_directory import UserPassCredentials + scf = storage_client_factory() + if resource_group_name: + accounts = scf.storage_accounts.list_by_resource_group(resource_group_name) + else: + accounts = scf.storage_accounts.list() + return list(accounts) + + def renew_keys(self, resource_group_name, account_name, key=None): + ''' Regenerate one or both keys for a storage account. + :param str key:Key to renew.''' + from azure.cli.command_modules.storage._params import storage_account_key_options + scf = storage_client_factory() + for k in [key] if key else storage_account_key_options: + result = scf.storage_accounts.regenerate_key( + resource_group_name=resource_group_name, + account_name=account_name, + key_name=k) + return result + + def show_usage(self): + ''' Show the current count and limit of the storage accounts under the subscription. ''' + scf = storage_client_factory() + return next((x for x in scf.usage.list() if x.name.value == 'StorageAccounts'), None) + + def connection_string(self, resource_group_name, account_name, use_http='https'): + ''' Show the connection string for a storage account. + :param str use_http:use http as the default endpoint protocol ''' + scf = storage_client_factory() + keys = scf.storage_accounts.list_keys(resource_group_name, account_name) + connection_string = 'DefaultEndpointsProtocol={};AccountName={};AccountKey={}'.format( + use_http, + account_name, + keys.key1) #pylint: disable=no-member + return {'ConnectionString':connection_string} + + def create(self, resource_group_name, account_name, location, account_type, tags=None): + ''' Create a storage account. ''' + from azure.mgmt.storage.models import StorageAccountCreateParameters + scf = storage_client_factory() + params = StorageAccountCreateParameters(location, account_type, tags) + op = LongRunningOperation('Creating storage account', 'Storage account created') + poller = scf.storage_accounts.create(resource_group_name, account_name, params) + return op(poller) + + def set(self, resource_group_name, account_name, + account_type=None, tags=None, custom_domain=None): + ''' Update storage account property (only one at a time). + :param str custom_domain:the custom domain name + ''' + from azure.mgmt.storage.models import StorageAccountUpdateParameters, CustomDomain + scf = storage_client_factory() + params = StorageAccountUpdateParameters(tags, account_type, custom_domain) + return scf.storage_accounts.update(resource_group_name, account_name, params) + +class ConvenienceBlobServiceCommands(object): + + def __init__(self, **kwargs): + self.client = blob_data_service_factory(**kwargs) + + def container_exists(self, container_name, snapshot=None, timeout=None): + '''Check if a storage container exists. + :param str snapshot:UTC datetime value which specifies a snapshot + ''' + return self.client.exists( + container_name=container_name, + snapshot=snapshot, + timeout=timeout) + + def upload(self, container_name, blob_name, blob_type, upload_from, + content_type=None, content_disposition=None, + content_encoding=None, content_language=None, content_md5=None, + content_cache_control=None): + '''Upload a blob to a container. + :param str blob_type:type of blob to upload + :param str upload_from:local path to upload from + ''' + from azure.storage.blob import ContentSettings + content_settings = ContentSettings( + content_type=content_type, + content_disposition=content_disposition, + content_encoding=content_encoding, + content_language=content_language, + content_md5=content_md5, + cache_control=content_cache_control + ) + + def upload_append_blob(): + if not self.client.exists(container_name, blob_name): + self.client.create_blob( + container_name=container_name, + blob_name=blob_name, + content_settings=content_settings) + return self.client.append_blob_from_path( + container_name=container_name, + blob_name=blob_name, + file_path=upload_from, + progress_callback=_update_progress + ) + + def upload_block_blob(): + return self.client.create_blob_from_path( + container_name=container_name, + blob_name=blob_name, + file_path=upload_from, + progress_callback=_update_progress, + content_settings=content_settings + ) + + type_func = { + 'append': upload_append_blob, + 'block': upload_block_blob, + 'page': upload_block_blob # same implementation + } + return type_func[blob_type]() + + def download(self, container_name, blob_name, download_to): + ''' Download the specified blob. + :param str download_to:the file path to download to + ''' + # show dot indicator of download progress (one for every 10%) + self.client.get_blob_to_path(container_name, blob_name, download_to, + progress_callback=_update_progress) + + def blob_exists(self, container_name, blob_name, snapshot=None, timeout=None): + ''' Check if a storage blob exists. ''' + return self.client.exists( + blob_name=blob_name, + container_name=container_name, + snapshot=snapshot, + timeout=timeout) + +class ConvenienceFileServiceCommands(object): + + def __init__(self, **kwargs): + self.client = file_data_service_factory(**kwargs) + + def share_exists(self, share_name): + ''' Check if a file share exists.''' + return self.client.exists(share_name=share_name) + + def dir_exists(self, share_name, directory_name): + ''' Check if a share directory exists.''' + return self.client.exists(share_name=share_name, directory_name=directory_name) + + def download(self, share_name, file_name, local_file_name, directory_name=None): + ''' Download a file from a file share. + :param str file_name:the file name + :param str local_file_name:the path to the local file to download to''' + self.client.get_file_to_path(share_name, directory_name, file_name, local_file_name, + progress_callback=_update_progress) + + def file_exists(self, share_name, file_name, directory_name=None): + ''' Check if a file exists at a specified path. + :param str file_name:the file name to check + :param str directory_name:subdirectory path to the file + ''' + return self.client.exists(share_name=share_name, + directory_name=directory_name, + file_name=file_name) + + def upload(self, share_name, file_name, local_file_name, directory_name=None): + ''' Upload a file to a file share path. + :param str file_name:the destination file name + :param str local_file_name:the path and file name to upload + :param str directory_name:the destination directory to upload to''' + self.client.create_file_from_path(share_name, directory_name, file_name, local_file_name, + progress_callback=_update_progress) diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/generated.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/generated.py new file mode 100644 index 00000000000..44d5debdeea --- /dev/null +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/generated.py @@ -0,0 +1,264 @@ +from __future__ import print_function + +from azure.cli.commands import CommandTable, patch_aliases +from azure.cli.commands._auto_command import build_operation, CommandDefinition + +from azure.mgmt.storage.operations import StorageAccountsOperations +from azure.storage.blob import BlockBlobService +from azure.storage.file import FileService +from azure.storage import CloudStorageAccount + +from ._params import (PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS, storage_client_factory, + blob_data_service_factory, file_data_service_factory, + cloud_storage_account_service_factory) +from .custom import (ConvenienceStorageAccountCommands, ConvenienceBlobServiceCommands, + ConvenienceFileServiceCommands) + +command_table = CommandTable() + +# STORAGE ACCOUNT COMMANDS + +build_operation( + 'storage account', 'storage_accounts', storage_client_factory, + [ + CommandDefinition(StorageAccountsOperations.check_name_availability, + 'Result', 'check-name'), + CommandDefinition(StorageAccountsOperations.delete, None), + CommandDefinition(StorageAccountsOperations.get_properties, 'StorageAccount', 'show') + ], command_table, PARAMETER_ALIASES) + +build_operation( + 'storage account', None, cloud_storage_account_service_factory, + [ + CommandDefinition(CloudStorageAccount.generate_shared_access_signature, + 'SAS', 'generate-sas') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage account', None, ConvenienceStorageAccountCommands, + [ + CommandDefinition(ConvenienceStorageAccountCommands.create, 'Result'), + CommandDefinition(ConvenienceStorageAccountCommands.list, '[StorageAccount]'), + CommandDefinition(ConvenienceStorageAccountCommands.show_usage, 'Object'), + CommandDefinition(ConvenienceStorageAccountCommands.set, 'Object'), + CommandDefinition(ConvenienceStorageAccountCommands.connection_string, 'Object') + ], command_table, patch_aliases(PARAMETER_ALIASES, { + 'account_type': {'name': '--type'} + })) + +build_operation( + 'storage account keys', 'storage_accounts', storage_client_factory, + [ + CommandDefinition(StorageAccountsOperations.list_keys, '[StorageAccountKeys]', 'list') + ], command_table, PARAMETER_ALIASES) + +build_operation( + 'storage account keys', None, ConvenienceStorageAccountCommands, + [ + CommandDefinition(ConvenienceStorageAccountCommands.renew_keys, 'Object', 'renew') + ], command_table, PARAMETER_ALIASES) + +# BLOB SERVICE COMMANDS + +build_operation( + 'storage container', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.list_containers, '[Container]', 'list'), + CommandDefinition(BlockBlobService.delete_container, 'Bool', 'delete'), + CommandDefinition(BlockBlobService.get_container_properties, + 'ContainerProperties', 'show'), + CommandDefinition(BlockBlobService.create_container, 'Bool', 'create'), + CommandDefinition(BlockBlobService.generate_container_shared_access_signature, + 'SAS', 'generate-sas') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage container', None, ConvenienceBlobServiceCommands, + [ + CommandDefinition(ConvenienceBlobServiceCommands.container_exists, 'Bool', 'exists') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage container acl', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.set_container_acl, 'StoredAccessPolicy', 'set'), + CommandDefinition(BlockBlobService.get_container_acl, '[StoredAccessPolicy]', 'show'), + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage container metadata', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.set_container_metadata, 'Properties', 'set'), + CommandDefinition(BlockBlobService.get_container_metadata, 'Metadata', 'show'), + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage container lease', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.acquire_container_lease, 'LeaseID', 'acquire'), + CommandDefinition(BlockBlobService.renew_container_lease, 'LeaseID', 'renew'), + CommandDefinition(BlockBlobService.release_container_lease, None, 'release'), + CommandDefinition(BlockBlobService.change_container_lease, None, 'change'), + CommandDefinition(BlockBlobService.break_container_lease, 'Int', 'break') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage blob', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.list_blobs, '[Blob]', 'list'), + CommandDefinition(BlockBlobService.delete_blob, None, 'delete'), + CommandDefinition(BlockBlobService.generate_blob_shared_access_signature, + 'SAS', 'generate-sas'), + CommandDefinition(BlockBlobService.make_blob_url, 'URL', 'url'), + CommandDefinition(BlockBlobService.snapshot_blob, 'SnapshotProperties', 'snapshot'), + CommandDefinition(BlockBlobService.get_blob_properties, 'Properties', 'show'), + CommandDefinition(BlockBlobService.set_blob_properties, 'Propeties', 'set') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage blob', None, ConvenienceBlobServiceCommands, + [ + CommandDefinition(ConvenienceBlobServiceCommands.blob_exists, 'Bool', 'exists'), + CommandDefinition(ConvenienceBlobServiceCommands.download, 'Object'), + CommandDefinition(ConvenienceBlobServiceCommands.upload, 'Object') + ], command_table, patch_aliases(PARAMETER_ALIASES, { + 'blob_type': {'name': '--type'} + }), STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage blob service-properties', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.get_blob_service_properties, + '[ServiceProperties]', 'show'), + CommandDefinition(BlockBlobService.set_blob_service_properties, + 'ServiceProperties', 'set') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage blob metadata', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.get_blob_metadata, 'Metadata', 'show'), + CommandDefinition(BlockBlobService.set_blob_metadata, 'Metadata', 'set') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage blob lease', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.acquire_blob_lease, 'LeaseID', 'acquire'), + CommandDefinition(BlockBlobService.renew_blob_lease, 'LeaseID', 'renew'), + CommandDefinition(BlockBlobService.release_blob_lease, None, 'release'), + CommandDefinition(BlockBlobService.change_blob_lease, None, 'change'), + CommandDefinition(BlockBlobService.break_blob_lease, 'Int', 'break') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage blob copy', None, blob_data_service_factory, + [ + CommandDefinition(BlockBlobService.copy_blob, 'CopyOperationProperties', 'start'), + CommandDefinition(BlockBlobService.abort_copy_blob, None, 'cancel'), + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +# FILE SERVICE COMMANDS + +build_operation( + 'storage share', None, file_data_service_factory, + [ + CommandDefinition(FileService.list_shares, '[Share]', 'list'), + CommandDefinition(FileService.list_directories_and_files, + '[ShareContents]', 'contents'), + CommandDefinition(FileService.create_share, 'Boolean', 'create'), + CommandDefinition(FileService.delete_share, 'Boolean', 'delete'), + CommandDefinition(FileService.generate_share_shared_access_signature, + 'SAS', 'generate-sas'), + CommandDefinition(FileService.get_share_stats, 'ShareStats', 'stats'), + CommandDefinition(FileService.get_share_properties, 'Properties', 'show'), + CommandDefinition(FileService.set_share_properties, 'Properties', 'set') + + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage share', None, ConvenienceFileServiceCommands, + [ + CommandDefinition(ConvenienceFileServiceCommands.share_exists, 'Boolean', 'exists') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage share metadata', None, file_data_service_factory, + [ + CommandDefinition(FileService.get_share_metadata, 'Metadata', 'show'), + CommandDefinition(FileService.set_share_metadata, 'Metadata', 'set') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage share acl', None, file_data_service_factory, + [ + CommandDefinition(FileService.set_share_acl, '[StoredAccessPolicy]', 'set'), + CommandDefinition(FileService.get_share_acl, 'StoredAccessPolicy', 'show'), + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage directory', None, file_data_service_factory, + [ + CommandDefinition(FileService.create_directory, 'Boolean', 'create'), + CommandDefinition(FileService.delete_directory, 'Boolean', 'delete'), + CommandDefinition(FileService.get_directory_properties, 'Properties', 'show') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage directory', None, ConvenienceFileServiceCommands, + [ + CommandDefinition(ConvenienceFileServiceCommands.dir_exists, 'Bool', 'exists') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage directory metadata', None, file_data_service_factory, + [ + CommandDefinition(FileService.get_directory_metadata, 'Metadata', 'show'), + CommandDefinition(FileService.set_directory_metadata, 'Metadata', 'set') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage file', None, file_data_service_factory, + [ + CommandDefinition(FileService.delete_file, 'Boolean', 'delete'), + CommandDefinition(FileService.resize_file, 'Result', 'resize'), + CommandDefinition(FileService.make_file_url, 'URL', 'url'), + CommandDefinition(FileService.generate_file_shared_access_signature, + 'SAS', 'generate-sas'), + CommandDefinition(FileService.get_file_properties, 'Properties', 'show'), + CommandDefinition(FileService.set_file_properties, 'Properties', 'set') + ], command_table, patch_aliases(PARAMETER_ALIASES, { + 'directory_name': {'required': False} + }), STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage file', None, ConvenienceFileServiceCommands, + [ + CommandDefinition(ConvenienceFileServiceCommands.file_exists, 'Bool', 'exists'), + CommandDefinition(ConvenienceFileServiceCommands.download, 'Object'), + CommandDefinition(ConvenienceFileServiceCommands.upload, 'Object') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage file metadata', None, file_data_service_factory, + [ + CommandDefinition(FileService.get_file_metadata, 'Metadata', 'show'), + CommandDefinition(FileService.set_file_metadata, 'Metadata', 'set') + ], command_table, patch_aliases(PARAMETER_ALIASES, { + 'directory_name': {'required': False} + }), STORAGE_DATA_CLIENT_ARGS) + + +build_operation( + 'storage file service-properties', None, file_data_service_factory, + [ + CommandDefinition(FileService.get_file_service_properties, 'ServiceProperties', 'show'), + CommandDefinition(FileService.set_file_service_properties, 'ServiceProperties', 'set') + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) + +build_operation( + 'storage file copy', None, file_data_service_factory, + [ + CommandDefinition(FileService.copy_file, 'CopyOperationPropeties', 'start'), + CommandDefinition(FileService.abort_copy_file, None, 'cancel'), + ], command_table, PARAMETER_ALIASES, STORAGE_DATA_CLIENT_ARGS) diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/command_specs.py b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/command_specs.py index 8102daa21e1..bc092603509 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/command_specs.py +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/command_specs.py @@ -32,7 +32,7 @@ def set_up(self): self.run('storage account delete -g {} -n {}'.format(RESOURCE_GROUP_NAME, self.account)) result = json.loads(self.run('storage account check-name --name {} -o json'.format(self.account))) if not result['nameAvailable']: - raise RuntimeError('Failed to delete pre-existing storage account {}. Unable to continue test.'.format(self.account)) + raise CLIError('Failed to delete pre-existing storage account {}. Unable to continue test.'.format(self.account)) def test_body(self): account = self.account @@ -60,14 +60,26 @@ def test_body(self): s.test('storage account check-name --name teststorageomega', {'nameAvailable': True}) s.test('storage account check-name --name {}'.format(account), {'nameAvailable': False, 'reason': 'AlreadyExists'}) - s.rec('storage account list -g {}'.format(rg)) + s.test('storage account list -g {}'.format(rg), + {'name': account, 'accountType': 'Standard_LRS', 'location': 'westus', 'resourceGroup': rg}) s.test('storage account show --resource-group {} --account-name {}'.format(rg, account), {'name': account, 'accountType': 'Standard_LRS', 'location': 'westus', 'resourceGroup': rg}) - s.rec('storage account usage') - s.rec('storage account connection-string -g {} --account-name {} --use-http'.format(rg, account)) - s.rec('storage account keys list -g {} --account-name {}'.format(rg, account)) - s.rec('storage account keys renew -g {} --account-name {}'.format(rg, account)) - s.rec('storage account keys renew -g {} --account-name {} --key key2'.format(rg, account)) + s.test('storage account show-usage', {'name': {'value': 'StorageAccounts'}}) + cs = s.run('storage account connection-string -g {} --account-name {} --use-http'.format(rg, account)) + assert 'https' not in cs + assert account in cs + keys = json.loads(s.run('storage account keys list -g {} --account-name {} -o json'.format(rg, account))) + key1 = keys['key1'] + key2 = keys['key2'] + assert key1 and key2 + keys = json.loads(s.run('storage account keys renew -g {} --account-name {} -o json'.format(rg, account))) + assert key1 != keys['key1'] + key1 = keys['key1'] + assert key2 != keys['key2'] + key2 = keys['key2'] + keys = json.loads(s.run('storage account keys renew -g {} --account-name {} --key key2 -o json'.format(rg, account))) + assert key1 == keys['key1'] + assert key2 != keys['key2'] s.test('storage account set -g {} -n {} --tags foo=bar;cat'.format(rg, account), {'tags': {'cat':'', 'foo':'bar'}}) # TODO: This should work like other tag commands--no value to clear @@ -96,7 +108,7 @@ def set_up(self): self.pop_env('AZURE_STORAGE_CONNECTION_STRING') self.run('storage container delete --container-name {}'.format(self.container)) if self.run('storage container exists --container-name {}'.format(self.container)) == 'True': - raise RuntimeError('Failed to delete pre-existing container {}. Unable to continue test.'.format(self.container)) + raise CLIError('Failed to delete pre-existing container {}. Unable to continue test.'.format(self.container)) def _storage_blob_scenario(self): s = self @@ -110,7 +122,12 @@ def _storage_blob_scenario(self): new_lease_id = s.new_lease_id date = s.date - s.rec('storage blob service-properties show') + s.test('storage blob service-properties show', { + 'cors': [], + 'hourMetrics': {'enabled': True}, + 'logging': {'delete': False}, + 'minuteMetrics': {'enabled': False} + }) # test block blob upload s.run('storage blob upload -b {} -c {} --type block --upload-from {}'.format(block_blob, container, os.path.join(TEST_DIR, 'testfile.rst'))) @@ -133,14 +150,18 @@ def _storage_blob_scenario(self): s.run('storage blob metadata set -b {} -c {}'.format(blob, container)) s.test('storage blob metadata show -b {} -c {}'.format(blob, container), None) - s.rec('storage blob list --container-name {}'.format(container)) + res = json.loads(s.run('storage blob list --container-name {} -o json'.format(container)))['items'] + blob_list = [block_blob, append_blob, page_blob] + for item in res: + assert item['name'] in blob_list + s.test('storage blob show --container-name {} --blob-name {}'.format(container, block_blob), {'name': block_blob, 'properties': {'blobType': 'BlockBlob'}}) s.run('storage blob download -b {} -c {} --download-to {}'.format(blob, container, dest_file)) if os.path.isfile(dest_file): os.remove(dest_file) else: - raise RuntimeError('Download failed. Test failed!') + raise CLIError('Download failed. Test failed!') # test lease operations s.run('storage blob lease acquire --lease-duration 60 -b {} -c {} --if-modified-since {} --proposed-lease-id {}'.format(blob, container, date, proposed_lease_id)) @@ -173,8 +194,11 @@ def test_body(self): date = s.date s.test('storage container create --container-name {} --fail-on-exist'.format(container), True) s.test('storage container exists --container-name {}'.format(container), True) + s.test('storage container show --container-name {}'.format(container), {'name': container}) - s.rec('storage container list') + res = json.loads(s.run('storage container list -o json'))['items'] + assert container in [x['name'] for x in res] + s.run('storage container metadata set -c {} --metadata foo=bar;moo=bak;'.format(container)) s.test('storage container metadata show -c {}'.format(container), {'foo': 'bar', 'moo': 'bak'}) s.run('storage container metadata set -c {}'.format(container)) # reset metadata @@ -255,7 +279,7 @@ def _storage_file_scenario(self, share): if os.path.isfile(dest_file): os.remove(dest_file) else: - raise RuntimeError('\nDownload failed. Test failed!') + raise CLIError('\nDownload failed. Test failed!') # test resize command s.run('storage file resize -s {} --file-name {} --content-length 1234'.format(share, filename)) @@ -271,7 +295,9 @@ def _storage_file_scenario(self, share): file_url = 'https://{}.file.core.windows.net/{}/{}'.format(STORAGE_ACCOUNT_NAME, share, filename) s.test('storage file url -s {} --file-name {}'.format(share, filename), file_url) - s.rec('storage share contents --share-name {}'.format(share)) + res = [x['name'] for x in json.loads(s.run('storage share contents --share-name {} -o json'.format(share)))['items']] + assert filename in res + s.run('storage file delete --share-name {} --file-name {}'.format(share, filename)) s.test('storage file exists --share-name {} --file-name {}'.format(share, filename), False) @@ -289,7 +315,10 @@ def _storage_file_in_subdir_scenario(self, share, dir): os.remove(dest_file) else: io.print_('\nDownload failed. Test failed!') - s.rec('storage share contents --share-name {} --directory-name {}'.format(share, dir)) + + res = [x['name'] for x in json.loads(s.run('storage share contents --share-name {} --directory-name {} -o json'.format(share, dir)))['items']] + assert filename in res + s.test('storage share stats -s {}'.format(share), "1") s.run('storage file delete --share-name {} --directory-name {} --file-name {}'.format(share, dir, filename)) s.test('storage file exists --share-name {} --file-name {}'.format(share, filename), False) @@ -302,7 +331,9 @@ def test_body(self): s.test('storage share create --share-name {} --fail-on-exist --metadata foo=bar;cat=hat'.format(share2), True) s.test('storage share exists --share-name {}'.format(share1), True) s.test('storage share metadata show --share-name {}'.format(share2), {'cat': 'hat', 'foo': 'bar'}) - s.rec('storage share list') + res = [x['name'] for x in json.loads(s.run('storage share list -o json'))['items']] + assert share1 in res + assert share2 in res # verify metadata can be set, queried, and cleared s.run('storage share metadata set --share-name {} --metadata a=b;c=d'.format(share1)) @@ -316,7 +347,12 @@ def test_body(self): self._storage_file_scenario(share1) self._storage_directory_scenario(share1) - s.rec('storage file service-properties show') + s.test('storage file service-properties show', { + 'cors': [], + 'hourMetrics': {'enabled': True}, + 'minuteMetrics': {'enabled': False} + }) + def tear_down(self): self.run('storage share delete --share-name {} --fail-not-exist'.format(self.share1)) diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/expected_results.res b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/expected_results.res index f9e419dae8b..7c93628f114 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/expected_results.res +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/expected_results.res @@ -1,6 +1,6 @@ { - "test_storage_account": "{\n \"message\": null,\n \"nameAvailable\": true,\n \"reason\": null\n}{\n \"message\": \"The storage account named travistestresourcegr3014 is already taken.\",\n \"nameAvailable\": false,\n \"reason\": \"AlreadyExists\"\n}Account Type : Standard_LRS\nCreation Time : 2016-04-06T21:44:48.400791+00:00\nCustom Domain : None\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/teststorageaccount02\nLast Geo Failover Time : None\nLocation : westus\nName : teststorageaccount02\nPrimary Location : westus\nProvisioning State : Succeeded\nResource Group : travistestresourcegroup\nSecondary Endpoints : None\nSecondary Location : None\nStatus Of Primary : Available\nStatus Of Secondary : None\nType : Microsoft.Storage/storageAccounts\nPrimary Endpoints :\n Blob : https://teststorageaccount02.blob.core.windows.net/\n File : https://teststorageaccount02.file.core.windows.net/\n Queue : https://teststorageaccount02.queue.core.windows.net/\n Table : https://teststorageaccount02.table.core.windows.net/\nTags :\n Cat : \n Foo : bar\n\nAccount Type : Standard_LRS\nCreation Time : 2016-04-26T00:00:45.729978+00:00\nCustom Domain : None\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/travistestresourcegr3014\nLast Geo Failover Time : None\nLocation : westus\nName : travistestresourcegr3014\nPrimary Location : westus\nProvisioning State : Succeeded\nResource Group : travistestresourcegroup\nSecondary Endpoints : None\nSecondary Location : None\nStatus Of Primary : Available\nStatus Of Secondary : None\nType : Microsoft.Storage/storageAccounts\nPrimary Endpoints :\n Blob : https://travistestresourcegr3014.blob.core.windows.net/\n File : https://travistestresourcegr3014.file.core.windows.net/\n Queue : https://travistestresourcegr3014.queue.core.windows.net/\n Table : https://travistestresourcegr3014.table.core.windows.net/\nTags :\n None :{\n \"accountType\": \"Standard_LRS\",\n \"creationTime\": \"2016-04-26T00:00:45.729978+00:00\",\n \"customDomain\": null,\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/travistestresourcegr3014\",\n \"lastGeoFailoverTime\": null,\n \"location\": \"westus\",\n \"name\": \"travistestresourcegr3014\",\n \"primaryEndpoints\": {\n \"blob\": \"https://travistestresourcegr3014.blob.core.windows.net/\",\n \"file\": \"https://travistestresourcegr3014.file.core.windows.net/\",\n \"queue\": \"https://travistestresourcegr3014.queue.core.windows.net/\",\n \"table\": \"https://travistestresourcegr3014.table.core.windows.net/\"\n },\n \"primaryLocation\": \"westus\",\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"travistestresourcegroup\",\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": \"Available\",\n \"statusOfSecondary\": null,\n \"tags\": {\n \"none\": \"\"\n },\n \"type\": \"Microsoft.Storage/storageAccounts\"\n}Current Value : 27\nLimit : 100\nUnit : Count\nName :\n Localized Value : Storage Accounts\n Value : StorageAccountsConnection String : DefaultEndpointsProtocol=http;AccountName=travistestresourcegr3014;AccountKey=clbxW4pWAv1sOPyxGgNEcbXzKsJXifMtQFRDvRfHXrnbwX0mtB2jKy1j2MoWnjLNRT8Z/XUgSGDRfTldIro8BQ==Key1 : clbxW4pWAv1sOPyxGgNEcbXzKsJXifMtQFRDvRfHXrnbwX0mtB2jKy1j2MoWnjLNRT8Z/XUgSGDRfTldIro8BQ==\nKey2 : CIsCudpapGOKov3+bhaGgFKbK3kum2ljFhMzc48r6cCns+QjV/5T0gNDGuE4xgYoPMdoF6Ha82Pc6o4gSH7AbQ==Key1 : jVeQxXiRDMi+4LfBVd54GK/fA8sV7oemNZfmqBNxh7Ij0h1/ozX7MUdbVEJg6z4mFK12IG/5Mv1ikKOxoTCoGA==\nKey2 : DM94He402SX9nhDKNylQjDYzjBE3Nl30QZ/2dCMtAzmp2/mMdIVDDZDGqG8QUT4+jVMuBTDNkb3hv1PzL1TdMw==Key1 : jVeQxXiRDMi+4LfBVd54GK/fA8sV7oemNZfmqBNxh7Ij0h1/ozX7MUdbVEJg6z4mFK12IG/5Mv1ikKOxoTCoGA==\nKey2 : m3h2kHE7X4C9KeTKIlfDyC4ANg6Jknu+XTJ0kzjYuXaBdZnaRxBz5FQ2tm9N4KuuIzmnTCnwpzC+PaThtxBS+w=={\n \"accountType\": null,\n \"creationTime\": null,\n \"customDomain\": null,\n \"id\": null,\n \"lastGeoFailoverTime\": null,\n \"location\": null,\n \"name\": null,\n \"primaryEndpoints\": null,\n \"primaryLocation\": null,\n \"provisioningState\": null,\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": null,\n \"statusOfSecondary\": null,\n \"tags\": {\n \"cat\": \"\",\n \"foo\": \"bar\"\n },\n \"type\": null\n}{\n \"accountType\": null,\n \"creationTime\": null,\n \"customDomain\": null,\n \"id\": null,\n \"lastGeoFailoverTime\": null,\n \"location\": null,\n \"name\": null,\n \"primaryEndpoints\": null,\n \"primaryLocation\": null,\n \"provisioningState\": null,\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": null,\n \"statusOfSecondary\": null,\n \"tags\": {\n \"none\": \"\"\n },\n \"type\": null\n}{\n \"accountType\": \"Standard_GRS\",\n \"creationTime\": null,\n \"customDomain\": null,\n \"id\": null,\n \"lastGeoFailoverTime\": null,\n \"location\": null,\n \"name\": null,\n \"primaryEndpoints\": null,\n \"primaryLocation\": null,\n \"provisioningState\": null,\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": null,\n \"statusOfSecondary\": null,\n \"tags\": null,\n \"type\": null\n}", + "test_storage_account": "{\n \"message\": null,\n \"nameAvailable\": true,\n \"reason\": null\n}{\n \"message\": \"The storage account named travistestresourcegr3014 is already taken.\",\n \"nameAvailable\": false,\n \"reason\": \"AlreadyExists\"\n}[\n {\n \"accountType\": \"Standard_LRS\",\n \"creationTime\": \"2016-04-06T21:44:48.400791+00:00\",\n \"customDomain\": null,\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/teststorageaccount02\",\n \"lastGeoFailoverTime\": null,\n \"location\": \"westus\",\n \"name\": \"teststorageaccount02\",\n \"primaryEndpoints\": {\n \"blob\": \"https://teststorageaccount02.blob.core.windows.net/\",\n \"file\": \"https://teststorageaccount02.file.core.windows.net/\",\n \"queue\": \"https://teststorageaccount02.queue.core.windows.net/\",\n \"table\": \"https://teststorageaccount02.table.core.windows.net/\"\n },\n \"primaryLocation\": \"westus\",\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"travistestresourcegroup\",\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": \"Available\",\n \"statusOfSecondary\": null,\n \"tags\": {\n \"cat\": \"\",\n \"foo\": \"bar\"\n },\n \"type\": \"Microsoft.Storage/storageAccounts\"\n },\n {\n \"accountType\": \"Standard_LRS\",\n \"creationTime\": \"2016-04-26T00:00:45.729978+00:00\",\n \"customDomain\": null,\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/travistestresourcegr3014\",\n \"lastGeoFailoverTime\": null,\n \"location\": \"westus\",\n \"name\": \"travistestresourcegr3014\",\n \"primaryEndpoints\": {\n \"blob\": \"https://travistestresourcegr3014.blob.core.windows.net/\",\n \"file\": \"https://travistestresourcegr3014.file.core.windows.net/\",\n \"queue\": \"https://travistestresourcegr3014.queue.core.windows.net/\",\n \"table\": \"https://travistestresourcegr3014.table.core.windows.net/\"\n },\n \"primaryLocation\": \"westus\",\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"travistestresourcegroup\",\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": \"Available\",\n \"statusOfSecondary\": null,\n \"tags\": {\n \"none\": \"\"\n },\n \"type\": \"Microsoft.Storage/storageAccounts\"\n },\n {\n \"accountType\": \"Standard_LRS\",\n \"creationTime\": \"2016-05-05T20:54:21.465033+00:00\",\n \"customDomain\": null,\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/vhdstoragegtcmyygd2kyk2\",\n \"lastGeoFailoverTime\": null,\n \"location\": \"westus\",\n \"name\": \"vhdstoragegtcmyygd2kyk2\",\n \"primaryEndpoints\": {\n \"blob\": \"https://vhdstoragegtcmyygd2kyk2.blob.core.windows.net/\",\n \"file\": \"https://vhdstoragegtcmyygd2kyk2.file.core.windows.net/\",\n \"queue\": \"https://vhdstoragegtcmyygd2kyk2.queue.core.windows.net/\",\n \"table\": \"https://vhdstoragegtcmyygd2kyk2.table.core.windows.net/\"\n },\n \"primaryLocation\": \"westus\",\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"travistestresourcegroup\",\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": \"Available\",\n \"statusOfSecondary\": null,\n \"tags\": {\n \"displayName\": \"StorageAccount\"\n },\n \"type\": \"Microsoft.Storage/storageAccounts\"\n },\n {\n \"accountType\": \"Standard_LRS\",\n \"creationTime\": \"2016-05-05T21:11:56.050903+00:00\",\n \"customDomain\": null,\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/vhdstorageo42yswfrhfzia\",\n \"lastGeoFailoverTime\": null,\n \"location\": \"westus\",\n \"name\": \"vhdstorageo42yswfrhfzia\",\n \"primaryEndpoints\": {\n \"blob\": \"https://vhdstorageo42yswfrhfzia.blob.core.windows.net/\",\n \"file\": \"https://vhdstorageo42yswfrhfzia.file.core.windows.net/\",\n \"queue\": \"https://vhdstorageo42yswfrhfzia.queue.core.windows.net/\",\n \"table\": \"https://vhdstorageo42yswfrhfzia.table.core.windows.net/\"\n },\n \"primaryLocation\": \"westus\",\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"travistestresourcegroup\",\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": \"Available\",\n \"statusOfSecondary\": null,\n \"tags\": {\n \"displayName\": \"StorageAccount\"\n },\n \"type\": \"Microsoft.Storage/storageAccounts\"\n },\n {\n \"accountType\": \"Standard_LRS\",\n \"creationTime\": \"2016-05-05T20:52:49.494803+00:00\",\n \"customDomain\": null,\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/vhdstoragermjmr5zat626k\",\n \"lastGeoFailoverTime\": null,\n \"location\": \"westus\",\n \"name\": \"vhdstoragermjmr5zat626k\",\n \"primaryEndpoints\": {\n \"blob\": \"https://vhdstoragermjmr5zat626k.blob.core.windows.net/\",\n \"file\": \"https://vhdstoragermjmr5zat626k.file.core.windows.net/\",\n \"queue\": \"https://vhdstoragermjmr5zat626k.queue.core.windows.net/\",\n \"table\": \"https://vhdstoragermjmr5zat626k.table.core.windows.net/\"\n },\n \"primaryLocation\": \"westus\",\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"travistestresourcegroup\",\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": \"Available\",\n \"statusOfSecondary\": null,\n \"tags\": {\n \"displayName\": \"StorageAccount\"\n },\n \"type\": \"Microsoft.Storage/storageAccounts\"\n },\n {\n \"accountType\": \"Standard_LRS\",\n \"creationTime\": \"2016-05-05T21:43:48.273135+00:00\",\n \"customDomain\": null,\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/vhdstorages67e6ressiqoy\",\n \"lastGeoFailoverTime\": null,\n \"location\": \"westus\",\n \"name\": \"vhdstorages67e6ressiqoy\",\n \"primaryEndpoints\": {\n \"blob\": \"https://vhdstorages67e6ressiqoy.blob.core.windows.net/\",\n \"file\": \"https://vhdstorages67e6ressiqoy.file.core.windows.net/\",\n \"queue\": \"https://vhdstorages67e6ressiqoy.queue.core.windows.net/\",\n \"table\": \"https://vhdstorages67e6ressiqoy.table.core.windows.net/\"\n },\n \"primaryLocation\": \"westus\",\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"travistestresourcegroup\",\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": \"Available\",\n \"statusOfSecondary\": null,\n \"tags\": {\n \"displayName\": \"StorageAccount\"\n },\n \"type\": \"Microsoft.Storage/storageAccounts\"\n }\n]{\n \"accountType\": \"Standard_LRS\",\n \"creationTime\": \"2016-04-26T00:00:45.729978+00:00\",\n \"customDomain\": null,\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/travistestresourcegroup/providers/Microsoft.Storage/storageAccounts/travistestresourcegr3014\",\n \"lastGeoFailoverTime\": null,\n \"location\": \"westus\",\n \"name\": \"travistestresourcegr3014\",\n \"primaryEndpoints\": {\n \"blob\": \"https://travistestresourcegr3014.blob.core.windows.net/\",\n \"file\": \"https://travistestresourcegr3014.file.core.windows.net/\",\n \"queue\": \"https://travistestresourcegr3014.queue.core.windows.net/\",\n \"table\": \"https://travistestresourcegr3014.table.core.windows.net/\"\n },\n \"primaryLocation\": \"westus\",\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"travistestresourcegroup\",\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": \"Available\",\n \"statusOfSecondary\": null,\n \"tags\": {\n \"none\": \"\"\n },\n \"type\": \"Microsoft.Storage/storageAccounts\"\n}{\n \"currentValue\": 44,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Storage Accounts\",\n \"value\": \"StorageAccounts\"\n },\n \"unit\": \"Count\"\n}{\n \"accountType\": null,\n \"creationTime\": null,\n \"customDomain\": null,\n \"id\": null,\n \"lastGeoFailoverTime\": null,\n \"location\": null,\n \"name\": null,\n \"primaryEndpoints\": null,\n \"primaryLocation\": null,\n \"provisioningState\": null,\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": null,\n \"statusOfSecondary\": null,\n \"tags\": {\n \"cat\": \"\",\n \"foo\": \"bar\"\n },\n \"type\": null\n}{\n \"accountType\": null,\n \"creationTime\": null,\n \"customDomain\": null,\n \"id\": null,\n \"lastGeoFailoverTime\": null,\n \"location\": null,\n \"name\": null,\n \"primaryEndpoints\": null,\n \"primaryLocation\": null,\n \"provisioningState\": null,\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": null,\n \"statusOfSecondary\": null,\n \"tags\": {\n \"none\": \"\"\n },\n \"type\": null\n}{\n \"accountType\": \"Standard_GRS\",\n \"creationTime\": null,\n \"customDomain\": null,\n \"id\": null,\n \"lastGeoFailoverTime\": null,\n \"location\": null,\n \"name\": null,\n \"primaryEndpoints\": null,\n \"primaryLocation\": null,\n \"provisioningState\": null,\n \"secondaryEndpoints\": null,\n \"secondaryLocation\": null,\n \"statusOfPrimary\": null,\n \"statusOfSecondary\": null,\n \"tags\": null,\n \"type\": null\n}", "test_storage_account_create_and_delete": "{\n \"message\": \"The storage account named testcreatedelete is already taken.\",\n \"nameAvailable\": false,\n \"reason\": \"AlreadyExists\"\n}{\n \"message\": null,\n \"nameAvailable\": true,\n \"reason\": null\n}", - "test_storage_blob": "truetrue{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D36FAB5A1803EB\\\"\",\n \"lastModified\": \"2016-04-28T21:23:33+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"available\",\n \"status\": \"unlocked\"\n }\n }\n}Next Marker : \nItems :\n Metadata : None\n Name : bootdiagnostics-linuxtest-f6c88058-8d96-4f6a-a090-9fb5411151d0\n Properties :\n Etag : \"0x8D36E19CE91BE4A\"\n Last Modified : 2016-04-26T21:29:10+00:00\n Lease Duration : None\n Lease State : available\n Lease Status : unlocked\n Lease :\n Duration : None\n State : None\n Status : None\n Metadata : None\n Name : bootdiagnostics-windowste-2006bcb8-19b1-48c0-9822-da025cd5a5f4\n Properties :\n Etag : \"0x8D36E114D516083\"\n Last Modified : 2016-04-26T20:28:18+00:00\n Lease Duration : None\n Lease State : available\n Lease Status : unlocked\n Lease :\n Duration : None\n State : None\n Status : None\n Metadata : None\n Name : testcontainer01\n Properties :\n Etag : \"0x8D36FAB5A1803EB\"\n Last Modified : 2016-04-28T21:23:33+00:00\n Lease Duration : None\n Lease State : available\n Lease Status : unlocked\n Lease :\n Duration : None\n State : None\n Status : None\n Metadata : None\n Name : vhds\n Properties :\n Etag : \"0x8D36E0F38BB034E\"\n Last Modified : 2016-04-26T20:13:24+00:00\n Lease Duration : infinite\n Lease State : leased\n Lease Status : locked\n Lease :\n Duration : None\n State : None\n Status : None{\n \"foo\": \"bar\",\n \"moo\": \"bak\"\n}Cors :\n None\nHour Metrics :\n Enabled : True\n Include Apis : True\n Version : 1.0\n Retention Policy :\n Days : 7\n Enabled : True\nLogging :\n Delete : False\n Read : False\n Version : 1.0\n Write : False\n Retention Policy :\n Days : None\n Enabled : False\nMinute Metrics :\n Enabled : False\n Include Apis : None\n Version : 1.0\n Retention Policy :\n Days : None\n Enabled : Falsetruetruetrue\"https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob\"{\n \"a\": \"b\",\n \"c\": \"d\"\n}Next Marker : \nItems :\n Content : None\n Metadata : None\n Name : testappendblob\n Snapshot : None\n Properties :\n Append Blob Committed Block Count : None\n Blob Type : AppendBlob\n Content Length : 156\n Etag : 0x8D36FAB5C29C580\n Last Modified : 2016-04-28T21:23:36+00:00\n Page Blob Sequence Number : None\n Content Settings :\n Cache Control : None\n Content Disposition : None\n Content Encoding : None\n Content Language : None\n Content Md5 : None\n Content Type : application/octet-stream\n Copy :\n Completion Time : None\n Id : None\n Progress : None\n Source : None\n Status : None\n Status Description : None\n Lease :\n Duration : None\n State : available\n Status : unlocked\n Content : None\n Metadata : None\n Name : testblockblob\n Snapshot : None\n Properties :\n Append Blob Committed Block Count : None\n Blob Type : BlockBlob\n Content Length : 78\n Etag : 0x8D36FAB5CDC4F5A\n Last Modified : 2016-04-28T21:23:37+00:00\n Page Blob Sequence Number : None\n Content Settings :\n Cache Control : None\n Content Disposition : None\n Content Encoding : None\n Content Language : None\n Content Md5 : zeGiTMG1TdAobIHawzap3A==\n Content Type : application/octet-stream\n Copy :\n Completion Time : None\n Id : None\n Progress : None\n Source : None\n Status : None\n Status Description : None\n Lease :\n Duration : None\n State : available\n Status : unlocked\n Content : None\n Metadata : None\n Name : testpageblob\n Snapshot : None\n Properties :\n Append Blob Committed Block Count : None\n Blob Type : PageBlob\n Content Length : 512\n Etag : 0x8D36FAB5BB739DE\n Last Modified : 2016-04-28T21:23:35+00:00\n Page Blob Sequence Number : None\n Sequence Number : 0\n Content Settings :\n Cache Control : None\n Content Disposition : None\n Content Encoding : None\n Content Language : None\n Content Md5 : None\n Content Type : application/octet-stream\n Copy :\n Completion Time : None\n Id : None\n Progress : None\n Source : None\n Status : None\n Status Description : None\n Lease :\n Duration : None\n State : available\n Status : unlocked{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D36FAB5CDC4F5A\\\"\",\n \"lastModified\": \"2016-04-28T21:23:37+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"available\",\n \"status\": \"unlocked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D36FAB5CDC4F5A\\\"\",\n \"lastModified\": \"2016-04-28T21:23:37+00:00\",\n \"lease\": {\n \"duration\": \"fixed\",\n \"state\": \"leased\",\n \"status\": \"locked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D36FAB5CDC4F5A\\\"\",\n \"lastModified\": \"2016-04-28T21:23:37+00:00\",\n \"lease\": {\n \"duration\": \"fixed\",\n \"state\": \"leased\",\n \"status\": \"locked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D36FAB5CDC4F5A\\\"\",\n \"lastModified\": \"2016-04-28T21:23:37+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"breaking\",\n \"status\": \"locked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D36FAB5CDC4F5A\\\"\",\n \"lastModified\": \"2016-04-28T21:23:37+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"available\",\n \"status\": \"unlocked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}true{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D36FAB5B1F4635\\\"\",\n \"lastModified\": \"2016-04-28T21:23:34+00:00\",\n \"lease\": {\n \"duration\": \"fixed\",\n \"state\": \"leased\",\n \"status\": \"locked\"\n }\n }\n}{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D36FAB5B1F4635\\\"\",\n \"lastModified\": \"2016-04-28T21:23:34+00:00\",\n \"lease\": {\n \"duration\": \"fixed\",\n \"state\": \"leased\",\n \"status\": \"locked\"\n }\n }\n}{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D36FAB5B1F4635\\\"\",\n \"lastModified\": \"2016-04-28T21:23:34+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"breaking\",\n \"status\": \"locked\"\n }\n }\n}{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D36FAB5B1F4635\\\"\",\n \"lastModified\": \"2016-04-28T21:23:34+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"available\",\n \"status\": \"unlocked\"\n }\n }\n}true", - "test_storage_file": "truetruetrue{\n \"cat\": \"hat\",\n \"foo\": \"bar\"\n}Next Marker : None\nItems :\n Metadata : None\n Name : testshare\n Properties :\n Etag : \"0x8D36E189FD7EB3F\"\n Last Modified : 2016-04-26T21:20:42+00:00\n Quota : 5120\n Metadata : None\n Name : testshare01\n Properties :\n Etag : \"0x8D36FAA31A47710\"\n Last Modified : 2016-04-28T21:15:15+00:00\n Quota : 5120\n Metadata : None\n Name : testshare02\n Properties :\n Etag : \"0x8D36FAA31CFA378\"\n Last Modified : 2016-04-28T21:15:16+00:00\n Quota : 5120{\n \"a\": \"b\",\n \"c\": \"d\"\n}{\n \"metadata\": {},\n \"name\": \"testshare01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D36FAA3321DE00\\\"\",\n \"lastModified\": \"2016-04-28T21:15:18+00:00\",\n \"quota\": 3\n }\n}true{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testfile.rst\",\n \"properties\": {\n \"contentLength\": 1234,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": null,\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D36FAA34758780\\\"\",\n \"lastModified\": \"2016-04-28T21:15:20+00:00\"\n }\n}{\n \"a\": \"b\",\n \"c\": \"d\"\n}\"https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst\"Next Marker : None\nItems :\n Content : None\n Metadata : None\n Name : testfile.rst\n Properties :\n Content Length : 1234\n Etag : None\n Last Modified : None\n Content Settings :\n Cache Control : None\n Content Disposition : None\n Content Encoding : None\n Content Language : None\n Content Md5 : None\n Content Type : None\n Copy :\n Completion Time : None\n Id : None\n Progress : None\n Source : None\n Status : None\n Status Description : Nonetruetrue{\n \"a\": \"b\",\n \"c\": \"d\"\n}{\n \"metadata\": {\n \"a\": \"b\",\n \"c\": \"d\"\n },\n \"name\": \"testdir01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D36FAA362B130F\\\"\",\n \"lastModified\": \"2016-04-28T21:15:23+00:00\"\n }\n}trueNext Marker : None\nItems :\n Content : None\n Metadata : None\n Name : testfile.rst\n Properties :\n Content Length : 78\n Etag : None\n Last Modified : None\n Content Settings :\n Cache Control : None\n Content Disposition : None\n Content Encoding : None\n Content Language : None\n Content Md5 : None\n Content Type : None\n Copy :\n Completion Time : None\n Id : None\n Progress : None\n Source : None\n Status : None\n Status Description : None1truetrue{\n \"cat\": \"hat\",\n \"foo\": \"bar\"\n}trueCors :\n None\nHour Metrics :\n Enabled : True\n Include Apis : True\n Version : 1.0\n Retention Policy :\n Days : 7\n Enabled : True\nMinute Metrics :\n Enabled : False\n Include Apis : None\n Version : 1.0\n Retention Policy :\n Days : None\n Enabled : False" + "test_storage_blob": "truetrue{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D3784C58F8286E\\\"\",\n \"lastModified\": \"2016-05-09T20:56:09+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"available\",\n \"status\": \"unlocked\"\n }\n }\n}{\n \"foo\": \"bar\",\n \"moo\": \"bak\"\n}{\n \"cors\": [],\n \"hourMetrics\": {\n \"enabled\": true,\n \"includeApis\": true,\n \"retentionPolicy\": {\n \"days\": 7,\n \"enabled\": true\n },\n \"version\": \"1.0\"\n },\n \"logging\": {\n \"delete\": false,\n \"read\": false,\n \"retentionPolicy\": {\n \"days\": null,\n \"enabled\": false\n },\n \"version\": \"1.0\",\n \"write\": false\n },\n \"minuteMetrics\": {\n \"enabled\": false,\n \"includeApis\": null,\n \"retentionPolicy\": {\n \"days\": null,\n \"enabled\": false\n },\n \"version\": \"1.0\"\n }\n}truetruetrue\"https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob\"{\n \"a\": \"b\",\n \"c\": \"d\"\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D3784C5C77A0CA\\\"\",\n \"lastModified\": \"2016-05-09T20:56:15+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"available\",\n \"status\": \"unlocked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D3784C5C77A0CA\\\"\",\n \"lastModified\": \"2016-05-09T20:56:15+00:00\",\n \"lease\": {\n \"duration\": \"fixed\",\n \"state\": \"leased\",\n \"status\": \"locked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D3784C5C77A0CA\\\"\",\n \"lastModified\": \"2016-05-09T20:56:15+00:00\",\n \"lease\": {\n \"duration\": \"fixed\",\n \"state\": \"leased\",\n \"status\": \"locked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D3784C5C77A0CA\\\"\",\n \"lastModified\": \"2016-05-09T20:56:15+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"breaking\",\n \"status\": \"locked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testblockblob\",\n \"properties\": {\n \"appendBlobCommittedBlockCount\": null,\n \"blobType\": \"BlockBlob\",\n \"contentLength\": 78,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": \"zeGiTMG1TdAobIHawzap3A==\",\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D3784C5C77A0CA\\\"\",\n \"lastModified\": \"2016-05-09T20:56:15+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"available\",\n \"status\": \"unlocked\"\n },\n \"pageBlobSequenceNumber\": null\n },\n \"snapshot\": null\n}true{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D3784C5952847C\\\"\",\n \"lastModified\": \"2016-05-09T20:56:10+00:00\",\n \"lease\": {\n \"duration\": \"fixed\",\n \"state\": \"leased\",\n \"status\": \"locked\"\n }\n }\n}{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D3784C5952847C\\\"\",\n \"lastModified\": \"2016-05-09T20:56:10+00:00\",\n \"lease\": {\n \"duration\": \"fixed\",\n \"state\": \"leased\",\n \"status\": \"locked\"\n }\n }\n}{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D3784C5952847C\\\"\",\n \"lastModified\": \"2016-05-09T20:56:10+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"breaking\",\n \"status\": \"locked\"\n }\n }\n}{\n \"metadata\": {},\n \"name\": \"testcontainer01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D3784C5952847C\\\"\",\n \"lastModified\": \"2016-05-09T20:56:10+00:00\",\n \"lease\": {\n \"duration\": null,\n \"state\": \"available\",\n \"status\": \"unlocked\"\n }\n }\n}true", + "test_storage_file": "truetruetrue{\n \"cat\": \"hat\",\n \"foo\": \"bar\"\n}{\n \"a\": \"b\",\n \"c\": \"d\"\n}{\n \"metadata\": {},\n \"name\": \"testshare01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D3784DF4B748EF\\\"\",\n \"lastModified\": \"2016-05-09T21:07:40+00:00\",\n \"quota\": 3\n }\n}true{\n \"content\": null,\n \"metadata\": {},\n \"name\": \"testfile.rst\",\n \"properties\": {\n \"contentLength\": 1234,\n \"contentSettings\": {\n \"cacheControl\": null,\n \"contentDisposition\": null,\n \"contentEncoding\": null,\n \"contentLanguage\": null,\n \"contentMd5\": null,\n \"contentType\": \"application/octet-stream\"\n },\n \"copy\": {\n \"completionTime\": null,\n \"id\": null,\n \"progress\": null,\n \"source\": null,\n \"status\": null,\n \"statusDescription\": null\n },\n \"etag\": \"\\\"0x8D3784DF61DB5CB\\\"\",\n \"lastModified\": \"2016-05-09T21:07:42+00:00\"\n }\n}{\n \"a\": \"b\",\n \"c\": \"d\"\n}\"https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst\"truetrue{\n \"a\": \"b\",\n \"c\": \"d\"\n}{\n \"metadata\": {\n \"a\": \"b\",\n \"c\": \"d\"\n },\n \"name\": \"testdir01\",\n \"properties\": {\n \"etag\": \"\\\"0x8D3784DF7E781EE\\\"\",\n \"lastModified\": \"2016-05-09T21:07:45+00:00\"\n }\n}true1truetrue{\n \"cat\": \"hat\",\n \"foo\": \"bar\"\n}true{\n \"cors\": [],\n \"hourMetrics\": {\n \"enabled\": true,\n \"includeApis\": true,\n \"retentionPolicy\": {\n \"days\": 7,\n \"enabled\": true\n },\n \"version\": \"1.0\"\n },\n \"minuteMetrics\": {\n \"enabled\": false,\n \"includeApis\": null,\n \"retentionPolicy\": {\n \"days\": null,\n \"enabled\": false\n },\n \"version\": \"1.0\"\n }\n}" } \ No newline at end of file diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_account.yaml b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_account.yaml index e34ccb099b3..57c881582bd 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_account.yaml +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_account.yaml @@ -1,40 +1,6 @@ interactions: - request: - body: client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&refresh_token=AAABAAAAiL9Kn2Z27UubvWFPbm0gLQoucyuhWVsJeWlI9dGHcCp-UEliGxmPaPMbHACErdm4Huw62OZuSF7H7LLFXMN7fuIPFNqE7f_QF9QQyD5Ui8KRfhduYlulJGP7ST-diYbpFNIoleXt4T4ipguWePyAPoInxQaOmFUJ6NywQalErbaG9ld99xzQ-RDn4aoH_GtUy7E761e8HojR47texNpxUUn_fSDseHaOuH7NXjp9_5K8ssdZwXA2zutzFVnfVfrY1tfO1iXreBLruchA8iRpP_B-wesZuwYCZ0CT4-lOuaYTO59YeFn2I7Rk_zPWlLKQ7GRBAhXHcOqPjk6CpPTeO1qFKHwkX_yMUZAV7QwrlxEgcOASxf8dujZKGTZdqDrGkwfstijCCgGk6wmNpDU8TaR3gAc8KeOOd_8Q-RGUnLRtO3sq8iGUSpwxJxjHefwtZKRnKBHX2yuZVJUTyELIWEfUNbFY9IlRCdQfI1rm-n9tftUao-ibqOUO8E8v4s0W7U0X8iQG5h59FJn0DT8CURJyFUseayuVEui5pZ75wC-wQUkkyh7ugHXU5GyfzE5HeeTUUsIeHG7k5MJhelX0_VEBCCFFxHdee4e75BUhr_TyGqYrJaxEdA9GfCIzN6-NFXGc2A_2oQ6i6Nhjai5WQiAA&grant_type=refresh_token&resource=https%3A%2F%2Fmanagement.core.windows.net%2F - headers: - Accept: ['*/*'] - Accept-Charset: [utf-8] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['812'] - User-Agent: [python-requests/2.9.1] - content-type: [application/x-www-form-urlencoded] - return-client-request-id: ['true'] - x-client-CPU: [x86] - x-client-OS: [win32] - x-client-SKU: [Python] - x-client-Ver: [0.2.0] - method: POST - uri: https://login.microsoftonline.com/54826b22-38d6-4fb2-bad9-b7b93a3e9c5a/oauth2/token?api-version=1.0 - response: - body: {string: '{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3599","expires_on":"1461688499","not_before":"1461684599","resource":"https://management.core.windows.net/","access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDYxNjg0NTk5LCJuYmYiOjE0NjE2ODQ1OTksImV4cCI6MTQ2MTY4ODQ5OSwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IkFkbWluMiIsImdpdmVuX25hbWUiOiJBZG1pbjIiLCJncm91cHMiOlsiZTRiYjBiNTYtMTAxNC00MGY4LTg4YWItM2Q4YThjYjBlMDg2Il0sImlwYWRkciI6IjE2Ny4yMjAuMS4xODYiLCJuYW1lIjoiQWRtaW4yIiwib2lkIjoiNTk2M2Y1MGMtN2M0My00MDVjLWFmN2UtNTMyOTRkZTc2YWJkIiwicHVpZCI6IjEwMDNCRkZEOTU5Rjg0MjMiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJzRGdleFJ3Q05JZlktaHpRampDRHZaVDdJemRmbzRTeXJyNHgwZEROelI0IiwidGlkIjoiNTQ4MjZiMjItMzhkNi00ZmIyLWJhZDktYjdiOTNhM2U5YzVhIiwidW5pcXVlX25hbWUiOiJhZG1pbjJAQXp1cmVTREtUZWFtLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImFkbWluMkBBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.AHEBTJ0eP-3mJMJV4KBqBHuntEBIL5ND6E5TPkrKgbAtpLED7RJNIBvWiw9guKgzabyWCT2mcb2tVAFM-YmQ-7VlYBGsELtsNiSnuYshiR-586vu5BSwYpeRMbk7mNZEy8inndY1znPYLdfZFTPBchHxJ5tQDWHtNE42Yejg5UtZYXqMQSsslecItSg_E2HBekbbBGlD9muri5baiRF131_pT2rLa-MynoZwxgCxOIBf0De7h0cfQTwyblpi_MKrnQ2jOSiuaQ2wZ1unywYI8lNtAbYLDGLzY9Kg5y_eOQY-q02Y--ONCGbuiD1kNwRxEx-FrNSnpgqrp5zv4X1Ulw","refresh_token":"AAABAAAAiL9Kn2Z27UubvWFPbm0gLbcBSC68FfW4jj8KcqEuydKT4QOY0WeoAc8SeV_OHp9fmwbHsl8mL_X_LtdMGvM62L9bYOfFgvyDbhgJ-aY1HAFXrl-ggt-KGzqD9ir1W_Ep7pjKnRL1aRlvZ5iH2m7bCU3ceC2l3BY_IYrYXB6BBMdcP256RwQroNmNO7vZyw2Uker7PlUwy2SqYzSIg0C3NMNn3UC1A2mmBi_dRaD-LkrIUqUS_DeoMQrkh92S5le4MtKkMQ6IKcEuTTA0aVt7Fhh4CLebF-dDC0HZDAS6QnOgN_lOeNDVHViREDuADAEqgUNxMF6z5a6AFJdoGRz4MZpuugX0_jWLOJcgG6scFcJOmnXrOr_0IQhT44MiQ8jdeiuKIKEFhoCQ4MSFUydCPxpZhg-KwPMRLLKMHUYUvzUp0_O1YH588hz6ClEhhz8dk-wYadFKq7ZqSJR5j2DSO4ATmCBb6vPfCcZz5jV6aETDPIWXoMW2wTHQi2sT6dLC3eJo6yFshduZUrOAnHKX9taR8Wv6MbYrEcnk7yIPD5xFbtYDV5-YnvzVxmAZBnjRJEcQVQs5tSEjxxo6QiQJinc4uEHo6fyuaK_XZ8y63RW4HuPRQm0ckia3uS62OdRYy4f9ls5ppLVSK4yclrOSRCAA"}'} - headers: - Cache-Control: ['no-cache, no-store'] - Content-Length: ['2346'] - Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 26 Apr 2016 15:34:59 GMT'] - Expires: ['-1'] - P3P: [CP="DSP CUR OTPi IND OTRi ONL FIN"] - Pragma: [no-cache] - Server: [Microsoft-IIS/8.5] - Set-Cookie: [flight-uxoptin=true; path=/; secure; HttpOnly, x-ms-gateway-slice=productionb; - path=/; secure; HttpOnly, stsservicecookie=ests; path=/; secure; HttpOnly] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-Content-Type-Options: [nosniff] - X-Powered-By: [ASP.NET] - status: {code: 200, message: OK} -- request: - body: '{"name": "teststorageomega", "type": "Microsoft.Storage/storageAccounts"}' + body: '{"type": "Microsoft.Storage/storageAccounts", "name": "teststorageomega"}' headers: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] @@ -56,7 +22,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:34:59 GMT'] + Date: ['Mon, 09 May 2016 20:43:14 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -64,7 +30,7 @@ interactions: Vary: [Accept-Encoding] status: {code: 200, message: OK} - request: - body: '{"name": "travistestresourcegr3014", "type": "Microsoft.Storage/storageAccounts"}' + body: '{"type": "Microsoft.Storage/storageAccounts", "name": "travistestresourcegr3014"}' headers: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] @@ -87,7 +53,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:00 GMT'] + Date: ['Mon, 09 May 2016 20:43:14 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -119,12 +85,18 @@ interactions: 55jFzW9zo+jrbTa5uXNuFHn9l1hiPI9MD00AcQN9WCwviOAtunm9nk7zfJbP6PuGPls3X56/FBD0 bXaZFSX6AuQ2u2DSEmD6itqfVxX9Mslq/lYm8kZ+orb/L+PvCIx7O7v7NMBNPD78FnX+gXy+9+mb nZ1H9L/9++MHew8fPjj49LZ8PoDW7Xl9CADaRQEwK98GAjeMgmiZxW4BghtGQBD/KXF+Fvl+WS3x - Jn8ks3kjc330S77/S5L/B76UIYXZBQAA + Jn8ks3kjc1Hb/3cx++V8ph9dtNPF9fXFbO/t9Vto5w28PvwSdf1BrH6f/vdmb+fR/f1He7vj/U/v + 79y7d++WrD6A1a05feh9NIu+z/x7CwDcLgqhZZa6GQK3i0AgzlPC/Cyy+axoVmV2/ULmXhlJGYjb + yfTeyGvU9v+tvF/t7103V+f1/PwHRUaUuRXvd1+irr8B3t99tLv76P6n4537Ow937t1WzQ9g9TV4 + P3wfzaLvM0/fAgC3i0Jomc9uhsDtIhCI85QwP+L9D+H9evHTi/r+D7L2071P3xJlbsX73Zeo62+A + 90nv7z3afzjef7h/QIr/vXk/wOpr8H74PppF32eevgUAbheF0DKf3QyB20UgEOcpYX7E+x/C+82n + D/JPCVBT/KLqmihzK97vvkRdfwO8T2HsPYSxew/u7d67v/PevB9g9TV4P3wfzaLvM0/fAgC3i0Jo + mc9uhsDtIhCI85Qw/5/g/e//kuT/ASix0/PJEQAA headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:01 GMT'] + Date: ['Mon, 09 May 2016 20:43:15 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -159,7 +131,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:01 GMT'] + Date: ['Mon, 09 May 2016 20:43:15 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -183,14 +155,14 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk - 6UeXWbnOP3qUfg9/pSl/iOej9bJo6fOPTqr1sv1oZD+frus6X7Y/qe/tPXBflcWC39nd2XEfLrMF - 2lnA9JHp86PXbVVnF/nxdIpOGtcLNSqraVYWP8hnpifTOrXNTetfIr/wj+//xskv+X8AtiYxadoA - AAA= + 6UeXWbnOP3qUfg9/pSl/iOej9bJo6fOPTqr1sv1oZD+frus6X7Y/qe/t77uvymLB7+zu7LgPl9kC + 7Sxg+sj0+dHrtqqzi/x4OkUnjeuFGpXVNCuLH+Qz05NpndrmpvUvkV/4x/d/4+SX/D+gXdk42gAA + AA== headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:02 GMT'] + Date: ['Mon, 09 May 2016 20:43:16 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -215,15 +187,15 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR2/z - 692PHn00LSfvvru/+u7x5W7z5cvrd59fvDidTn7vH/xezXd+7+L8i/Ynnr16evnq/Nu/d72cXP3e - O4v2yd5P/17Xuz+990X13eVPP3/x6s3BT939vb+6eP3501fnb8rZWV0dPPmJzz77aIQe9qiHk7Pm - ZD1bZavPv/y9qst7n0zm2ecXz36vye917+16sVf+9LP5Fz+Y7h/Un05Pls0nP/HTP3n3/pudixdP - P1+f7r+7+H2ql1/Mqmeffjs72Hs5/bTav3j97QfHE/TwS5L/BzznsQjGAAAA + 692PHn3U3n131s7K8qe/XNarN9+5KH5yv/q97307+4n7v8+yXu99+8sn1dmTn372+U//9Ovq1cnn + +y/yn/jyPPupX7S/e1ktfp96Mv29i5+6frlYfWfn88+nr3+v5cXuD+4fXH322Ucj9LBHPSwWbxf3 + Ht6fPHg+ffZ7T36vYvX04Oo7v/fD1c4nx/fP7+29+nL3F/3ez8/v/+T5xeLB7/VTL79bP89+rwfV + g+uD3+t6OvmJ7zz4vfMvjl+3P3h+9/d50lY/PT+/frh+3lxQD78k+X8AelHdYcYAAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:03 GMT'] + Date: ['Mon, 09 May 2016 20:43:17 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -249,15 +221,15 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR2/z - 692PHn00LSfvvru/+u7x5W7z5cvrd59fvDidTn7vH/xezXd+7+L8i/Ynnr16evnq/Nu/d72cXP3e - O4v2yd5P/17Xuz+990X13eVPP3/x6s3BT939vb+6eP3501fnb8rZWV0dPPmJzz77aIQe9qiHk7Pm - ZD1bZavPv/y9qst7n0zm2ecXz36vye917+16sVf+9LP5Fz+Y7h/Un05Pls0nP/HTP3n3/pudixdP - P1+f7r+7+H2ql1/Mqmeffjs72Hs5/bTav3j97QfHE/TwS5L/BzznsQjGAAAA + 692PHn3U3n131s7K8qe/XNarN9+5KH5yv/q97307+4n7v8+yXu99+8sn1dmTn372+U//9Ovq1cnn + +y/yn/jyPPupX7S/e1ktfp96Mv29i5+6frlYfWfn88+nr3+v5cXuD+4fXH322Ucj9LBHPSwWbxf3 + Ht6fPHg+ffZ7T36vYvX04Oo7v/fD1c4nx/fP7+29+nL3F/3ez8/v/+T5xeLB7/VTL79bP89+rwfV + g+uD3+t6OvmJ7zz4vfMvjl+3P3h+9/d50lY/PT+/frh+3lxQD78k+X8AelHdYcYAAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:04 GMT'] + Date: ['Mon, 09 May 2016 20:43:17 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -283,21 +255,21 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR2/z - 692PHn300z+Z/8S737t49fSL4pP95+dPfnJ2f//z3+vu+fFB85MPqnzx4qfOF7/oyYt38wdnP70z - 371b/eD3fvDFV7PJT55+5+LTH+wvnv1eu3tnn9+9/8XlbvH29/ryXfXmpPr8+LPPPhqhhz3q4eSs - OVnPVtnq8y9/r+ry3ieTefb5xbPfa/J73Xu7XuyVP/1s/sUPpvsH9afTk2XzyU/89E/evf9m5+LF - 08/Xp/vvLn6f6uUXs+rZp9/ODvZeTj+t9i9ef/vB8eQnqIdfkvw/EUnTqsYAAAA= + 692PHn1UHpzs3l09ebEqv/qJb397uX5bffdh8eTFy2dv7r75fPLpg4v5Rf6TZ5/+Xp+8eds2Vz/1 + +eenP/GT629fNSc/9cX99uGrts32yunFT07vL48//0XtxYPm9369+3v/xGeffTRCD3vUw2LxdnHv + 4f3Jg+fTZ7/35PcqVk8Prr7zez9c7XxyfP/83t6rL3d/0e/9/Pz+T55fLB78Xj/18rv18+z3elA9 + uD74va6nk5/4zoPfO//i+HX7g+d3f58nbfXT8/Prh+vnzQX18EuS/weTAHPYxgAAAA== headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:06 GMT'] + Date: ['Mon, 09 May 2016 20:43:18 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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] status: {code: 200, message: OK} - request: body: '{"keyName": "key2"}' @@ -317,21 +289,21 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR2/z - 692PHn300z+Z/8S737t49fSL4pP95+dPfnJ2f//z3+vu+fFB85MPqnzx4qfOF7/oyYt38wdnP70z - 371b/eD3fvDFV7PJT55+5+LTH+wvnv1eu3tnn9+9/8XlbvH29/ryXfXmpPr8+LPPPhqhhz3q4ekX - D/e/ne/v7L3+vR8u509/rxfX5U/89NPf5wc//eT03ovy3s5P/NTdvdnJF+3xDxarvbuLL2ZnP/n0 - 6U89/fwXfX7wE1+92f/kp3/yi/WTN09fvJ3cm1/uvvzB8903sy+uqIdfkvw/NXZgQMYAAAA= + 692PHn1UHpzs3l09ebEqv/qJb397uX5bffdh8eTFy2dv7r75fPLpg4v5Rf6TZ5/+Xp+8eds2Vz/1 + +eenP/GT629fNSc/9cX99uGrts32yunFT07vL48//0XtxYPm9369+3v/xGeffTRCD3vUQ/OyOXuz + /8l37v307/3mOw8P5uft853f+8uL3Z0f/GDyZPV7LV8+/Ymz3+f17mLx7qsf/KJPL57/Pj/xYtk+ + KJ+f58/u71aL7PL0i+ef/j51fX7/Oz91lS9Wi5Pf68XBBfXwS5L/Bw1s6yPGAAAA headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:07 GMT'] + Date: ['Mon, 09 May 2016 20:43:18 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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] status: {code: 200, message: OK} - request: body: '{"keyName": "key2"}' @@ -351,21 +323,21 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR2/z - 692PHn300z+Z/8S737t49fSL4pP95+dPfnJ2f//z3+vu+fFB85MPqnzx4qfOF7/oyYt38wdnP70z - 371b/eD3fvDFV7PJT55+5+LTH+wvnv1eu3tnn9+9/8XlbvH29/ryXfXmpPr8+LPPPhqhhz3qYXFv - vvf226cPfu/9k4e/V/7m9zorz59en+wfv7j49Dtvl+tPfu8339l5+4Of/n3Wv3f2ZPZTy+zVuyc/ - uP/sJ/baxcMX+7/Xen32g8XyzcnyavWDk09eZm/m7bsnrz+5oh5+SfL/AOw6p1HGAAAA + 692PHn1UHpzs3l09ebEqv/qJb397uX5bffdh8eTFy2dv7r75fPLpg4v5Rf6TZ5/+Xp+8eds2Vz/1 + +eenP/GT629fNSc/9cX99uGrts32yunFT07vL48//0XtxYPm9369+3v/xGeffTRCD3vUw9VsefHJ + L7rKpp+vJ/ns04v1y2r5cvX5u53vHv/Uanl/sl7crX/q298pP335YvblefYTP3nvaVWcfveTZ5cv + P13vvyh+8tNmenF5cv9tfvbyxe9Vvnu6c//FTx5TD78k+X8A930DV8YAAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:11 GMT'] + Date: ['Mon, 09 May 2016 20:43:21 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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] status: {code: 200, message: OK} - request: body: '{"tags": {"foo": "bar", "cat": ""}}' @@ -390,13 +362,13 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:20 GMT'] + Date: ['Mon, 09 May 2016 20:43: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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] status: {code: 200, message: OK} - request: body: '{"tags": {"none": ""}}' @@ -421,13 +393,13 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:24 GMT'] + Date: ['Mon, 09 May 2016 20:43:23 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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] status: {code: 200, message: OK} - request: body: '{"properties": {"accountType": "Standard_GRS"}}' @@ -452,13 +424,13 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:24 GMT'] + Date: ['Mon, 09 May 2016 20:43:24 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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] status: {code: 200, message: OK} - request: body: '{"properties": {"accountType": "Standard_LRS"}}' @@ -483,12 +455,12 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:26 GMT'] + Date: ['Mon, 09 May 2016 20:43:25 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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] status: {code: 200, message: OK} version: 1 diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_account_create_and_delete.yaml b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_account_create_and_delete.yaml index 87ebe16e62e..7b8a026add7 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_account_create_and_delete.yaml +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_account_create_and_delete.yaml @@ -16,7 +16,7 @@ interactions: body: {string: ''} headers: Cache-Control: [no-cache] - Date: ['Tue, 26 Apr 2016 15:35:44 GMT'] + Date: ['Fri, 06 May 2016 16:02:34 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -45,7 +45,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:35:44 GMT'] + Date: ['Fri, 06 May 2016 16:02:35 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -76,7 +76,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:36:12 GMT'] + Date: ['Fri, 06 May 2016 16:14:04 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -107,7 +107,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:36:12 GMT'] + Date: ['Fri, 06 May 2016 16:14:06 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -132,7 +132,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Tue, 26 Apr 2016 15:36:16 GMT'] + Date: ['Fri, 06 May 2016 16:14:06 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -162,7 +162,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Tue, 26 Apr 2016 15:36:16 GMT'] + Date: ['Fri, 06 May 2016 16:14:08 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-Azure-Storage-Resource-Provider/1.0, Microsoft-HTTPAPI/2.0] @@ -186,10 +186,10 @@ interactions: body: {string: ''} headers: Cache-Control: [no-cache] - Date: ['Tue, 26 Apr 2016 15:36:17 GMT'] + Date: ['Fri, 06 May 2016 16:14:08 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] status: {code: 204, message: No Content} version: 1 diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_blob.yaml b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_blob.yaml index 86bef17a1b9..5a2445b6f12 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_blob.yaml +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_blob.yaml @@ -17,21 +17,21 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR2/z - 692PHn10ffDV7OnOwfNsfu9u+2Ln23enT04ufnL/y9/r/g+eXM5/+qc///z+w2K9eLJ6s7x6kD// - fa5efHI+efPtdf5g9frB8tVPXczmVXVa/PRe9vs8mB1/9+ynn9SvVsefffbRCD3sUQ/PLrL809/7 - k4flq+m910/3jn+fs1dvvvPF7vnuk5ev6rc/sXtFGHx6OWtX65frvfze04PpT73Mp7/38fKTq+Xv - /d2nn5fr+z/14tvPf/DpvS/zq+P7X7yb/WD9iy6oh1+S/D/CxaBYxgAAAA== + 692PHn1UHpzs3l09ebEqv/qJb397uX5bffdh8eTFy2dv7r75fPLpg4v5Rf6TZ5/+Xp+8eds2Vz/1 + +eenP/GT629fNSc/9cX99uGrts32yunFT07vL48//0XtxYPm9369+3v/xGeffTRCD3vUw9VsefHJ + L7rKpp+vJ/ns04v1y2r5cvX5u53vHv/Uanl/sl7crX/q298pP335YvblefYTP3nvaVWcfveTZ5cv + P13vvyh+8tNmenF5cv9tfvbyxe9Vvnu6c//FTx5TD78k+X8A930DV8YAAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Thu, 28 Apr 2016 21:23:31 GMT'] + Date: ['Mon, 09 May 2016 20:56:07 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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1197'] status: {code: 200, message: OK} - request: body: null @@ -40,18 +40,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:32 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:08 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: "\uFEFFContainerNotFoundThe\ - \ specified container does not exist.\nRequestId:62ed3896-0001-0061-6494-a174a9000000\n\ - Time:2016-04-28T21:23:32.6690075Z"} + \ specified container does not exist.\nRequestId:23e7a166-0001-00fd-7735-aa0f14000000\n\ + Time:2016-05-09T20:56:09.1539637Z"} headers: Content-Length: ['225'] Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:23:32 GMT'] + Date: ['Mon, 09 May 2016 20:56:09 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified container does not exist.} @@ -61,18 +61,18 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:32 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:08 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: "\uFEFFContainerNotFoundThe\ - \ specified container does not exist.\nRequestId:6d433b67-0001-00b2-7994-a1cb0c000000\n\ - Time:2016-04-28T21:23:33.1724819Z"} + \ specified container does not exist.\nRequestId:7c9a0996-0001-002b-2435-aa44ce000000\n\ + Time:2016-05-09T20:56:08.5967509Z"} headers: Content-Length: ['225'] Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:23:32 GMT'] + Date: ['Mon, 09 May 2016 20:56:07 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified container does not exist.} @@ -83,16 +83,16 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:32 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:08 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:32 GMT'] - ETag: ['"0x8D36FAB5A1803EB"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:33 GMT'] + Date: ['Mon, 09 May 2016 20:56:09 GMT'] + ETag: ['"0x8D3784C58F8286E"'] + Last-Modified: ['Mon, 09 May 2016 20:56:09 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -102,16 +102,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:33 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:08 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:33 GMT'] - ETag: ['"0x8D36FAB5A1803EB"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:33 GMT'] + Date: ['Mon, 09 May 2016 20:56:09 GMT'] + ETag: ['"0x8D3784C58F8286E"'] + Last-Modified: ['Mon, 09 May 2016 20:56:09 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-state: [available] x-ms-lease-status: [unlocked] @@ -123,16 +123,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:33 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:08 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:32 GMT'] - ETag: ['"0x8D36FAB5A1803EB"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:33 GMT'] + Date: ['Mon, 09 May 2016 20:56:09 GMT'] + ETag: ['"0x8D3784C58F8286E"'] + Last-Modified: ['Mon, 09 May 2016 20:56:09 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-state: [available] x-ms-lease-status: [unlocked] @@ -144,22 +144,22 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:33 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:09 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/?comp=list&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/?comp=list&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: "\uFEFFbootdiagnostics-linuxtest-f6c88058-8d96-4f6a-a090-9fb5411151d0Tue,\ \ 26 Apr 2016 21:29:10 GMT\"0x8D36E19CE91BE4A\"unlockedavailablebootdiagnostics-windowste-2006bcb8-19b1-48c0-9822-da025cd5a5f4Tue,\ - \ 26 Apr 2016 20:28:18 GMT\"0x8D36E114D516083\"unlockedavailabletestcontainer01Thu,\ - \ 28 Apr 2016 21:23:33 GMT\"0x8D36FAB5A1803EB\"unlockedavailablevhdsTue,\ + \ 26 Apr 2016 20:28:18 GMT\"0x8D36E114D516083\"unlockedavailabletestcontainer01Mon,\ + \ 09 May 2016 20:56:09 GMT\"0x8D3784C58F8286E\"unlockedavailablevhdsTue,\ \ 26 Apr 2016 20:13:24 GMT\"0x8D36E0F38BB034E\"lockedleasedinfinite"} headers: Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:23:33 GMT'] + Date: ['Mon, 09 May 2016 20:56:08 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -170,18 +170,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:33 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:09 GMT'] x-ms-meta-foo: [bar] x-ms-meta-moo: [bak] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:33 GMT'] - ETag: ['"0x8D36FAB5ACA0D54"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:08 GMT'] + ETag: ['"0x8D3784C5912F9D1"'] + Last-Modified: ['Mon, 09 May 2016 20:56:09 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -191,16 +191,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:33 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:09 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:33 GMT'] - ETag: ['"0x8D36FAB5ACA0D54"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:08 GMT'] + ETag: ['"0x8D3784C5912F9D1"'] + Last-Modified: ['Mon, 09 May 2016 20:56:09 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-meta-foo: [bar] x-ms-meta-moo: [bak] @@ -213,16 +213,16 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:34 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:09 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:34 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:09 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -232,16 +232,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:34 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:09 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:34 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:10 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -251,16 +251,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:34 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:10 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/?restype=service&comp=properties&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/?restype=service&comp=properties&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: "\uFEFF1.0falsefalsefalsefalse1.0truetruetrue71.0falsefalse"} headers: Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:09 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -272,17 +272,17 @@ interactions: Content-Length: ['78'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] x-ms-blob-type: [BlockBlob] - x-ms-date: ['Thu, 28 Apr 2016 21:23:35 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:10 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: Content-MD5: [zeGiTMG1TdAobIHawzap3A==] - Date: ['Thu, 28 Apr 2016 21:23:34 GMT'] - ETag: ['"0x8D36FAB5B6BEE63"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:35 GMT'] + Date: ['Mon, 09 May 2016 20:56:10 GMT'] + ETag: ['"0x8D3784C5B332E9E"'] + Last-Modified: ['Mon, 09 May 2016 20:56:13 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -292,10 +292,10 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:35 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:10 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: @@ -303,9 +303,9 @@ interactions: Content-Length: ['78'] Content-MD5: [zeGiTMG1TdAobIHawzap3A==] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:34 GMT'] - ETag: ['"0x8D36FAB5B6BEE63"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:35 GMT'] + Date: ['Mon, 09 May 2016 20:56:09 GMT'] + ETag: ['"0x8D3784C5B332E9E"'] + Last-Modified: ['Mon, 09 May 2016 20:56:13 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-type: [BlockBlob] x-ms-lease-state: [available] @@ -322,16 +322,16 @@ interactions: User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] x-ms-blob-content-length: ['512'] x-ms-blob-type: [PageBlob] - x-ms-date: ['Thu, 28 Apr 2016 21:23:35 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:10 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testpageblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testpageblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:35 GMT'] - ETag: ['"0x8D36FAB5BAF48C2"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:35 GMT'] + Date: ['Mon, 09 May 2016 20:56:11 GMT'] + ETag: ['"0x8D3784C5B6BB358"'] + Last-Modified: ['Mon, 09 May 2016 20:56:13 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -342,21 +342,21 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] Content-Length: ['512'] - If-Match: ['"0x8D36FAB5BAF48C2"'] + If-Match: ['"0x8D3784C5B6BB358"'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:35 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:10 GMT'] x-ms-page-write: [update] x-ms-range: [bytes=0-511] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testpageblob?comp=page&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testpageblob?comp=page&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: Content-MD5: [JKbxCPFguN3PtJpiW3lCrQ==] - Date: ['Thu, 28 Apr 2016 21:23:35 GMT'] - ETag: ['"0x8D36FAB5BB739DE"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:35 GMT'] + Date: ['Mon, 09 May 2016 20:56:11 GMT'] + ETag: ['"0x8D3784C5B732F7F"'] + Last-Modified: ['Mon, 09 May 2016 20:56:13 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-sequence-number: ['0'] x-ms-version: ['2015-04-05'] @@ -367,19 +367,19 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:35 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:11 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testpageblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testpageblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: Accept-Ranges: [bytes] Content-Length: ['512'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:35 GMT'] - ETag: ['"0x8D36FAB5BB739DE"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:35 GMT'] + Date: ['Mon, 09 May 2016 20:56:10 GMT'] + ETag: ['"0x8D3784C5B732F7F"'] + Last-Modified: ['Mon, 09 May 2016 20:56:13 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-sequence-number: ['0'] x-ms-blob-type: [PageBlob] @@ -394,14 +394,14 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:35 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:11 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:36 GMT'] + Date: ['Mon, 09 May 2016 20:56:11 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified blob does not exist.} @@ -413,16 +413,16 @@ interactions: Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] x-ms-blob-type: [AppendBlob] - x-ms-date: ['Thu, 28 Apr 2016 21:23:36 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:11 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:36 GMT'] - ETag: ['"0x8D36FAB5BF95B5D"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:36 GMT'] + Date: ['Mon, 09 May 2016 20:56:11 GMT'] + ETag: ['"0x8D3784C5BB1D042"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -433,17 +433,17 @@ interactions: Connection: [keep-alive] Content-Length: ['78'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:36 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:11 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?comp=appendblock&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?comp=appendblock&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: Content-MD5: [zeGiTMG1TdAobIHawzap3A==] - Date: ['Thu, 28 Apr 2016 21:23:36 GMT'] - ETag: ['"0x8D36FAB5C017390"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:36 GMT'] + Date: ['Mon, 09 May 2016 20:56:11 GMT'] + ETag: ['"0x8D3784C5BB8FE34"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-append-offset: ['0'] x-ms-blob-committed-block-count: ['1'] @@ -455,19 +455,19 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:36 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:11 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: Accept-Ranges: [bytes] Content-Length: ['78'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:35 GMT'] - ETag: ['"0x8D36FAB5C017390"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:36 GMT'] + Date: ['Mon, 09 May 2016 20:56:11 GMT'] + ETag: ['"0x8D3784C5BB8FE34"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-committed-block-count: ['1'] x-ms-blob-type: [AppendBlob] @@ -483,17 +483,17 @@ interactions: Connection: [keep-alive] Content-Length: ['78'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:36 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:11 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?comp=appendblock&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?comp=appendblock&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: Content-MD5: [zeGiTMG1TdAobIHawzap3A==] - Date: ['Thu, 28 Apr 2016 21:23:37 GMT'] - ETag: ['"0x8D36FAB5C29C580"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:36 GMT'] + Date: ['Mon, 09 May 2016 20:56:11 GMT'] + ETag: ['"0x8D3784C5BFCA984"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-append-offset: ['78'] x-ms-blob-committed-block-count: ['2'] @@ -505,19 +505,19 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:36 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:11 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: Accept-Ranges: [bytes] Content-Length: ['156'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:36 GMT'] - ETag: ['"0x8D36FAB5C29C580"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:36 GMT'] + Date: ['Mon, 09 May 2016 20:56:12 GMT'] + ETag: ['"0x8D3784C5BFCA984"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-committed-block-count: ['2'] x-ms-blob-type: [AppendBlob] @@ -533,18 +533,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:36 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:12 GMT'] x-ms-meta-a: [b] x-ms-meta-c: [d] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:36 GMT'] - ETag: ['"0x8D36FAB5C7C1771"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:12 GMT'] + ETag: ['"0x8D3784C5C3E7F92"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -554,16 +554,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:37 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:12 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:36 GMT'] - ETag: ['"0x8D36FAB5C7C1771"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:12 GMT'] + ETag: ['"0x8D3784C5C3E7F92"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-meta-a: [b] x-ms-meta-c: [d] @@ -576,16 +576,16 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:37 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:12 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:36 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:13 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -595,16 +595,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:37 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:12 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=metadata&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:37 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:12 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -614,27 +614,27 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:37 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:12 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=list&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=list&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: "\uFEFFtestappendblobThu,\ - \ 28 Apr 2016 21:23:36 GMT0x8D36FAB5C29C580156application/octet-streamtestappendblobMon,\ + \ 09 May 2016 20:56:14 GMT0x8D3784C5BFCA984156application/octet-streamAppendBlobunlockedavailabletestblockblobThu,\ - \ 28 Apr 2016 21:23:37 GMT0x8D36FAB5CDC4F5A78application/octet-streamAppendBlobunlockedavailabletestblockblobMon,\ + \ 09 May 2016 20:56:15 GMT0x8D3784C5C77A0CA78application/octet-streamzeGiTMG1TdAobIHawzap3A==BlockBlobunlockedavailabletestpageblobThu,\ - \ 28 Apr 2016 21:23:35 GMT0x8D36FAB5BB739DE512application/octet-streamBlockBlobunlockedavailabletestpageblobMon,\ + \ 09 May 2016 20:56:13 GMT0x8D3784C5B732F7F512application/octet-stream0PageBlobunlockedavailable"} headers: Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:23:38 GMT'] + Date: ['Mon, 09 May 2016 20:56:12 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -644,10 +644,10 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:38 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:13 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: @@ -655,9 +655,9 @@ interactions: Content-Length: ['78'] Content-MD5: [zeGiTMG1TdAobIHawzap3A==] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:38 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:12 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-type: [BlockBlob] x-ms-lease-state: [available] @@ -671,11 +671,11 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:38 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:13 GMT'] x-ms-range: [bytes=None-] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: This is a test file for performance of automated tests. DO NOT MOVE OR DELETE!} @@ -684,9 +684,9 @@ interactions: Content-Length: ['78'] Content-MD5: [zeGiTMG1TdAobIHawzap3A==] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:38 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:13 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-type: [BlockBlob] x-ms-lease-state: [available] @@ -702,19 +702,19 @@ interactions: Content-Length: ['0'] If-Modified-Since: ['Fri, 01 Apr 2016 12:00:00 GMT'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:38 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:13 GMT'] x-ms-lease-action: [acquire] x-ms-lease-duration: ['60'] x-ms-proposed-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:38 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:13 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd] x-ms-version: ['2015-04-05'] @@ -725,10 +725,10 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:39 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:13 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: @@ -736,9 +736,9 @@ interactions: Content-Length: ['78'] Content-MD5: [zeGiTMG1TdAobIHawzap3A==] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:38 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:14 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-type: [BlockBlob] x-ms-lease-duration: [fixed] @@ -754,19 +754,19 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:39 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:13 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: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:39 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:14 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba] x-ms-version: ['2015-04-05'] @@ -778,18 +778,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:39 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:14 GMT'] x-ms-lease-action: [renew] x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:39 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:14 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba] x-ms-version: ['2015-04-05'] @@ -800,10 +800,10 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:39 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:14 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: @@ -811,9 +811,9 @@ interactions: Content-Length: ['78'] Content-MD5: [zeGiTMG1TdAobIHawzap3A==] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:39 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:14 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-type: [BlockBlob] x-ms-lease-duration: [fixed] @@ -829,18 +829,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:40 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:14 GMT'] x-ms-lease-action: [break] x-ms-lease-break-period: ['30'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:40 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:14 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-time: ['30'] x-ms-version: ['2015-04-05'] @@ -851,10 +851,10 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:40 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:14 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: @@ -862,9 +862,9 @@ interactions: Content-Length: ['78'] Content-MD5: [zeGiTMG1TdAobIHawzap3A==] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:40 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:15 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-type: [BlockBlob] x-ms-lease-state: [breaking] @@ -879,18 +879,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:40 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:14 GMT'] x-ms-lease-action: [release] x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:40 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:15 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -900,10 +900,10 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:40 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:15 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: @@ -911,9 +911,9 @@ interactions: Content-Length: ['78'] Content-MD5: [zeGiTMG1TdAobIHawzap3A==] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:40 GMT'] - ETag: ['"0x8D36FAB5CDC4F5A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:37 GMT'] + Date: ['Mon, 09 May 2016 20:56:14 GMT'] + ETag: ['"0x8D3784C5C77A0CA"'] + Last-Modified: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-type: [BlockBlob] x-ms-lease-state: [available] @@ -928,18 +928,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:40 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:15 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?comp=snapshot&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?comp=snapshot&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:40 GMT'] - ETag: ['"0x8D36FAB5C29C580"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:36 GMT'] + Date: ['Mon, 09 May 2016 20:56:15 GMT'] + ETag: ['"0x8D3784C5BFCA984"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] - x-ms-snapshot: ['2016-04-28T21:23:41.0925405Z'] + x-ms-snapshot: ['2016-05-09T20:56:18.1753599Z'] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} - request: @@ -948,19 +948,19 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:40 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:15 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?snapshot=2016-04-28T21%3A23%3A41.0925405Z&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testappendblob?snapshot=2016-05-09T20%3A56%3A18.1753599Z&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: Accept-Ranges: [bytes] Content-Length: ['156'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:23:41 GMT'] - ETag: ['"0x8D36FAB5C29C580"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:36 GMT'] + Date: ['Mon, 09 May 2016 20:56:15 GMT'] + ETag: ['"0x8D3784C5BFCA984"'] + Last-Modified: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-blob-committed-block-count: ['2'] x-ms-blob-type: [AppendBlob] @@ -974,14 +974,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:41 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:15 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:41 GMT'] + Date: ['Mon, 09 May 2016 20:56:15 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} @@ -991,14 +991,14 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:42 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:15 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01/testblockblob?sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:41 GMT'] + Date: ['Mon, 09 May 2016 20:56:14 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified blob does not exist.} @@ -1010,19 +1010,19 @@ interactions: Content-Length: ['0'] If-Modified-Since: ['Fri, 01 Apr 2016 12:00:00 GMT'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:42 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56: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: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:41 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:13 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-id: [abcdabcd-abcd-abcd-abcd-abcdabcdabcd] x-ms-version: ['2015-04-05'] @@ -1033,16 +1033,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:42 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:16 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:41 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:21 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-duration: [fixed] x-ms-lease-state: [leased] @@ -1056,19 +1056,19 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:42 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56: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: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:42 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:16 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba] x-ms-version: ['2015-04-05'] @@ -1080,18 +1080,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:42 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:16 GMT'] x-ms-lease-action: [renew] x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:42 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:17 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba] x-ms-version: ['2015-04-05'] @@ -1102,16 +1102,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:43 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:16 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:42 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:16 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-duration: [fixed] x-ms-lease-state: [leased] @@ -1125,18 +1125,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:43 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:17 GMT'] x-ms-lease-action: [break] x-ms-lease-break-period: ['30'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:43 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:17 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-time: ['30'] x-ms-version: ['2015-04-05'] @@ -1147,16 +1147,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:43 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:17 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:43 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:18 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-state: [breaking] x-ms-lease-status: [locked] @@ -1169,18 +1169,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:43 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:17 GMT'] x-ms-lease-action: [release] x-ms-lease-id: [dcbadcba-dcba-dcba-dcba-dcbadcbadcba] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&comp=lease&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:43 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:17 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -1190,16 +1190,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:43 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:17 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:43 GMT'] - ETag: ['"0x8D36FAB5B1F4635"'] - Last-Modified: ['Thu, 28 Apr 2016 21:23:34 GMT'] + Date: ['Mon, 09 May 2016 20:56:13 GMT'] + ETag: ['"0x8D3784C5952847C"'] + Last-Modified: ['Mon, 09 May 2016 20:56:10 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-lease-state: [available] x-ms-lease-status: [unlocked] @@ -1212,14 +1212,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:44 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:17 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:44 GMT'] + Date: ['Mon, 09 May 2016 20:56:16 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} @@ -1229,18 +1229,18 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:44 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:18 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: "\uFEFFContainerNotFoundThe\ - \ specified container does not exist.\nRequestId:6a3d9cf7-0001-0026-5d94-a1abc2000000\n\ - Time:2016-04-28T21:23:44.4381783Z"} + \ specified container does not exist.\nRequestId:28f6dc20-0001-008c-2335-aa7d2d000000\n\ + Time:2016-05-09T20:56:18.3819524Z"} headers: Content-Length: ['225'] Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:23:44 GMT'] + Date: ['Mon, 09 May 2016 20:56:18 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified container does not exist.} @@ -1251,14 +1251,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:23:44 GMT'] + x-ms-date: ['Mon, 09 May 2016 20:56:18 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=DXEhmXNueDPcr4tqF/lUNRO5Ol8LG24Jp%2BbKgfcf7yk%3D&srt=sco&ss=b + uri: https://travistestresourcegr3014.blob.core.windows.net/testcontainer01?restype=container&sv=2015-04-05&se=2100-01-01T00%3A00Z&sp=rwdl&sig=KTSdZfnm382nxH6/R6/TbNq7mLe%2BQ%2BXJq/HIdxft4fs%3D&ss=b&srt=sco response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:23:45 GMT'] + Date: ['Mon, 09 May 2016 20:56:18 GMT'] Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} diff --git a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_file.yaml b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_file.yaml index 52016b5dd5a..0e3fcbb09f9 100644 --- a/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_file.yaml +++ b/src/command_modules/azure-cli-storage/azure/cli/command_modules/storage/tests/recordings/test_storage_file.yaml @@ -17,21 +17,21 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR2/z - 692PHn10ffDV7OnOwfNsfu9u+2Ln23enT04ufnL/y9/r/g+eXM5/+qc///z+w2K9eLJ6s7x6kD// - fa5efHI+efPtdf5g9frB8tVPXczmVXVa/PRe9vs8mB1/9+ynn9SvVsefffbRCD3sUQ/PLrL809/7 - k4flq+m910/3jn+fs1dvvvPF7vnuk5ev6rc/sXtFGHx6OWtX65frvfze04PpT73Mp7/38fKTq+Xv - /d2nn5fr+z/14tvPf/DpvS/zq+P7X7yb/WD9iy6oh1+S/D/CxaBYxgAAAA== + 692PHn1UHpzs3l09ebEqv/qJb397uX5bffdh8eTFy2dv7r75fPLpg4v5Rf6TZ5/+Xp+8eds2Vz/1 + +eenP/GT629fNSc/9cX99uGrts32yunFT07vL48//0XtxYPm9369+3v/xGeffTRCD3vUw9VsefHJ + L7rKpp+vJ/ns04v1y2r5cvX5u53vHv/Uanl/sl7crX/q298pP335YvblefYTP3nvaVWcfveTZ5cv + P13vvyh+8tNmenF5cv9tfvbyxe9Vvnu6c//FTx5TD78k+X8A930DV8YAAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json] - Date: ['Thu, 28 Apr 2016 21:15:13 GMT'] + Date: ['Mon, 09 May 2016 21:07:33 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] Vary: [Accept-Encoding] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1196'] status: {code: 200, message: OK} - request: body: null @@ -40,18 +40,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:14 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:33 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: "\uFEFFShareNotFoundThe\ - \ specified share does not exist.\nRequestId:9fb75069-001a-013e-0193-a1c002000000\n\ - Time:2016-04-28T21:15:15.4182901Z"} + \ specified share does not exist.\nRequestId:df10fbf5-001a-0117-1836-aab640000000\n\ + Time:2016-05-09T21:07:33.4422572Z"} headers: Content-Length: ['217'] Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:15:14 GMT'] + Date: ['Mon, 09 May 2016 21:07:32 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified share does not exist.} @@ -62,18 +62,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:15 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:33 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.file.core.windows.net/testshare02?restype=share&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare02?restype=share&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: "\uFEFFShareNotFoundThe\ - \ specified share does not exist.\nRequestId:02977755-001a-00ce-6d93-a15639000000\n\ - Time:2016-04-28T21:15:15.6813839Z"} + \ specified share does not exist.\nRequestId:65fecce1-001a-005b-1a36-aa370a000000\n\ + Time:2016-05-09T21:07:36.0921839Z"} headers: Content-Length: ['217'] Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:15:14 GMT'] + Date: ['Mon, 09 May 2016 21:07:35 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified share does not exist.} @@ -84,16 +84,16 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:15 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:34 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:15 GMT'] - ETag: ['"0x8D36FAA31A47710"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:15 GMT'] + Date: ['Mon, 09 May 2016 21:07:34 GMT'] + ETag: ['"0x8D3784DF20791CB"'] + Last-Modified: ['Mon, 09 May 2016 21:07:35 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -104,18 +104,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:15 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:35 GMT'] x-ms-meta-cat: [hat] x-ms-meta-foo: [bar] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare02?restype=share&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare02?restype=share&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:15 GMT'] - ETag: ['"0x8D36FAA31CFA378"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:16 GMT'] + Date: ['Mon, 09 May 2016 21:07:33 GMT'] + ETag: ['"0x8D3784DF16AF78A"'] + Last-Modified: ['Mon, 09 May 2016 21:07:34 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -125,16 +125,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:15 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:35 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:15 GMT'] - ETag: ['"0x8D36FAA31A47710"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:15 GMT'] + Date: ['Mon, 09 May 2016 21:07:36 GMT'] + ETag: ['"0x8D3784DF20791CB"'] + Last-Modified: ['Mon, 09 May 2016 21:07:35 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-share-quota: ['5120'] x-ms-version: ['2015-04-05'] @@ -145,16 +145,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:15 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:36 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare02?restype=share&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare02?restype=share&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:16 GMT'] - ETag: ['"0x8D36FAA31CFA378"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:16 GMT'] + Date: ['Mon, 09 May 2016 21:07:35 GMT'] + ETag: ['"0x8D3784DF16AF78A"'] + Last-Modified: ['Mon, 09 May 2016 21:07:34 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-meta-cat: [hat] x-ms-meta-foo: [bar] @@ -166,21 +166,21 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:16 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:36 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/?comp=list&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/?comp=list&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: "\uFEFFtestshareTue, 26 Apr\ - \ 2016 21:20:42 GMT\"0x8D36E189FD7EB3F\"5120testshare01Thu,\ - \ 28 Apr 2016 21:15:15 GMT\"0x8D36FAA31A47710\"5120testshare02Thu,\ - \ 28 Apr 2016 21:15:16 GMT\"0x8D36FAA31CFA378\"5120\"0x8D36E189FD7EB3F\"5120testshare01Mon,\ + \ 09 May 2016 21:07:35 GMT\"0x8D3784DF20791CB\"5120testshare02Mon,\ + \ 09 May 2016 21:07:34 GMT\"0x8D3784DF16AF78A\"5120"} headers: Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:15:15 GMT'] + Date: ['Mon, 09 May 2016 21:07:36 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -191,18 +191,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:16 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:37 GMT'] x-ms-meta-a: [b] x-ms-meta-c: [d] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:17 GMT'] - ETag: ['"0x8D36FAA32708B9E"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:17 GMT'] + Date: ['Mon, 09 May 2016 21:07:37 GMT'] + ETag: ['"0x8D3784DF401DF7E"'] + Last-Modified: ['Mon, 09 May 2016 21:07:39 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -212,16 +212,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:17 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:37 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:17 GMT'] - ETag: ['"0x8D36FAA32708B9E"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:17 GMT'] + Date: ['Mon, 09 May 2016 21:07:38 GMT'] + ETag: ['"0x8D3784DF401DF7E"'] + Last-Modified: ['Mon, 09 May 2016 21:07:39 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-meta-a: [b] x-ms-meta-c: [d] @@ -234,16 +234,16 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:17 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:37 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:17 GMT'] - ETag: ['"0x8D36FAA32D1125D"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:17 GMT'] + Date: ['Mon, 09 May 2016 21:07:38 GMT'] + ETag: ['"0x8D3784DF468A47F"'] + Last-Modified: ['Mon, 09 May 2016 21:07:39 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -253,16 +253,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:17 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:38 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:17 GMT'] - ETag: ['"0x8D36FAA32D1125D"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:17 GMT'] + Date: ['Mon, 09 May 2016 21:07:38 GMT'] + ETag: ['"0x8D3784DF468A47F"'] + Last-Modified: ['Mon, 09 May 2016 21:07:39 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -273,17 +273,17 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:18 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:38 GMT'] x-ms-share-quota: ['3'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=properties&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=properties&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:18 GMT'] - ETag: ['"0x8D36FAA3321DE00"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:18 GMT'] + Date: ['Mon, 09 May 2016 21:07:36 GMT'] + ETag: ['"0x8D3784DF4B748EF"'] + Last-Modified: ['Mon, 09 May 2016 21:07:40 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -293,16 +293,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:18 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:38 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:17 GMT'] - ETag: ['"0x8D36FAA3321DE00"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:18 GMT'] + Date: ['Mon, 09 May 2016 21:07:38 GMT'] + ETag: ['"0x8D3784DF4B748EF"'] + Last-Modified: ['Mon, 09 May 2016 21:07:40 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-share-quota: ['3'] x-ms-version: ['2015-04-05'] @@ -315,17 +315,17 @@ interactions: Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] x-ms-content-length: ['78'] - x-ms-date: ['Thu, 28 Apr 2016 21:15:18 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:39 GMT'] x-ms-type: [file] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:19 GMT'] - ETag: ['"0x8D36FAA33F0F7BA"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:19 GMT'] + Date: ['Mon, 09 May 2016 21:07:38 GMT'] + ETag: ['"0x8D3784DF5BB0824"'] + Last-Modified: ['Mon, 09 May 2016 21:07:41 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -336,19 +336,19 @@ interactions: Connection: [keep-alive] Content-Length: ['78'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:19 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:39 GMT'] x-ms-range: [bytes=0-77] x-ms-version: ['2015-04-05'] x-ms-write: [update] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=range&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=range&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: Content-MD5: [zeGiTMG1TdAobIHawzap3A==] - Date: ['Thu, 28 Apr 2016 21:15:19 GMT'] - ETag: ['"0x8D36FAA340287D2"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:19 GMT'] + Date: ['Mon, 09 May 2016 21:07:38 GMT'] + ETag: ['"0x8D3784DF5C36EF4"'] + Last-Modified: ['Mon, 09 May 2016 21:07:42 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -358,18 +358,18 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:19 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:39 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: Content-Length: ['78'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:15:19 GMT'] - ETag: ['"0x8D36FAA340287D2"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:19 GMT'] + Date: ['Mon, 09 May 2016 21:07:38 GMT'] + ETag: ['"0x8D3784DF5C36EF4"'] + Last-Modified: ['Mon, 09 May 2016 21:07:42 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-type: [File] x-ms-version: ['2015-04-05'] @@ -380,11 +380,11 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:19 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:39 GMT'] x-ms-range: [bytes=None-] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: This is a test file for performance of automated tests. DO NOT MOVE OR DELETE!} @@ -392,9 +392,9 @@ interactions: Accept-Ranges: [bytes] Content-Length: ['78'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:15:19 GMT'] - ETag: ['"0x8D36FAA340287D2"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:19 GMT'] + Date: ['Mon, 09 May 2016 21:07:40 GMT'] + ETag: ['"0x8D3784DF5C36EF4"'] + Last-Modified: ['Mon, 09 May 2016 21:07:42 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-type: [File] x-ms-version: ['2015-04-05'] @@ -407,16 +407,16 @@ interactions: Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] x-ms-content-length: ['1234'] - x-ms-date: ['Thu, 28 Apr 2016 21:15:19 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:39 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=properties&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=properties&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:19 GMT'] - ETag: ['"0x8D36FAA34758780"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:20 GMT'] + Date: ['Mon, 09 May 2016 21:07:40 GMT'] + ETag: ['"0x8D3784DF61DB5CB"'] + Last-Modified: ['Mon, 09 May 2016 21:07:42 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -426,18 +426,18 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:20 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:39 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: Content-Length: ['1234'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:15:19 GMT'] - ETag: ['"0x8D36FAA34758780"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:20 GMT'] + Date: ['Mon, 09 May 2016 21:07:39 GMT'] + ETag: ['"0x8D3784DF61DB5CB"'] + Last-Modified: ['Mon, 09 May 2016 21:07:42 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-type: [File] x-ms-version: ['2015-04-05'] @@ -449,18 +449,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:20 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:40 GMT'] x-ms-meta-a: [b] x-ms-meta-c: [d] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:19 GMT'] - ETag: ['"0x8D36FAA34D0DB3A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:21 GMT'] + Date: ['Mon, 09 May 2016 21:07:41 GMT'] + ETag: ['"0x8D3784DF65D8F5F"'] + Last-Modified: ['Mon, 09 May 2016 21:07:43 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -470,16 +470,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:20 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:40 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:21 GMT'] - ETag: ['"0x8D36FAA34D0DB3A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:21 GMT'] + Date: ['Mon, 09 May 2016 21:07:40 GMT'] + ETag: ['"0x8D3784DF65D8F5F"'] + Last-Modified: ['Mon, 09 May 2016 21:07:43 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-meta-a: [b] x-ms-meta-c: [d] @@ -492,16 +492,16 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:20 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:40 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:20 GMT'] - ETag: ['"0x8D36FAA351EE58C"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:21 GMT'] + Date: ['Mon, 09 May 2016 21:07:40 GMT'] + ETag: ['"0x8D3784DF6AB2874"'] + Last-Modified: ['Mon, 09 May 2016 21:07:43 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -511,16 +511,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:21 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:40 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:20 GMT'] - ETag: ['"0x8D36FAA351EE58C"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:21 GMT'] + Date: ['Mon, 09 May 2016 21:07:41 GMT'] + ETag: ['"0x8D3784DF6AB2874"'] + Last-Modified: ['Mon, 09 May 2016 21:07:43 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -530,10 +530,10 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:21 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:41 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=directory&comp=list&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=directory&comp=list&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: "\uFEFF"} headers: Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:15:21 GMT'] + Date: ['Mon, 09 May 2016 21:07:42 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -552,14 +552,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:21 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:41 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:20 GMT'] + Date: ['Mon, 09 May 2016 21:07:41 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} @@ -569,14 +569,14 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:21 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:41 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:22 GMT'] + Date: ['Mon, 09 May 2016 21:07:41 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified resource does not exist.} @@ -587,16 +587,16 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:21 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:42 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:21 GMT'] - ETag: ['"0x8D36FAA35CCB16B"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:22 GMT'] + Date: ['Mon, 09 May 2016 21:07:39 GMT'] + ETag: ['"0x8D3784DF78D1412"'] + Last-Modified: ['Mon, 09 May 2016 21:07:45 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -606,16 +606,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:22 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:42 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:22 GMT'] - ETag: ['"0x8D36FAA35CCB16B"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:22 GMT'] + Date: ['Mon, 09 May 2016 21:07:42 GMT'] + ETag: ['"0x8D3784DF78D1412"'] + Last-Modified: ['Mon, 09 May 2016 21:07:45 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -626,18 +626,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:22 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:42 GMT'] x-ms-meta-a: [b] x-ms-meta-c: [d] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:21 GMT'] - ETag: ['"0x8D36FAA362B130F"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:23 GMT'] + Date: ['Mon, 09 May 2016 21:07:41 GMT'] + ETag: ['"0x8D3784DF7E781EE"'] + Last-Modified: ['Mon, 09 May 2016 21:07:45 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -647,16 +647,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:22 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:42 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:22 GMT'] - ETag: ['"0x8D36FAA362B130F"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:23 GMT'] + Date: ['Mon, 09 May 2016 21:07:42 GMT'] + ETag: ['"0x8D3784DF7E781EE"'] + Last-Modified: ['Mon, 09 May 2016 21:07:45 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-meta-a: [b] x-ms-meta-c: [d] @@ -668,16 +668,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:23 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:43 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:23 GMT'] - ETag: ['"0x8D36FAA362B130F"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:23 GMT'] + Date: ['Mon, 09 May 2016 21:07:41 GMT'] + ETag: ['"0x8D3784DF7E781EE"'] + Last-Modified: ['Mon, 09 May 2016 21:07:45 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-meta-a: [b] x-ms-meta-c: [d] @@ -690,16 +690,16 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:23 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:43 GMT'] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:23 GMT'] - ETag: ['"0x8D36FAA36A0D27A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:24 GMT'] + Date: ['Mon, 09 May 2016 21:07:42 GMT'] + ETag: ['"0x8D3784DF8607CB6"'] + Last-Modified: ['Mon, 09 May 2016 21:07:46 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -709,16 +709,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:23 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:43 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:23 GMT'] - ETag: ['"0x8D36FAA36A0D27A"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:24 GMT'] + Date: ['Mon, 09 May 2016 21:07:45 GMT'] + ETag: ['"0x8D3784DF8607CB6"'] + Last-Modified: ['Mon, 09 May 2016 21:07:46 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -730,17 +730,17 @@ interactions: Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] x-ms-content-length: ['78'] - x-ms-date: ['Thu, 28 Apr 2016 21:15:23 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:43 GMT'] x-ms-type: [file] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:22 GMT'] - ETag: ['"0x8D36FAA36F71C07"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:24 GMT'] + Date: ['Mon, 09 May 2016 21:07:43 GMT'] + ETag: ['"0x8D3784DF8A1DD7C"'] + Last-Modified: ['Mon, 09 May 2016 21:07:46 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -751,19 +751,19 @@ interactions: Connection: [keep-alive] Content-Length: ['78'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:24 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:44 GMT'] x-ms-range: [bytes=0-77] x-ms-version: ['2015-04-05'] x-ms-write: [update] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?comp=range&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?comp=range&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: Content-MD5: [zeGiTMG1TdAobIHawzap3A==] - Date: ['Thu, 28 Apr 2016 21:15:23 GMT'] - ETag: ['"0x8D36FAA3703058E"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:24 GMT'] + Date: ['Mon, 09 May 2016 21:07:43 GMT'] + ETag: ['"0x8D3784DF8A9F608"'] + Last-Modified: ['Mon, 09 May 2016 21:07:46 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -773,18 +773,18 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:24 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:44 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: Content-Length: ['78'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:15:23 GMT'] - ETag: ['"0x8D36FAA3703058E"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:24 GMT'] + Date: ['Mon, 09 May 2016 21:07:43 GMT'] + ETag: ['"0x8D3784DF8A9F608"'] + Last-Modified: ['Mon, 09 May 2016 21:07:46 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-type: [File] x-ms-version: ['2015-04-05'] @@ -795,11 +795,11 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:24 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:44 GMT'] x-ms-range: [bytes=None-] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: This is a test file for performance of automated tests. DO NOT MOVE OR DELETE!} @@ -807,9 +807,9 @@ interactions: Accept-Ranges: [bytes] Content-Length: ['78'] Content-Type: [application/octet-stream] - Date: ['Thu, 28 Apr 2016 21:15:24 GMT'] - ETag: ['"0x8D36FAA3703058E"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:24 GMT'] + Date: ['Mon, 09 May 2016 21:07:43 GMT'] + ETag: ['"0x8D3784DF8A9F608"'] + Last-Modified: ['Mon, 09 May 2016 21:07:46 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-type: [File] x-ms-version: ['2015-04-05'] @@ -820,10 +820,10 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:24 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:44 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=list&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&comp=list&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: "\uFEFF"} headers: Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:15:23 GMT'] + Date: ['Mon, 09 May 2016 21:07:43 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -841,15 +841,15 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:24 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:44 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=stats&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&comp=stats&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: "\uFEFF1"} headers: Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:15:24 GMT'] + Date: ['Mon, 09 May 2016 21:07:45 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -860,14 +860,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:25 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:45 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:23 GMT'] + Date: ['Mon, 09 May 2016 21:07:44 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} @@ -877,14 +877,14 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:25 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:45 GMT'] x-ms-version: ['2015-04-05'] method: HEAD - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testfile.rst?se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:26 GMT'] + Date: ['Mon, 09 May 2016 21:07:44 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified resource does not exist.} @@ -895,14 +895,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:25 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:45 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:25 GMT'] + Date: ['Mon, 09 May 2016 21:07:44 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} @@ -912,18 +912,18 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:25 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:45 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir01?restype=directory&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: "\uFEFFResourceNotFoundThe\ - \ specified resource does not exist.\nRequestId:18203a7c-001a-0038-2f93-a1712f000000\n\ - Time:2016-04-28T21:15:26.6200828Z"} + \ specified resource does not exist.\nRequestId:ae580052-001a-0068-4336-aa6e27000000\n\ + Time:2016-05-09T21:07:46.6647214Z"} headers: Content-Length: ['223'] Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:15:25 GMT'] + Date: ['Mon, 09 May 2016 21:07:46 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 404, message: The specified resource does not exist.} @@ -934,18 +934,18 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:26 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:46 GMT'] x-ms-meta-cat: [hat] x-ms-meta-foo: [bar] x-ms-version: ['2015-04-05'] method: PUT - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir02?restype=directory&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir02?restype=directory&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:25 GMT'] - ETag: ['"0x8D36FAA3837F9DA"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:26 GMT'] + Date: ['Mon, 09 May 2016 21:07:45 GMT'] + ETag: ['"0x8D3784DFA085FC6"'] + Last-Modified: ['Mon, 09 May 2016 21:07:49 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 201, message: Created} @@ -955,16 +955,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:26 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:46 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir02?restype=directory&comp=metadata&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir02?restype=directory&comp=metadata&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:25 GMT'] - ETag: ['"0x8D36FAA3837F9DA"'] - Last-Modified: ['Thu, 28 Apr 2016 21:15:26 GMT'] + Date: ['Mon, 09 May 2016 21:07:43 GMT'] + ETag: ['"0x8D3784DFA085FC6"'] + Last-Modified: ['Mon, 09 May 2016 21:07:49 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-meta-cat: [hat] x-ms-meta-foo: [bar] @@ -977,14 +977,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:26 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:46 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir02?restype=directory&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01/testdir02?restype=directory&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:27 GMT'] + Date: ['Mon, 09 May 2016 21:07:47 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} @@ -994,16 +994,16 @@ interactions: Accept-Encoding: [identity] Connection: [keep-alive] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:26 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:46 GMT'] x-ms-version: ['2015-04-05'] method: GET - uri: https://travistestresourcegr3014.file.core.windows.net/?restype=service&comp=properties&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/?restype=service&comp=properties&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: "\uFEFF1.0truetruetrue71.0falsefalse"} headers: Content-Type: [application/xml] - Date: ['Thu, 28 Apr 2016 21:15:26 GMT'] + Date: ['Mon, 09 May 2016 21:07:47 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 200, message: OK} @@ -1014,14 +1014,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:27 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:47 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare01?restype=share&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:27 GMT'] + Date: ['Mon, 09 May 2016 21:07:46 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} @@ -1032,14 +1032,14 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] User-Agent: [Azure-Storage/0.30.0 (Python CPython 3.5.1; Windows 10)] - x-ms-date: ['Thu, 28 Apr 2016 21:15:27 GMT'] + x-ms-date: ['Mon, 09 May 2016 21:07:47 GMT'] x-ms-version: ['2015-04-05'] method: DELETE - uri: https://travistestresourcegr3014.file.core.windows.net/testshare02?restype=share&sp=rwdl&ss=f&sv=2015-04-05&sig=Xq2hIKVSq18%2B5BVj7dxxr7J30UNYNmRDrJ4dw6cAb14%3D&se=2100-01-01T00%3A00Z&srt=sco + uri: https://travistestresourcegr3014.file.core.windows.net/testshare02?restype=share&se=2100-01-01T00%3A00Z&sv=2015-04-05&sp=rwdl&sig=h7weM2OkkPfMrhyzvuc3ptegqLXPdBClOI2bQR9BApg%3D&srt=sco&ss=f response: body: {string: ''} headers: - Date: ['Thu, 28 Apr 2016 21:15:27 GMT'] + Date: ['Mon, 09 May 2016 21:07:47 GMT'] Server: [Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0] x-ms-version: ['2015-04-05'] status: {code: 202, message: Accepted} diff --git a/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/__init__.py b/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/__init__.py index 35db0f485be..c4578d074f0 100644 --- a/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/__init__.py +++ b/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/__init__.py @@ -1,22 +1,2 @@ -from __future__ import print_function -from azure.cli.commands import CommandTable -from azure.cli._locale import L - -command_table = CommandTable() - -@command_table.command('taskhelp deploy-arm-template') -@command_table.description(L('How to deploy and ARM template using Azure CLI.')) -def deploy_template_help(args): #pylint: disable=unused-argument - print(L(""" -*********************** -ARM Template Deployment -*********************** - -Could this be helpful? Let us know! -==================================== - -1. First Step -2. Second Step - -And you're done! -""")) +# pylint: disable=unused-import +from .generated import command_table diff --git a/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/custom.py b/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/custom.py new file mode 100644 index 00000000000..dd335959ede --- /dev/null +++ b/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/custom.py @@ -0,0 +1,24 @@ +# pylint: disable=no-self-use,too-few-public-methods +from __future__ import print_function +from azure.cli._locale import L + +class TaskHelpCommands(object): + + def __init__(self, **_): + pass + + def deploy_arm_template(self): + '''How to deploy an ARM template using Azure CLI.''' + print(L(""" +*********************** +ARM Template Deployment +*********************** + +Could this be helpful? Let us know! +==================================== + +1. First Step +2. Second Step + +And you're done! + """)) diff --git a/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/generated.py b/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/generated.py new file mode 100644 index 00000000000..049b5ec43ea --- /dev/null +++ b/src/command_modules/azure-cli-taskhelp/azure/cli/command_modules/taskhelp/generated.py @@ -0,0 +1,14 @@ +from __future__ import print_function + +from azure.cli.commands import CommandTable +from azure.cli.commands._auto_command import build_operation, CommandDefinition + +from .custom import TaskHelpCommands + +command_table = CommandTable() + +build_operation( + 'taskhelp', None, TaskHelpCommands, + [ + CommandDefinition(TaskHelpCommands.deploy_arm_template, 'Help'), + ], command_table) diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/__init__.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/__init__.py index 69553b3401f..c4578d074f0 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/__init__.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/__init__.py @@ -1,5 +1,2 @@ -from .generated import command_table as generated_command_table -from .custom import command_table as convenience_command_table - -command_table = generated_command_table -command_table.update(convenience_command_table) +# pylint: disable=unused-import +from .generated import command_table diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_actions.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_actions.py new file mode 100644 index 00000000000..dbf87166015 --- /dev/null +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_actions.py @@ -0,0 +1,131 @@ +import argparse +import json +import os +import re + +from azure.cli._util import CLIError + +from six.moves.urllib.request import urlopen #pylint: disable=import-error + +from ._factory import _compute_client_factory + +class VMImageFieldAction(argparse.Action): #pylint: disable=too-few-public-methods + def __call__(self, parser, namespace, values, option_string=None): + image = values + match = re.match('([^:]*):([^:]*):([^:]*):([^:]*)', image) + + if image.lower().endswith('.vhd'): + namespace.os_disk_uri = image + elif match: + namespace.os_type = 'Custom' + namespace.os_publisher = match.group(1) + namespace.os_offer = match.group(2) + namespace.os_sku = match.group(3) + namespace.os_version = match.group(4) + else: + images = load_images_from_aliases_doc(None, None, None) + matched = next((x for x in images if x['urn alias'].lower() == image.lower()), None) + if matched is None: + raise CLIError('Invalid image "{}". Please pick one from {}'.format( + image, [x['urn alias'] for x in images])) + namespace.os_type = 'Custom' + namespace.os_publisher = matched['publisher'] + namespace.os_offer = matched['offer'] + namespace.os_sku = matched['sku'] + namespace.os_version = matched['version'] + +class VMSSHFieldAction(argparse.Action): #pylint: disable=too-few-public-methods + def __call__(self, parser, namespace, values, option_string=None): + ssh_value = values + + if os.path.exists(ssh_value): + with open(ssh_value, 'r') as f: + namespace.ssh_key_value = f.read() + else: + namespace.ssh_key_value = ssh_value + +class VMDNSNameAction(argparse.Action): #pylint: disable=too-few-public-methods + def __call__(self, parser, namespace, values, option_string=None): + dns_value = values + + if dns_value: + namespace.dns_name_type = 'new' + + namespace.dns_name_for_public_ip = dns_value + +def load_images_from_aliases_doc(publisher, offer, sku): + target_url = ('https://raw.githubusercontent.com/Azure/azure-rest-api-specs/' + 'master/arm-compute/quickstart-templates/aliases.json') + txt = urlopen(target_url).read() + dic = json.loads(txt.decode()) + try: + all_images = [] + result = (dic['outputs']['aliases']['value']) + for v in result.values(): #loop around os + for alias, vv in v.items(): #loop around distros + all_images.append({ + 'urn alias': alias, + 'publisher': vv['publisher'], + 'offer': vv['offer'], + 'sku': vv['sku'], + 'version': vv['version'] + }) + + all_images = [i for i in all_images if (_partial_matched(publisher, i['publisher']) and + _partial_matched(offer, i['offer']) and + _partial_matched(sku, i['sku']))] + return all_images + except KeyError: + raise CLIError('Could not retrieve image list from {}'.format(target_url)) + +def load_images_thru_services(publisher, offer, sku, location): + from concurrent.futures import ThreadPoolExecutor, as_completed + + all_images = [] + client = _compute_client_factory() + + def _load_images_from_publisher(publisher): + offers = client.virtual_machine_images.list_offers(location, publisher) + if offer: + offers = [o for o in offers if _partial_matched(offer, o.name)] + for o in offers: + skus = client.virtual_machine_images.list_skus(location, publisher, o.name) + if sku: + skus = [s for s in skus if _partial_matched(sku, s.name)] + for s in skus: + images = client.virtual_machine_images.list(location, publisher, o.name, s.name) + for i in images: + all_images.append({ + 'publisher': publisher, + 'offer': o.name, + 'sku': s.name, + 'version': i.name}) + + publishers = client.virtual_machine_images.list_publishers(location) + if publisher: + publishers = [p for p in publishers if _partial_matched(publisher, p.name)] + + publisher_num = len(publishers) + if publisher_num > 1: + with ThreadPoolExecutor(max_workers=40) as executor: + tasks = [executor.submit(_load_images_from_publisher, p.name) for p in publishers] + for t in as_completed(tasks): + t.result() # don't use the result but expose exceptions from the threads + elif publisher_num == 1: + _load_images_from_publisher(publishers[0].name) + + return all_images + +def _partial_matched(pattern, string): + if not pattern: + return True # empty pattern means wildcard-match + pattern = r'.*' + pattern + return re.match(pattern, string, re.I) + +def _create_image_instance(publisher, offer, sku, version): + return { + 'publisher': publisher, + 'offer': offer, + 'sku': sku, + 'version': version + } diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_factory.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_factory.py new file mode 100644 index 00000000000..ac2dc431983 --- /dev/null +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_factory.py @@ -0,0 +1,5 @@ +from azure.cli.commands._command_creation import get_mgmt_service_client +from azure.mgmt.compute import ComputeManagementClient, ComputeManagementClientConfiguration + +def _compute_client_factory(**_): + return get_mgmt_service_client(ComputeManagementClient, ComputeManagementClientConfiguration) diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_help.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_help.py new file mode 100644 index 00000000000..643ba78ffb6 --- /dev/null +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_help.py @@ -0,0 +1,37 @@ +from azure.cli._help_files import helps + +helps['vm create'] = """ + type: command + short-summary: Create an Azure Virtual Machine + long-summary: See https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-quick-create-cli/ for an end-to-end tutorial + parameters: + - name: --image + type: string + short-summary: OS image (Common, URN or URI). + long-summary: | + Common OS types: Win2012R2Datacenter, Win2012Datacenter, Win2008SP1. For other values please run 'az vm image list' + Example URN: MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest + Example URI: http://.blob.core.windows.net/vhds/osdiskimage.vhd + populator-commands: + - az vm image list + - az vm image show + - name: --ssh-key-value + short-summary: SSH key file value or key file path. + examples: + - name: Create a simple Windows Server VM with private IP address + text: > + az vm create --image Win2012R2Datacenter --admin-username myadmin --admin-password Admin_001 + -l "West US" -g myvms --name myvm001 + - name: Create a simple Windows Server VM with public IP address and DNS entry + text: > + az vm create --image Win2012R2Datacenter --admin-username myadmin --admin-password Admin_001 + -l "West US" -g myvms --name myvm001 --public-ip-address-type new --dns-name-for-public-ip myGloballyUniqueVmDnsName + - name: Create a Linux VM with SSH key authentication, add a public DNS entry and add to an existing Virtual Network and Availability Set. + text: > + az vm create --image + --admin-username myadmin --admin-password Admin_001 --authentication-type sshkey + --virtual-network-type existing --virtual-network-name myvnet --subnet-name default + --availability-set-type existing --availability-set-id myavailset + --public-ip-address-type new --dns-name-for-public-ip myGloballyUniqueVmDnsName + -l "West US" -g myvms --name myvm18o --ssh-key-value "" + """ diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_params.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_params.py index 4c040826850..7111c3a0518 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_params.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_params.py @@ -1,37 +1,102 @@ +import argparse + from azure.mgmt.compute.models import VirtualHardDisk -from azure.cli.commands import (COMMON_PARAMETERS as GLOBAL_COMMON_PARAMETERS, extend_parameter) -from azure.cli._locale import L +from azure.cli.commands import (COMMON_PARAMETERS as GLOBAL_COMMON_PARAMETERS, extend_parameter, + patch_aliases) from azure.cli.command_modules.vm._validators import MinMaxValue +from azure.cli.command_modules.vm._actions import (VMImageFieldAction, VMSSHFieldAction, + VMDNSNameAction) +from azure.cli._locale import L -PARAMETER_ALIASES = GLOBAL_COMMON_PARAMETERS.copy() -PARAMETER_ALIASES.update({ +# BASIC PARAMETER CONFIGURATION + +PARAMETER_ALIASES = patch_aliases(GLOBAL_COMMON_PARAMETERS, { 'diskname': { 'name': '--name -n', - 'dest': 'name', 'help': L('Disk name'), - 'required': True }, 'disksize': { 'name': '--disksize', - 'dest': 'disksize', 'help': L('Size of disk (Gb)'), 'type': MinMaxValue(1, 1023), 'default': 1023 }, + 'image_location': { + 'name': '--image-location', + 'help': L('Image location') + }, 'lun': { 'name': '--lun', - 'dest': 'lun', 'help': L('0-based logical unit number (LUN). Max value depends on the Virtual ' + \ 'Machine size'), 'type': int, - 'required': True }, - 'optional_resource_group_name': - extend_parameter(GLOBAL_COMMON_PARAMETERS['resource_group_name'], required=False), 'vhd': { 'name': '--vhd', - 'required': True, 'type': VirtualHardDisk }, + 'vm_name': { + 'name': '--vm-name', + 'dest': 'vm_name', + 'help': 'Name of Virtual Machine to update', + } }) + +VM_CREATE_PARAMETER_ALIASES = { + 'name': { + 'name': '--name -n' + }, + 'os_disk_uri': { + 'name': '--os-disk-uri', + 'help': argparse.SUPPRESS + }, + 'os_offer': { + 'name': '--os_offer', + 'help': argparse.SUPPRESS + }, + 'os_publisher': { + 'name': '--os-publisher', + 'help': argparse.SUPPRESS + }, + 'os_sku': { + 'name': '--os-sku', + 'help': argparse.SUPPRESS + }, + 'os_type': { + 'name': '--os-type', + 'help': argparse.SUPPRESS + }, + 'os_version': { + 'name': '--os-version', + 'help': argparse.SUPPRESS + }, +} + +# EXTRA PARAMETER SETS + +VM_CREATE_EXTRA_PARAMETERS = { + 'image': { + 'name': '--image', + 'action': VMImageFieldAction + }, + 'ssh_key_value': { + 'name': '--ssh-key-value', + 'action': VMSSHFieldAction + }, + 'dns_name_for_public_ip': { + 'name': '--dns-name-for-public-ip', + 'action': VMDNSNameAction + }, + 'dns_name_type': { + 'name': '--dns-name-type', + 'help': argparse.SUPPRESS + } +} + +VM_PATCH_EXTRA_PARAMETERS = { + 'resource_group_name': + extend_parameter(PARAMETER_ALIASES['resource_group_name'], required=True), + 'vm_name': + extend_parameter(PARAMETER_ALIASES['vm_name'], required=True) +} diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/custom.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/custom.py index 9a34e269d50..607d00ede8d 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/custom.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/custom.py @@ -1,198 +1,40 @@ -import json +# pylint: disable=no-self-use,too-many-arguments import re -from six.moves.urllib.request import urlopen #pylint: disable=import-error - from azure.mgmt.compute.models import DataDisk from azure.mgmt.compute.models.compute_management_client_enums import DiskCreateOptionTypes -from azure.cli._locale import L -from azure.cli.commands import CommandTable, LongRunningOperation, RESOURCE_GROUP_ARG_NAME +from azure.cli.commands import CommandTable, LongRunningOperation from azure.cli.commands._command_creation import get_mgmt_service_client from azure.cli._util import CLIError -from azure.mgmt.compute import ComputeManagementClient, ComputeManagementClientConfiguration -from ._params import PARAMETER_ALIASES +from ._actions import load_images_from_aliases_doc, load_images_thru_services +from ._factory import _compute_client_factory -def _compute_client_factory(_): - return get_mgmt_service_client(ComputeManagementClient, ComputeManagementClientConfiguration) +from six.moves.urllib.request import urlopen #pylint: disable=import-error,unused-import command_table = CommandTable() -def vm_getter(args): - ''' Retreive a VM based on the `args` passed in. - ''' - client = _compute_client_factory(args) - result = client.virtual_machines.get(args.get(RESOURCE_GROUP_ARG_NAME), args.get('vm_name')) +def _vm_get(**kwargs): + '''Retrieves a VM if a resource group and vm name are supplied.''' + vm_name = kwargs.get('vm_name') + resource_group_name = kwargs.get('resource_group_name') + result = None + if resource_group_name and vm_name: + client = _compute_client_factory() + result = client.virtual_machines.get(resource_group_name, vm_name) return result -def vm_setter(args, instance, start_msg, end_msg): - '''Update the given Virtual Machine instance - ''' +def _vm_set(instance, start_msg, end_msg): + '''Update the given Virtual Machine instance''' instance.resources = None # Issue: https://github.com/Azure/autorest/issues/934 - client = _compute_client_factory(args) + client = _compute_client_factory() + parsed_id = _parse_rg_name(instance.id) poller = client.virtual_machines.create_or_update( - resource_group_name=args.get(RESOURCE_GROUP_ARG_NAME), - vm_name=args.get('vm_name'), + resource_group_name=parsed_id[0], + vm_name=parsed_id[1], parameters=instance) return LongRunningOperation(start_msg, end_msg)(poller) -def patches_vm(start_msg, finish_msg): - '''Decorator indicating that the decorated function modifies an existing Virtual Machine - in Azure. - It automatically adds arguments required to identify the Virtual Machine to be patched and - handles the actual put call to the compute service, leaving the decorated function to only - have to worry about the modifications it has to do. - ''' - def wrapped(func): - def invoke(args): - instance = vm_getter(args) - func(args, instance) - vm_setter(args, instance, start_msg, finish_msg) - - # All Virtual Machines are identified with a resource group name/name pair, so - # we add these parameters to all commands - command_table[invoke]['arguments'].append(PARAMETER_ALIASES['resource_group_name']) - command_table[invoke]['arguments'].append({ - 'name': '--vm-name -n', - 'dest': 'vm_name', - 'help': 'Name of Virtual Machine to update', - 'required': True - }) - return invoke - return wrapped - -@command_table.command('vm list', description=L('List Virtual Machines.')) -@command_table.option(**PARAMETER_ALIASES['optional_resource_group_name']) -def list_vm(args): - ccf = _compute_client_factory(args) - group = args.get(RESOURCE_GROUP_ARG_NAME) - vm_list = ccf.virtual_machines.list(resource_group_name=group) if group else \ - ccf.virtual_machines.list_all() - return list(vm_list) - -@command_table.command('vm disk attach-new', - help=L('Attach a new disk to an existing Virtual Machine')) -@command_table.option(**PARAMETER_ALIASES['lun']) -@command_table.option(**PARAMETER_ALIASES['diskname']) -@command_table.option(**PARAMETER_ALIASES['disksize']) -@command_table.option(**PARAMETER_ALIASES['vhd']) -@patches_vm('Attaching disk', 'Disk attached') -def _vm_disk_attach_new(args, instance): - disk = DataDisk(lun=args.get('lun'), - vhd=args.get('vhd'), - name=args.get('name'), - create_option=DiskCreateOptionTypes.empty, - disk_size_gb=args.get('disksize')) - instance.storage_profile.data_disks.append(disk) - -@command_table.command('vm disk attach-existing', - help=L('Attach an existing disk to an existing Virtual Machine')) -@command_table.option(**PARAMETER_ALIASES['lun']) -@command_table.option(**PARAMETER_ALIASES['diskname']) -@command_table.option(**PARAMETER_ALIASES['disksize']) -@command_table.option(**PARAMETER_ALIASES['vhd']) -@patches_vm('Attaching disk', 'Disk attached') -def _vm_disk_attach_existing(args, instance): - # TODO: figure out size of existing disk instead of making the default value 1023 - disk = DataDisk(lun=args.get('lun'), - vhd=args.get('vhd'), - name=args.get('name'), - create_option=DiskCreateOptionTypes.attach, - disk_size_gb=args.get('disksize')) - instance.storage_profile.data_disks.append(disk) - -@command_table.command('vm disk detach') -@command_table.option(**PARAMETER_ALIASES['diskname']) -@patches_vm('Detaching disk', 'Disk detached') -def _vm_disk_detach(args, instance): - instance.resources = None # Issue: https://github.com/Azure/autorest/issues/934 - try: - disk = next(d for d in instance.storage_profile.data_disks - if d.name == args.get('name')) - instance.storage_profile.data_disks.remove(disk) - except StopIteration: - raise CLIError("No disk with the name '%s' found" % args.get('name')) - - -def load_images_from_aliases_doc(publisher, offer, sku): - target_url = ('https://raw.githubusercontent.com/Azure/azure-rest-api-specs/' - 'master/arm-compute/quickstart-templates/aliases.json') - txt = urlopen(target_url).read() - dic = json.loads(txt.decode()) - try: - all_images = [] - result = (dic['outputs']['aliases']['value']) - for v in result.values(): #loop around os - for alias, vv in v.items(): #loop around distros - all_images.append({ - 'urn alias': alias, - 'publisher': vv['publisher'], - 'offer': vv['offer'], - 'sku': vv['sku'], - 'version': vv['version'] - }) - - all_images = [i for i in all_images if (_partial_matched(publisher, i['publisher']) and - _partial_matched(offer, i['offer']) and - _partial_matched(sku, i['sku']))] - return all_images - except KeyError: - raise CLIError('Could not retrieve image list from {}'.format(target_url)) - -def _load_images_thru_services(publisher, offer, sku, location): - from concurrent.futures import ThreadPoolExecutor, as_completed - - client = _compute_client_factory({}) - all_images = [] - - def _load_images_from_publisher(publisher): - offers = client.virtual_machine_images.list_offers(location, publisher) - if offer: - offers = [o for o in offers if _partial_matched(offer, o.name)] - for o in offers: - skus = client.virtual_machine_images.list_skus(location, publisher, o.name) - if sku: - skus = [s for s in skus if _partial_matched(sku, s.name)] - for s in skus: - images = client.virtual_machine_images.list(location, publisher, o.name, s.name) - for i in images: - all_images.append({ - 'publisher': publisher, - 'offer': o.name, - 'sku': s.name, - 'version': i.name}) - - publishers = client.virtual_machine_images.list_publishers(location) - if publisher: - publishers = [p for p in publishers if _partial_matched(publisher, p.name)] - - publisher_num = len(publishers) - if publisher_num > 1: - with ThreadPoolExecutor(max_workers=40) as executor: - tasks = [executor.submit(_load_images_from_publisher, p.name) for p in publishers] - for t in as_completed(tasks): - t.result() #we don't use the result, rather just to expose exceptions from threads - elif publisher_num == 1: - _load_images_from_publisher(publishers[0].name) - - return all_images - -def _partial_matched(pattern, string): - if not pattern: - return True # empty pattern means wildcard-match - pattern = r'.*' + pattern - return re.match(pattern, string, re.I) - -def _create_image_instance(publisher, offer, sku, version): - return { - 'publisher': publisher, - 'offer': offer, - 'sku': sku, - 'version': version - } -# -# Composite convenience commands for the CLI -# def _parse_rg_name(strid): '''From an ID, extract the contained (resource group, name) tuple ''' @@ -202,21 +44,21 @@ def _parse_rg_name(strid): return (parts[4], parts[8]) - class ConvenienceVmCommands(object): # pylint: disable=too-few-public-methods - def __init__(self, _): - pass + def __init__(self, **kwargs): + self.vm = _vm_get(**kwargs) + + def list(self, resource_group_name): + ''' List Virtual Machines. ''' + ccf = _compute_client_factory() + vm_list = ccf.virtual_machines.list(resource_group_name=resource_group_name) \ + if resource_group_name else ccf.virtual_machines.list_all() + return list(vm_list) - # pylint: disable=no-self-use,too-many-arguments - def list_vm_images(self, - image_location=None, - publisher=None, - offer=None, - sku=None, - all=False): #pylint: disable=redefined-builtin + def list_vm_images(self, image_location=None, publisher=None, offer=None, sku=None, all=False): # pylint: disable=redefined-builtin '''vm image list - :param str location:Image location + :param str image_location:Image location :param str publisher:Image publisher name :param str offer:Image offer name :param str sku:Image sku name @@ -227,10 +69,10 @@ def list_vm_images(self, raise CLIError('Argument of --location/-l is required to use with --all flag') if load_thru_services: - all_images = _load_images_thru_services(publisher, - offer, - sku, - image_location) + all_images = load_images_thru_services(publisher, + offer, + sku, + image_location) else: all_images = load_images_from_aliases_doc(publisher, offer, sku) @@ -239,9 +81,7 @@ def list_vm_images(self, return all_images - def list_ip_addresses(self, - resource_group_name=None, - vm_name=None): + def list_ip_addresses(self, resource_group_name=None, vm_name=None): ''' Get IP addresses from one or more Virtual Machines :param str resource_group_name:Name of resource group. :param str vm_name:Name of virtual machine. @@ -295,4 +135,30 @@ def list_ip_addresses(self, return result - + def attach_new_disk(self, lun, diskname, vhd, disksize=1023): + ''' Attach a new disk to an existing Virtual Machine''' + disk = DataDisk(lun=lun, vhd=vhd, name=diskname, + create_option=DiskCreateOptionTypes.empty, + disk_size_gb=disksize) + self.vm.storage_profile.data_disks.append(disk) # pylint: disable=no-member + _vm_set(self.vm, 'Attaching disk', 'Disk attached') + + def attach_existing_disk(self, lun, diskname, vhd, disksize=1023): + ''' Attach an existing disk to an existing Virtual Machine ''' + # TODO: figure out size of existing disk instead of making the default value 1023 + disk = DataDisk(lun=lun, vhd=vhd, name=diskname, + create_option=DiskCreateOptionTypes.attach, + disk_size_gb=disksize) + self.vm.storage_profile.data_disks.append(disk) # pylint: disable=no-member + _vm_set(self.vm, 'Attaching disk', 'Disk attached') + + def detach_disk(self, diskname): + ''' Detach a disk from a Virtual Machine ''' + # Issue: https://github.com/Azure/autorest/issues/934 + self.vm.resources = None + try: + disk = next(d for d in self.vm.storage_profile.data_disks if d.name == diskname) # pylint: disable=no-member + self.vm.storage_profile.data_disks.remove(disk) # pylint: disable=no-member + except StopIteration: + raise CLIError("No disk with the name '{}' found".format(diskname)) + _vm_set(self.vm, 'Detaching disk', 'Disk detached') diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/generated.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/generated.py index 8a981ddb13c..f8a08e15796 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/generated.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/generated.py @@ -1,6 +1,3 @@ -import argparse -import re -import os from azure.mgmt.compute.operations import (AvailabilitySetsOperations, VirtualMachineExtensionImagesOperations, VirtualMachineExtensionsOperations, @@ -10,311 +7,163 @@ VirtualMachinesOperations, VirtualMachineScaleSetsOperations, VirtualMachineScaleSetVMsOperations) -from azure.cli.commands._auto_command import build_operation, AutoCommandDefinition -from azure.cli.commands import CommandTable, LongRunningOperation + +from azure.cli.commands._auto_command import build_operation, CommandDefinition from azure.cli.commands._command_creation import get_mgmt_service_client -from azure.cli._locale import L +from azure.cli.commands import CommandTable, LongRunningOperation, patch_aliases from azure.cli.command_modules.vm.mgmt.lib import (VMCreationClient as VMClient, VMCreationClientConfiguration as VMClientConfig) from azure.cli.command_modules.vm.mgmt.lib.operations import VMOperations -from azure.cli._help_files import helps -from azure.cli._util import CLIError +from azure.cli._locale import L -from ._params import PARAMETER_ALIASES -from .custom import (ConvenienceVmCommands, - _compute_client_factory, - load_images_from_aliases_doc) +from ._params import (PARAMETER_ALIASES, VM_CREATE_EXTRA_PARAMETERS, VM_CREATE_PARAMETER_ALIASES, + VM_PATCH_EXTRA_PARAMETERS) +from ._factory import _compute_client_factory +from .custom import ConvenienceVmCommands command_table = CommandTable() -def _patch_aliases(alias_items): - aliases = PARAMETER_ALIASES.copy() - aliases.update(alias_items) - return aliases - # pylint: disable=line-too-long -build_operation("vm availset", - "availability_sets", - _compute_client_factory, - [ - AutoCommandDefinition(AvailabilitySetsOperations.delete, None), - AutoCommandDefinition(AvailabilitySetsOperations.get, 'AvailabilitySet', command_alias='show'), - AutoCommandDefinition(AvailabilitySetsOperations.list, '[AvailabilitySet]'), - AutoCommandDefinition(AvailabilitySetsOperations.list_available_sizes, '[VirtualMachineSize]', 'list-sizes') - ], - command_table, - _patch_aliases({ - 'availability_set_name': {'name': '--name -n'} - })) - -build_operation("vm machine-extension-image", - "virtual_machine_extension_images", - _compute_client_factory, - [ - AutoCommandDefinition(VirtualMachineExtensionImagesOperations.get, 'VirtualMachineExtensionImage', command_alias='show'), - AutoCommandDefinition(VirtualMachineExtensionImagesOperations.list_types, '[VirtualMachineImageResource]'), - AutoCommandDefinition(VirtualMachineExtensionImagesOperations.list_versions, '[VirtualMachineImageResource]'), - ], - command_table, PARAMETER_ALIASES) - -build_operation("vm extension", - "virtual_machine_extensions", - _compute_client_factory, - [ - AutoCommandDefinition(VirtualMachineExtensionsOperations.delete, LongRunningOperation(L('Deleting VM extension'), L('VM extension deleted'))), - AutoCommandDefinition(VirtualMachineExtensionsOperations.get, 'VirtualMachineExtension', command_alias='show'), - ], - command_table, - _patch_aliases({ - 'vm_extension_name': {'name': '--name -n'} - })) - -build_operation("vm image", - "virtual_machine_images", - _compute_client_factory, - [ - AutoCommandDefinition(VirtualMachineImagesOperations.get, 'VirtualMachineImage', command_alias='show'), - AutoCommandDefinition(VirtualMachineImagesOperations.list_offers, '[VirtualMachineImageResource]'), - AutoCommandDefinition(VirtualMachineImagesOperations.list_publishers, '[VirtualMachineImageResource]'), - AutoCommandDefinition(VirtualMachineImagesOperations.list_skus, '[VirtualMachineImageResource]'), - ], - command_table, PARAMETER_ALIASES) - -build_operation("vm usage", - "usage", - _compute_client_factory, - [ - AutoCommandDefinition(UsageOperations.list, '[Usage]'), - ], - command_table, PARAMETER_ALIASES) - -build_operation("vm size", - "virtual_machine_sizes", - _compute_client_factory, - [ - AutoCommandDefinition(VirtualMachineSizesOperations.list, '[VirtualMachineSize]'), - ], - command_table, PARAMETER_ALIASES) - -build_operation("vm", - "virtual_machines", - _compute_client_factory, - [ - AutoCommandDefinition(VirtualMachinesOperations.delete, LongRunningOperation(L('Deleting VM'), L('VM Deleted'))), - AutoCommandDefinition(VirtualMachinesOperations.deallocate, LongRunningOperation(L('Deallocating VM'), L('VM Deallocated'))), - AutoCommandDefinition(VirtualMachinesOperations.generalize, None), - AutoCommandDefinition(VirtualMachinesOperations.get, 'VirtualMachine', command_alias='show'), - AutoCommandDefinition(VirtualMachinesOperations.list_available_sizes, '[VirtualMachineSize]', 'list-sizes'), - AutoCommandDefinition(VirtualMachinesOperations.power_off, LongRunningOperation(L('Powering off VM'), L('VM powered off'))), - AutoCommandDefinition(VirtualMachinesOperations.restart, LongRunningOperation(L('Restarting VM'), L('VM Restarted'))), - AutoCommandDefinition(VirtualMachinesOperations.start, LongRunningOperation(L('Starting VM'), L('VM Started'))), - ], - command_table, - _patch_aliases({ - 'vm_name': {'name': '--name -n'} - })) - -build_operation("vm scaleset", - "virtual_machine_scale_sets", - _compute_client_factory, - [ - AutoCommandDefinition(VirtualMachineScaleSetsOperations.deallocate, LongRunningOperation(L('Deallocating VM scale set'), L('VM scale set deallocated'))), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.delete, LongRunningOperation(L('Deleting VM scale set'), L('VM scale set deleted'))), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.get, 'VirtualMachineScaleSet', command_alias='show'), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.delete_instances, LongRunningOperation(L('Deleting VM scale set instances'), L('VM scale set instances deleted'))), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.get_instance_view, 'VirtualMachineScaleSetInstanceView'), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.list, '[VirtualMachineScaleSet]'), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.list_all, '[VirtualMachineScaleSet]'), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.list_skus, '[VirtualMachineScaleSet]'), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.power_off, LongRunningOperation(L('Powering off VM scale set'), L('VM scale set powered off'))), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.restart, LongRunningOperation(L('Restarting VM scale set'), L('VM scale set restarted'))), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.start, LongRunningOperation(L('Starting VM scale set'), L('VM scale set started'))), - AutoCommandDefinition(VirtualMachineScaleSetsOperations.update_instances, LongRunningOperation(L('Updating VM scale set instances'), L('VM scale set instances updated'))), - ], - command_table, - _patch_aliases({ - 'vm_scale_set_name': {'name': '--name -n'} - })) - -build_operation("vm scaleset-vm", - "virtual_machine_scale_set_vms", - _compute_client_factory, - [ - AutoCommandDefinition(VirtualMachineScaleSetVMsOperations.deallocate, LongRunningOperation(L('Deallocating VM scale set VMs'), L('VM scale set VMs deallocated'))), - AutoCommandDefinition(VirtualMachineScaleSetVMsOperations.delete, LongRunningOperation(L('Deleting VM scale set VMs'), L('VM scale set VMs deleted'))), - AutoCommandDefinition(VirtualMachineScaleSetVMsOperations.get, 'VirtualMachineScaleSetVM', command_alias='show'), - AutoCommandDefinition(VirtualMachineScaleSetVMsOperations.get_instance_view, 'VirtualMachineScaleSetVMInstanceView'), - AutoCommandDefinition(VirtualMachineScaleSetVMsOperations.list, '[VirtualMachineScaleSetVM]'), - AutoCommandDefinition(VirtualMachineScaleSetVMsOperations.power_off, LongRunningOperation(L('Powering off VM scale set VMs'), L('VM scale set VMs powered off'))), - AutoCommandDefinition(VirtualMachineScaleSetVMsOperations.restart, LongRunningOperation(L('Restarting VM scale set VMs'), L('VM scale set VMs restarted'))), - AutoCommandDefinition(VirtualMachineScaleSetVMsOperations.start, LongRunningOperation(L('Starting VM scale set VMs'), L('VM scale set VMs started'))), - ], - command_table, - _patch_aliases({ - 'vm_scale_set_name': {'name': '--name -n'} - })) - -build_operation("vm", - None, - ConvenienceVmCommands, - [ - AutoCommandDefinition(ConvenienceVmCommands.list_ip_addresses, 'object'), - ], - command_table, PARAMETER_ALIASES) - -vm_param_aliases = { - 'name': { - 'name': '--name -n' - }, - 'os_disk_uri': { - 'name': '--os-disk-uri', - 'help': argparse.SUPPRESS - }, - 'os_offer': { - 'name': '--os_offer', - 'help': argparse.SUPPRESS - }, - 'os_publisher': { - 'name': '--os-publisher', - 'help': argparse.SUPPRESS - }, - 'os_sku': { - 'name': '--os-sku', - 'help': argparse.SUPPRESS - }, - 'os_type': { - 'name': '--os-type', - 'help': argparse.SUPPRESS - }, - 'os_version': { - 'name': '--os-version', - 'help': argparse.SUPPRESS - }, - } - -class VMImageFieldAction(argparse.Action): #pylint: disable=too-few-public-methods - def __call__(self, parser, namespace, values, option_string=None): - image = values - match = re.match('([^:]*):([^:]*):([^:]*):([^:]*)', image) - - if image.lower().endswith('.vhd'): - namespace.os_disk_uri = image - elif match: - namespace.os_type = 'Custom' - namespace.os_publisher = match.group(1) - namespace.os_offer = match.group(2) - namespace.os_sku = match.group(3) - namespace.os_version = match.group(4) - else: - images = load_images_from_aliases_doc(None, None, None) - matched = next((x for x in images if x['urn alias'].lower() == image.lower()), None) - if matched is None: - raise CLIError('Invalid image "{}". Please pick one from {}'.format(image, - [x['urn alias'] for x in images])) - namespace.os_type = 'Custom' - namespace.os_publisher = matched['publisher'] - namespace.os_offer = matched['offer'] - namespace.os_sku = matched['sku'] - namespace.os_version = matched['version'] - - -class VMSSHFieldAction(argparse.Action): #pylint: disable=too-few-public-methods - def __call__(self, parser, namespace, values, option_string=None): - ssh_value = values - - if os.path.exists(ssh_value): - with open(ssh_value, 'r') as f: - namespace.ssh_key_value = f.read() - else: - namespace.ssh_key_value = ssh_value - -class VMDNSNameAction(argparse.Action): #pylint: disable=too-few-public-methods - def __call__(self, parser, namespace, values, option_string=None): - dns_value = values - - if dns_value: - namespace.dns_name_type = 'new' - - namespace.dns_name_for_public_ip = dns_value - -extra_parameters = [ - { - 'name': '--image', - 'action': VMImageFieldAction - }, - { - 'name': '--ssh-key-value', - 'action': VMSSHFieldAction - }, - { - 'name': '--dns-name-for-public-ip', - 'action': VMDNSNameAction - }, - { - 'name': '--dns-name-type', - 'help': argparse.SUPPRESS - } - ] - -helps['vm create'] = """ - type: command - short-summary: Create an Azure Virtual Machine - long-summary: See https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-quick-create-cli/ for an end-to-end tutorial - parameters: - - name: --image - type: string - required: false - short-summary: OS image (Common, URN or URI). - long-summary: | - Common OS types: Win2012R2Datacenter, Win2012Datacenter, Win2008SP1. For other values please run 'az vm image list'. - Example URN: MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest - Example URI: http://.blob.core.windows.net/vhds/osdiskimage.vhd - populator-commands: - - az vm image list - - az vm image show - - name: --ssh-key-value - short-summary: SSH key file value or key file path. - examples: - - name: Create a simple Windows Server VM with private IP address - text: > - az vm create --image Win2012R2Datacenter --admin-username myadmin --admin-password Admin_001 - -l "West US" -g myvms --name myvm001 - - name: Create a simple Windows Server VM with public IP address and DNS entry - text: > - az vm create --image Win2012R2Datacenter --admin-username myadmin --admin-password Admin_001 - -l "West US" -g myvms --name myvm001 --public-ip-address-type new --dns-name-for-public-ip myGloballyUniqueVmDnsName - - name: Create a Linux VM with SSH key authentication, add a public DNS entry and add to an existing Virtual Network and Availability Set. - text: > - az vm create --image - --admin-username myadmin --admin-password Admin_001 --authentication-type sshkey - --virtual-network-type existing --virtual-network-name myvnet --subnet-name default - --availability-set-type existing --availability-set-id myavailset - --public-ip-address-type new --dns-name-for-public-ip myGloballyUniqueVmDnsName - -l "West US" -g myvms --name myvm18o --ssh-key-value "" - """ - -build_operation('vm', - 'vm', - lambda _: get_mgmt_service_client(VMClient, VMClientConfig), - [ - AutoCommandDefinition(VMOperations.create_or_update, - LongRunningOperation(L('Creating virtual machine'), L('Virtual machine created')), - 'create') - ], - command_table, - vm_param_aliases, - extra_parameters) - -build_operation("vm image", - None, - ConvenienceVmCommands, - [ - AutoCommandDefinition(ConvenienceVmCommands.list_vm_images, 'object', 'list') - ], - command_table, - _patch_aliases({ - #get rid of the alias with work on https://www.pivotaltracker.com/projects/1535539/stories/118884633 - 'image_location' : {'name': '--location -l', 'help': 'Image location'} - })) - +build_operation( + 'vm availset', 'availability_sets', _compute_client_factory, + [ + CommandDefinition(AvailabilitySetsOperations.delete, None), + CommandDefinition(AvailabilitySetsOperations.get, 'AvailabilitySet', command_alias='show'), + CommandDefinition(AvailabilitySetsOperations.list, '[AvailabilitySet]'), + CommandDefinition(AvailabilitySetsOperations.list_available_sizes, '[VirtualMachineSize]', 'list-sizes') + ], + command_table, patch_aliases(PARAMETER_ALIASES, { + 'availability_set_name': {'name': '--name -n'} + })) + +build_operation( + 'vm machine-extension-image', 'virtual_machine_extension_images', _compute_client_factory, + [ + CommandDefinition(VirtualMachineExtensionImagesOperations.get, 'VirtualMachineExtensionImage', command_alias='show'), + CommandDefinition(VirtualMachineExtensionImagesOperations.list_types, '[VirtualMachineImageResource]'), + CommandDefinition(VirtualMachineExtensionImagesOperations.list_versions, '[VirtualMachineImageResource]'), + ], + command_table, PARAMETER_ALIASES) + +build_operation( + 'vm disk', None, ConvenienceVmCommands, + [ + CommandDefinition(ConvenienceVmCommands.attach_new_disk, 'Object', 'attach-new'), + CommandDefinition(ConvenienceVmCommands.attach_existing_disk, 'Object', 'attach-existing'), + CommandDefinition(ConvenienceVmCommands.detach_disk, 'Object', 'detach'), + ], + command_table, PARAMETER_ALIASES, VM_PATCH_EXTRA_PARAMETERS) + +build_operation( + 'vm extension', 'virtual_machine_extensions', _compute_client_factory, + [ + CommandDefinition(VirtualMachineExtensionsOperations.delete, LongRunningOperation(L('Deleting VM extension'), L('VM extension deleted'))), + CommandDefinition(VirtualMachineExtensionsOperations.get, 'VirtualMachineExtension', command_alias='show'), + ], + command_table, patch_aliases(PARAMETER_ALIASES, { + 'vm_extension_name': {'name': '--name -n'} + })) + +build_operation( + 'vm image', 'virtual_machine_images', _compute_client_factory, + [ + CommandDefinition(VirtualMachineImagesOperations.get, 'VirtualMachineImage', command_alias='show'), + CommandDefinition(VirtualMachineImagesOperations.list_offers, '[VirtualMachineImageResource]'), + CommandDefinition(VirtualMachineImagesOperations.list_publishers, '[VirtualMachineImageResource]'), + CommandDefinition(VirtualMachineImagesOperations.list_skus, '[VirtualMachineImageResource]'), + ], + command_table, PARAMETER_ALIASES) + +build_operation( + 'vm usage', 'usage', _compute_client_factory, + [ + CommandDefinition(UsageOperations.list, '[Usage]'), + ], + command_table, PARAMETER_ALIASES) + +build_operation( + 'vm size', 'virtual_machine_sizes', _compute_client_factory, + [ + CommandDefinition(VirtualMachineSizesOperations.list, '[VirtualMachineSize]'), + ], + command_table, PARAMETER_ALIASES) + +build_operation( + 'vm', 'virtual_machines', _compute_client_factory, + [ + CommandDefinition(VirtualMachinesOperations.delete, LongRunningOperation(L('Deleting VM'), L('VM Deleted'))), + CommandDefinition(VirtualMachinesOperations.deallocate, LongRunningOperation(L('Deallocating VM'), L('VM Deallocated'))), + CommandDefinition(VirtualMachinesOperations.generalize, None), + CommandDefinition(VirtualMachinesOperations.get, 'VirtualMachine', command_alias='show'), + CommandDefinition(VirtualMachinesOperations.list_available_sizes, '[VirtualMachineSize]', 'list-sizes'), + CommandDefinition(VirtualMachinesOperations.power_off, LongRunningOperation(L('Powering off VM'), L('VM powered off'))), + CommandDefinition(VirtualMachinesOperations.restart, LongRunningOperation(L('Restarting VM'), L('VM Restarted'))), + CommandDefinition(VirtualMachinesOperations.start, LongRunningOperation(L('Starting VM'), L('VM Started'))), + ], + command_table, patch_aliases(PARAMETER_ALIASES, { + 'vm_name': {'name': '--name -n'} + })) + +build_operation( + 'vm', None, ConvenienceVmCommands, + [ + CommandDefinition(ConvenienceVmCommands.list_ip_addresses, 'object'), + CommandDefinition(ConvenienceVmCommands.list, '[VirtualMachine]') + ], + command_table, PARAMETER_ALIASES) + +build_operation( + 'vm', 'vm', lambda **_: get_mgmt_service_client(VMClient, VMClientConfig), + [ + CommandDefinition( + VMOperations.create_or_update, + LongRunningOperation(L('Creating virtual machine'), L('Virtual machine created')), + 'create') + ], + command_table, VM_CREATE_PARAMETER_ALIASES, VM_CREATE_EXTRA_PARAMETERS) + +build_operation( + 'vm scaleset', 'virtual_machine_scale_sets', _compute_client_factory, + [ + CommandDefinition(VirtualMachineScaleSetsOperations.deallocate, LongRunningOperation(L('Deallocating VM scale set'), L('VM scale set deallocated'))), + CommandDefinition(VirtualMachineScaleSetsOperations.delete, LongRunningOperation(L('Deleting VM scale set'), L('VM scale set deleted'))), + CommandDefinition(VirtualMachineScaleSetsOperations.get, 'VirtualMachineScaleSet', command_alias='show'), + CommandDefinition(VirtualMachineScaleSetsOperations.delete_instances, LongRunningOperation(L('Deleting VM scale set instances'), L('VM scale set instances deleted'))), + CommandDefinition(VirtualMachineScaleSetsOperations.get_instance_view, 'VirtualMachineScaleSetInstanceView'), + CommandDefinition(VirtualMachineScaleSetsOperations.list, '[VirtualMachineScaleSet]'), + CommandDefinition(VirtualMachineScaleSetsOperations.list_all, '[VirtualMachineScaleSet]'), + CommandDefinition(VirtualMachineScaleSetsOperations.list_skus, '[VirtualMachineScaleSet]'), + CommandDefinition(VirtualMachineScaleSetsOperations.power_off, LongRunningOperation(L('Powering off VM scale set'), L('VM scale set powered off'))), + CommandDefinition(VirtualMachineScaleSetsOperations.restart, LongRunningOperation(L('Restarting VM scale set'), L('VM scale set restarted'))), + CommandDefinition(VirtualMachineScaleSetsOperations.start, LongRunningOperation(L('Starting VM scale set'), L('VM scale set started'))), + CommandDefinition(VirtualMachineScaleSetsOperations.update_instances, LongRunningOperation(L('Updating VM scale set instances'), L('VM scale set instances updated'))), + ], + command_table, patch_aliases(PARAMETER_ALIASES, { + 'vm_scale_set_name': {'name': '--name -n'} + })) + +build_operation( + 'vm scaleset-vm', 'virtual_machine_scale_set_vms', _compute_client_factory, + [ + CommandDefinition(VirtualMachineScaleSetVMsOperations.deallocate, LongRunningOperation(L('Deallocating VM scale set VMs'), L('VM scale set VMs deallocated'))), + CommandDefinition(VirtualMachineScaleSetVMsOperations.delete, LongRunningOperation(L('Deleting VM scale set VMs'), L('VM scale set VMs deleted'))), + CommandDefinition(VirtualMachineScaleSetVMsOperations.get, 'VirtualMachineScaleSetVM', command_alias='show'), + CommandDefinition(VirtualMachineScaleSetVMsOperations.get_instance_view, 'VirtualMachineScaleSetVMInstanceView'), + CommandDefinition(VirtualMachineScaleSetVMsOperations.list, '[VirtualMachineScaleSetVM]'), + CommandDefinition(VirtualMachineScaleSetVMsOperations.power_off, LongRunningOperation(L('Powering off VM scale set VMs'), L('VM scale set VMs powered off'))), + CommandDefinition(VirtualMachineScaleSetVMsOperations.restart, LongRunningOperation(L('Restarting VM scale set VMs'), L('VM scale set VMs restarted'))), + CommandDefinition(VirtualMachineScaleSetVMsOperations.start, LongRunningOperation(L('Starting VM scale set VMs'), L('VM scale set VMs started'))), + ], + command_table, patch_aliases(PARAMETER_ALIASES, { + 'vm_scale_set_name': {'name': '--name -n'} + })) + +build_operation( + 'vm image', None, ConvenienceVmCommands, + [ + CommandDefinition(ConvenienceVmCommands.list_vm_images, 'object', 'list') + ], + command_table, patch_aliases(PARAMETER_ALIASES, { + 'image_location': {'name': '--location -l'} + })) diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/mgmt/lib/operations/vm_operations.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/mgmt/lib/operations/vm_operations.py index 28ea73bc4c7..a58991ad96d 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/mgmt/lib/operations/vm_operations.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/mgmt/lib/operations/vm_operations.py @@ -13,7 +13,6 @@ from .. import models - class VMOperations(object): """VMOperations operations. diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/__init__.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/__init__.py index 139597f9cb0..e69de29bb2d 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/__init__.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/__init__.py @@ -1,2 +0,0 @@ - - diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/expected_results.res b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/expected_results.res index 7b74dae3128..da429901926 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/expected_results.res +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/expected_results.res @@ -8,9 +8,9 @@ "test_vm_images_list_by_aliases": "", "test_vm_images_list_thru_services": "", "test_vm_list_from_group": "Availability Set : None\nId : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/XPLATTESTGEXTENSION9085/providers/Microsoft.Compute/virtualMachines/xplatvmExt1314\nInstance View : None\nLicense Type : None\nLocation : southeastasia\nName : xplatvmExt1314\nPlan : None\nProvisioning State : Succeeded\nResource Group : XPLATTESTGEXTENSION9085\nResources : None\nType : Microsoft.Compute/virtualMachines\nDiagnostics Profile :\n Boot Diagnostics :\n Enabled : True\n Storage Uri : https://xplatstoragext4633.blob.core.windows.net/\nHardware Profile :\n Vm Size : Standard_A1\nNetwork Profile :\n Network Interfaces :\n Id : /subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/xplatTestGExtension9085/providers/Microsoft.Network/networkInterfaces/xplatnicExt4843\n Primary : None\n Resource Group : xplatTestGExtension9085\nOs Profile :\n Admin Password : None\n Admin Username : azureuser\n Computer Name : xplatvmExt1314\n Custom Data : None\n Linux Configuration : None\n Secrets :\n None\n Windows Configuration :\n Additional Unattend Content : None\n Enable Automatic Updates : True\n Provision Vm Agent : True\n Time Zone : None\n Win Rm : None\nStorage Profile :\n Data Disks :\n None\n Image Reference :\n Offer : WindowsServerEssentials\n Publisher : MicrosoftWindowsServerEssentials\n Sku : WindowsServerEssentials\n Version : 1.0.20131018\n Os Disk :\n Caching : ReadWrite\n Create Option : fromImage\n Disk Size Gb : None\n Encryption Settings : None\n Image : None\n Name : cli1eaed78b36def353-os-1453419539945\n Os Type : Windows\n Vhd :\n Uri : https://xplatstoragext4633.blob.core.windows.net/xplatstoragecntext1789/cli1eaed78b36def353-os-1453419539945.vhd\nTags :\n None\n\n\n", - "test_vm_list_ip_addresses": "[\n {\n \"virtualMachine\": {\n \"name\": \"vm-with-public-ip\",\n \"network\": {\n \"privateIpAddresses\": [\n \"10.0.0.4\"\n ],\n \"publicIpAddresses\": [\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Network/publicIPAddresses/PublicIPvm-with-public-ip\",\n \"ipAddress\": \"13.93.155.206\",\n \"ipAllocationMethod\": \"Dynamic\",\n \"name\": \"PublicIPvm-with-public-ip\",\n \"resourceGroup\": \"cliTestRg_VmListIpAddresses\"\n }\n ]\n },\n \"resourceGroup\": \"cliTestRg_VmListIpAddresses\"\n }\n }\n]", + "test_vm_list_ip_addresses": "[\n {\n \"virtualMachine\": {\n \"name\": \"vm-with-public-ip\",\n \"network\": {\n \"privateIpAddresses\": [\n \"10.0.0.4\"\n ],\n \"publicIpAddresses\": [\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Network/publicIPAddresses/PublicIPvm-with-public-ip\",\n \"ipAddress\": \"13.91.103.89\",\n \"ipAllocationMethod\": \"Dynamic\",\n \"name\": \"PublicIPvm-with-public-ip\",\n \"resourceGroup\": \"cliTestRg_VmListIpAddresses\"\n }\n ]\n },\n \"resourceGroup\": \"cliTestRg_VmListIpAddresses\"\n }\n }\n]", "test_vm_list_sizes": "[\n {\n \"maxDataDiskCount\": 1,\n \"memoryInMb\": 768,\n \"name\": \"Standard_A0\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 20480\n },\n {\n \"maxDataDiskCount\": 2,\n \"memoryInMb\": 1792,\n \"name\": \"Standard_A1\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 71680\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 3584,\n \"name\": \"Standard_A2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 138240\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 7168,\n \"name\": \"Standard_A3\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 291840\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_A5\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 138240\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_A4\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 619520\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_A6\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 291840\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_A7\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 619520\n },\n {\n \"maxDataDiskCount\": 1,\n \"memoryInMb\": 768,\n \"name\": \"Basic_A0\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 20480\n },\n {\n \"maxDataDiskCount\": 2,\n \"memoryInMb\": 1792,\n \"name\": \"Basic_A1\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 40960\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 3584,\n \"name\": \"Basic_A2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 61440\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 7168,\n \"name\": \"Basic_A3\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 122880\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 14336,\n \"name\": \"Basic_A4\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 245760\n },\n {\n \"maxDataDiskCount\": 2,\n \"memoryInMb\": 3584,\n \"name\": \"Standard_D1_v2\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 51200\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 7168,\n \"name\": \"Standard_D2_v2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 102400\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_D3_v2\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 204800\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_D4_v2\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 409600\n },\n {\n \"maxDataDiskCount\": 32,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_D5_v2\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 819200\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_D11_v2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 102400\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_D12_v2\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 204800\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_D13_v2\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 409600\n },\n {\n \"maxDataDiskCount\": 32,\n \"memoryInMb\": 114688,\n \"name\": \"Standard_D14_v2\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 819200\n },\n {\n \"maxDataDiskCount\": 40,\n \"memoryInMb\": 143360,\n \"name\": \"Standard_D15_v2\",\n \"numberOfCores\": 20,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 286720\n }\n]", "test_vm_show": "{\n \"availabilitySet\": null,\n \"diagnosticsProfile\": null,\n \"hardwareProfile\": {\n \"vmSize\": \"Standard_A2\"\n },\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmShow/providers/Microsoft.Compute/virtualMachines/vm-show\",\n \"instanceView\": {\n \"bootDiagnostics\": null,\n \"disks\": [\n {\n \"name\": \"osdiskvm-show\",\n \"statuses\": [\n {\n \"code\": \"ProvisioningState/succeeded\",\n \"displayStatus\": \"Provisioning succeeded\",\n \"level\": \"Info\",\n \"message\": null,\n \"time\": \"2016-05-10T00:20:10.570837+00:00\"\n }\n ]\n }\n ],\n \"extensions\": null,\n \"platformFaultDomain\": null,\n \"platformUpdateDomain\": null,\n \"rdpThumbPrint\": null,\n \"statuses\": [\n {\n \"code\": \"ProvisioningState/succeeded\",\n \"displayStatus\": \"Provisioning succeeded\",\n \"level\": \"Info\",\n \"message\": null,\n \"time\": \"2016-05-10T00:21:40.056358+00:00\"\n },\n {\n \"code\": \"PowerState/running\",\n \"displayStatus\": \"VM running\",\n \"level\": \"Info\",\n \"message\": null,\n \"time\": null\n }\n ],\n \"vmAgent\": {\n \"extensionHandlers\": [],\n \"statuses\": [\n {\n \"code\": \"ProvisioningState/succeeded\",\n \"displayStatus\": \"Ready\",\n \"level\": \"Info\",\n \"message\": \"GuestAgent is running and accepting new configurations.\",\n \"time\": \"2016-05-10T00:21:38+00:00\"\n }\n ],\n \"vmAgentVersion\": \"WALinuxAgent-2.0.14\"\n }\n },\n \"licenseType\": null,\n \"location\": \"westus\",\n \"name\": \"vm-show\",\n \"networkProfile\": {\n \"networkInterfaces\": [\n {\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmShow/providers/Microsoft.Network/networkInterfaces/VMNicvm-show\",\n \"primary\": null,\n \"resourceGroup\": \"cliTestRg_VmShow\"\n }\n ]\n },\n \"osProfile\": {\n \"adminPassword\": null,\n \"adminUsername\": \"ubuntu\",\n \"computerName\": \"vm-show\",\n \"customData\": null,\n \"linuxConfiguration\": {\n \"disablePasswordAuthentication\": false,\n \"ssh\": null\n },\n \"secrets\": [],\n \"windowsConfiguration\": null\n },\n \"plan\": null,\n \"provisioningState\": \"Succeeded\",\n \"resourceGroup\": \"cliTestRg_VmShow\",\n \"resources\": null,\n \"storageProfile\": {\n \"dataDisks\": [],\n \"imageReference\": {\n \"offer\": \"UbuntuServer\",\n \"publisher\": \"Canonical\",\n \"sku\": \"14.04.4-LTS\",\n \"version\": \"latest\"\n },\n \"osDisk\": {\n \"caching\": \"ReadWrite\",\n \"createOption\": \"fromImage\",\n \"diskSizeGb\": null,\n \"encryptionSettings\": null,\n \"image\": null,\n \"name\": \"osdiskvm-show\",\n \"osType\": \"Linux\",\n \"vhd\": {\n \"uri\": \"http://vhdstorageu47fs25lwwgcm.blob.core.windows.net/vhds/osdiskimage.vhd\"\n }\n }\n },\n \"tags\": {\n \"displayName\": \"VirtualMachine\"\n },\n \"type\": \"Microsoft.Compute/virtualMachines\"\n}", "test_vm_size_list": "[\n {\n \"maxDataDiskCount\": 1,\n \"memoryInMb\": 768,\n \"name\": \"Standard_A0\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 20480\n },\n {\n \"maxDataDiskCount\": 2,\n \"memoryInMb\": 1792,\n \"name\": \"Standard_A1\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 71680\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 3584,\n \"name\": \"Standard_A2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 138240\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 7168,\n \"name\": \"Standard_A3\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 291840\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_A5\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 138240\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_A4\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 619520\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_A6\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 291840\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_A7\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 619520\n },\n {\n \"maxDataDiskCount\": 1,\n \"memoryInMb\": 768,\n \"name\": \"Basic_A0\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 20480\n },\n {\n \"maxDataDiskCount\": 2,\n \"memoryInMb\": 1792,\n \"name\": \"Basic_A1\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 40960\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 3584,\n \"name\": \"Basic_A2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 61440\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 7168,\n \"name\": \"Basic_A3\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 122880\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 14336,\n \"name\": \"Basic_A4\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 245760\n },\n {\n \"maxDataDiskCount\": 2,\n \"memoryInMb\": 3584,\n \"name\": \"Standard_D1_v2\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 51200\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 7168,\n \"name\": \"Standard_D2_v2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 102400\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_D3_v2\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 204800\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_D4_v2\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 409600\n },\n {\n \"maxDataDiskCount\": 32,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_D5_v2\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 819200\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_D11_v2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 102400\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_D12_v2\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 204800\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_D13_v2\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 409600\n },\n {\n \"maxDataDiskCount\": 32,\n \"memoryInMb\": 114688,\n \"name\": \"Standard_D14_v2\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 819200\n },\n {\n \"maxDataDiskCount\": 40,\n \"memoryInMb\": 143360,\n \"name\": \"Standard_D15_v2\",\n \"numberOfCores\": 20,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 286720\n },\n {\n \"maxDataDiskCount\": 2,\n \"memoryInMb\": 3584,\n \"name\": \"Standard_DS1\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 7168\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 7168,\n \"name\": \"Standard_DS2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 14336\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_DS3\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 28672\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_DS4\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 57344\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_DS11\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 28672\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_DS12\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 57344\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_DS13\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 114688\n },\n {\n \"maxDataDiskCount\": 32,\n \"memoryInMb\": 114688,\n \"name\": \"Standard_DS14\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 229376\n },\n {\n \"maxDataDiskCount\": 2,\n \"memoryInMb\": 3584,\n \"name\": \"Standard_D1\",\n \"numberOfCores\": 1,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 51200\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 7168,\n \"name\": \"Standard_D2\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 102400\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_D3\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 204800\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_D4\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 409600\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 14336,\n \"name\": \"Standard_D11\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 102400\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_D12\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 204800\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_D13\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 409600\n },\n {\n \"maxDataDiskCount\": 32,\n \"memoryInMb\": 114688,\n \"name\": \"Standard_D14\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 819200\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_G1\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 393216\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_G2\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 786432\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 114688,\n \"name\": \"Standard_G3\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 1572864\n },\n {\n \"maxDataDiskCount\": 32,\n \"memoryInMb\": 229376,\n \"name\": \"Standard_G4\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 3145728\n },\n {\n \"maxDataDiskCount\": 64,\n \"memoryInMb\": 458752,\n \"name\": \"Standard_G5\",\n \"numberOfCores\": 32,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 6291456\n },\n {\n \"maxDataDiskCount\": 4,\n \"memoryInMb\": 28672,\n \"name\": \"Standard_GS1\",\n \"numberOfCores\": 2,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 57344\n },\n {\n \"maxDataDiskCount\": 8,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_GS2\",\n \"numberOfCores\": 4,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 114688\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 114688,\n \"name\": \"Standard_GS3\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 229376\n },\n {\n \"maxDataDiskCount\": 32,\n \"memoryInMb\": 229376,\n \"name\": \"Standard_GS4\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 458752\n },\n {\n \"maxDataDiskCount\": 64,\n \"memoryInMb\": 458752,\n \"name\": \"Standard_GS5\",\n \"numberOfCores\": 32,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 917504\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_A8\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 391168\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 114688,\n \"name\": \"Standard_A9\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 391168\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 57344,\n \"name\": \"Standard_A10\",\n \"numberOfCores\": 8,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 391168\n },\n {\n \"maxDataDiskCount\": 16,\n \"memoryInMb\": 114688,\n \"name\": \"Standard_A11\",\n \"numberOfCores\": 16,\n \"osDiskSizeInMb\": 1047552,\n \"resourceDiskSizeInMb\": 391168\n }\n]", - "test_vm_usage_list_westus": "[\n {\n \"currentValue\": 0,\n \"limit\": 2000,\n \"name\": {\n \"localizedValue\": \"Availability Sets\",\n \"value\": \"availabilitySets\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 7,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Total Regional Cores\",\n \"value\": \"cores\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 5,\n \"limit\": 10000,\n \"name\": {\n \"localizedValue\": \"Virtual Machines\",\n \"value\": \"virtualMachines\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 50,\n \"name\": {\n \"localizedValue\": \"Virtual Machine Scale Sets\",\n \"value\": \"virtualMachineScaleSets\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 1,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Standard D Family Cores\",\n \"value\": \"standardDFamily\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 6,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Standard A0-A7 Family Cores\",\n \"value\": \"standardA0_A7Family\"\n },\n \"unit\": \"Count\"\n }\n]\n" + "test_vm_usage_list_westus": "[\n {\n \"currentValue\": 2,\n \"limit\": 2000,\n \"name\": {\n \"localizedValue\": \"Availability Sets\",\n \"value\": \"availabilitySets\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 43,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Total Regional Cores\",\n \"value\": \"cores\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 24,\n \"limit\": 10000,\n \"name\": {\n \"localizedValue\": \"Virtual Machines\",\n \"value\": \"virtualMachines\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 0,\n \"limit\": 50,\n \"name\": {\n \"localizedValue\": \"Virtual Machine Scale Sets\",\n \"value\": \"virtualMachineScaleSets\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 1,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Standard D Family Cores\",\n \"value\": \"standardDFamily\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 40,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Standard A0-A7 Family Cores\",\n \"value\": \"standardA0_A7Family\"\n },\n \"unit\": \"Count\"\n },\n {\n \"currentValue\": 2,\n \"limit\": 100,\n \"name\": {\n \"localizedValue\": \"Basic A Family Cores\",\n \"value\": \"basicAFamily\"\n },\n \"unit\": \"Count\"\n }\n]\n" } \ No newline at end of file diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_images_list_by_aliases.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_images_list_by_aliases.yaml index 0add9636c13..c5dbe5a1243 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_images_list_by_aliases.yaml +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_images_list_by_aliases.yaml @@ -52,9 +52,9 @@ interactions: Content-Length: ['2297'] Content-Security-Policy: [default-src 'none'; style-src 'unsafe-inline'] Content-Type: [text/plain; charset=utf-8] - Date: ['Fri, 06 May 2016 23:13:25 GMT'] + Date: ['Tue, 10 May 2016 15:49:20 GMT'] ETag: ['"db78eb36618a060181b32ac2de91b1733f382e01"'] - Expires: ['Fri, 06 May 2016 23:18:25 GMT'] + Expires: ['Tue, 10 May 2016 15:54:20 GMT'] Source-Age: ['0'] Strict-Transport-Security: [max-age=31536000] Vary: ['Authorization,Accept-Encoding'] @@ -62,10 +62,10 @@ interactions: X-Cache: [MISS] X-Cache-Hits: ['0'] X-Content-Type-Options: [nosniff] - X-Fastly-Request-ID: [b253eff940ef2df7215e167a5d80acb38ecfb287] + X-Fastly-Request-ID: [1a4906d8a23feae376d9a931099831d3f34990e1] X-Frame-Options: [deny] - X-GitHub-Request-Id: ['17EB2F14:3F24:391C37F:572D2515'] - X-Served-By: [cache-sjc3124-SJC] + X-GitHub-Request-Id: ['17EB2C15:06B0:F9C2B73:573202FF'] + X-Served-By: [cache-dfw1820-DFW] X-XSS-Protection: [1; mode=block] status: {code: 200, message: OK} version: 1 diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_images_list_thru_services.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_images_list_thru_services.yaml index bccff84ac62..b9de340ae37 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_images_list_thru_services.yaml +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_images_list_thru_services.yaml @@ -6,7 +6,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.0 requests/2.9.1 msrest/0.3.0 msrest_azure/0.3.0 computemanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET @@ -24,142 +24,144 @@ interactions: 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 headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 03:52:45 GMT'] + Date: ['Tue, 10 May 2016 15:49:20 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -173,7 +175,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.0 requests/2.9.1 msrest/0.3.0 msrest_azure/0.3.0 computemanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET @@ -193,7 +195,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 03:52:45 GMT'] + Date: ['Tue, 10 May 2016 15:49:20 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -207,7 +209,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.0 requests/2.9.1 msrest/0.3.0 msrest_azure/0.3.0 computemanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET @@ -225,7 +227,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 03:52:45 GMT'] + Date: ['Tue, 10 May 2016 15:49:20 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -239,7 +241,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.0 requests/2.9.1 msrest/0.3.0 msrest_azure/0.3.0 computemanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET @@ -259,7 +261,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 03:52:46 GMT'] + Date: ['Tue, 10 May 2016 15:49:21 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -273,7 +275,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.0 requests/2.9.1 msrest/0.3.0 msrest_azure/0.3.0 computemanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET @@ -288,7 +290,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 03:52:46 GMT'] + Date: ['Tue, 10 May 2016 15:49:21 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -302,7 +304,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.0 requests/2.9.1 msrest/0.3.0 msrest_azure/0.3.0 computemanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET @@ -320,7 +322,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 03:52:47 GMT'] + Date: ['Tue, 10 May 2016 15:49:22 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -334,7 +336,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.0 requests/2.9.1 msrest/0.3.0 msrest_azure/0.3.0 computemanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET @@ -353,7 +355,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 03 May 2016 03:52:47 GMT'] + Date: ['Tue, 10 May 2016 15:49:21 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_list_from_group.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_list_from_group.yaml index 59227b10076..9a4e55d790b 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_list_from_group.yaml +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_list_from_group.yaml @@ -6,7 +6,7 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.0 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 computemanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET @@ -35,7 +35,7 @@ interactions: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 29 Apr 2016 19:53:17 GMT'] + Date: ['Tue, 10 May 2016 15:49:22 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_list_ip_addresses.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_list_ip_addresses.yaml index 1a5794418b3..564ed03ef80 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_list_ip_addresses.yaml +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_list_ip_addresses.yaml @@ -17,7 +17,7 @@ interactions: Cache-Control: [no-cache] Content-Length: ['119'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:18:58 GMT'] + Date: ['Tue, 10 May 2016 17:45:15 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -43,7 +43,7 @@ interactions: Cache-Control: [no-cache] Content-Length: ['207'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:19:00 GMT'] + Date: ['Tue, 10 May 2016 17:45:17 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -74,97 +74,111 @@ interactions: 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 - 0+UMcvf9X/L/ALKglGlLXwAA + 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 + cga5+/4v+X8Aq4MAmjtvAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] - Content-Length: ['5034'] + Content-Length: ['5831'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:19:01 GMT'] + Date: ['Tue, 10 May 2016 17:45:18 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] Vary: [Accept-Encoding] - x-ms-original-request-ids: [872cab35-797f-43f7-84ae-cbbc3ae9444c, cfcf1e6e-cb92-4b7a-ab7f-6988f10d2d00, - bce18368-28df-4b6b-8758-d3efaf04e8d2] + x-ms-original-request-ids: [015c880b-c8bb-473d-b90a-6c5a1e0b36f6, 6f0dc65c-0659-4142-8147-749ca088aaaf, + 1c5168b2-59e6-4e2b-8463-309725bc8fc1] status: {code: 200, message: OK} - request: body: null @@ -193,200 +207,897 @@ interactions: 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 - AAA= + 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 + 88yyEz2JnL/k/wHBGxJ/VAoBAA== headers: Cache-Control: [no-cache] Content-Encoding: [gzip] - Content-Length: ['8267'] + Content-Length: ['9937'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:19:02 GMT'] + Date: ['Tue, 10 May 2016 17:45:19 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] Vary: [Accept-Encoding] - x-ms-original-request-ids: [81cdfade-6cc2-43cf-987d-e72c4cbc1d23, 0948c926-ffdf-488c-bbad-8bf26303102d, - b5d23b6c-67d7-46fb-b3fb-ced3b1863538] + x-ms-original-request-ids: [c7571218-1592-4e44-8ef7-44b9a80d0380, baf03973-ed73-43e4-a7c4-e23cde2acf18, + d4658da6-ea56-4049-9a01-41f69041a592] status: {code: 200, message: OK} - request: body: !!binary | - eyJwcm9wZXJ0aWVzIjogeyJ0ZW1wbGF0ZUxpbmsiOiB7InVyaSI6ICJodHRwczovL2F6dXJlc2Rr - Y2kuYmxvYi5jb3JlLndpbmRvd3MubmV0L3RlbXBsYXRlaG9zdC9DcmVhdGVWTS9henVyZWRlcGxv - eS5qc29uIn0sICJwYXJhbWV0ZXJzIjogeyJhdmFpbGFiaWxpdHlTZXRUeXBlIjogeyJ2YWx1ZSI6 - ICJub25lIn0sICJvc09mZmVyIjogeyJ2YWx1ZSI6ICJVYnVudHVTZXJ2ZXIifSwgInB1YmxpY0lw - QWRkcmVzc1R5cGUiOiB7InZhbHVlIjogIm5ldyJ9LCAibmFtZSI6IHsidmFsdWUiOiAidm0td2l0 - aC1wdWJsaWMtaXAifSwgInZpcnR1YWxOZXR3b3JrVHlwZSI6IHsidmFsdWUiOiAibmV3In0sICJw - cml2YXRlSXBBZGRyZXNzQWxsb2NhdGlvbiI6IHsidmFsdWUiOiAiRHluYW1pYyJ9LCAic3RvcmFn - ZUFjY291bnRUeXBlIjogeyJ2YWx1ZSI6ICJuZXcifSwgIm9zU0tVIjogeyJ2YWx1ZSI6ICIxNC4w - NC40LUxUUyJ9LCAib3NEaXNrTmFtZSI6IHsidmFsdWUiOiAib3NkaXNraW1hZ2UifSwgIl9hcnRp - ZmFjdHNMb2NhdGlvbiI6IHsidmFsdWUiOiAiaHR0cHM6Ly9henVyZXNka2NpLmJsb2IuY29yZS53 - aW5kb3dzLm5ldC90ZW1wbGF0ZWhvc3QvQ3JlYXRlVk0ifSwgImF1dGhlbnRpY2F0aW9uVHlwZSI6 - IHsidmFsdWUiOiAicGFzc3dvcmQifSwgInZpcnR1YWxOZXR3b3JrSXBBZGRyZXNzUHJlZml4Ijog - eyJ2YWx1ZSI6ICIxMC4wLjAuMC8xNiJ9LCAic3VibmV0SXBBZGRyZXNzUHJlZml4IjogeyJ2YWx1 - ZSI6ICIxMC4wLjAuMC8yNCJ9LCAib3NUeXBlIjogeyJ2YWx1ZSI6ICJDdXN0b20ifSwgInNpemUi - OiB7InZhbHVlIjogIlN0YW5kYXJkX0EyIn0sICJsb2NhdGlvbiI6IHsidmFsdWUiOiAid2VzdHVz - In0sICJzdG9yYWdlQ29udGFpbmVyTmFtZSI6IHsidmFsdWUiOiAidmhkcyJ9LCAiYWRtaW5Vc2Vy - bmFtZSI6IHsidmFsdWUiOiAidWJ1bnR1In0sICJwdWJsaWNJcEFkZHJlc3NBbGxvY2F0aW9uIjog - eyJ2YWx1ZSI6ICJEeW5hbWljIn0sICJvc1B1Ymxpc2hlciI6IHsidmFsdWUiOiAiQ2Fub25pY2Fs - In0sICJvc1ZlcnNpb24iOiB7InZhbHVlIjogImxhdGVzdCJ9LCAic3RvcmFnZVJlZHVuZGFuY3lU - eXBlIjogeyJ2YWx1ZSI6ICJTdGFuZGFyZF9MUlMifSwgImFkbWluUGFzc3dvcmQiOiB7InZhbHVl - IjogInRlc3RQYXNzd29yZDAifX0sICJtb2RlIjogIkluY3JlbWVudGFsIn19 - headers: - Accept: [application/json] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['1185'] + eyJwcm9wZXJ0aWVzIjogeyJtb2RlIjogIkluY3JlbWVudGFsIiwgInRlbXBsYXRlTGluayI6IHsi + dXJpIjogImh0dHBzOi8vYXp1cmVzZGtjaS5ibG9iLmNvcmUud2luZG93cy5uZXQvdGVtcGxhdGVo + b3N0L0NyZWF0ZVZNL2F6dXJlZGVwbG95Lmpzb24ifSwgInBhcmFtZXRlcnMiOiB7ImF2YWlsYWJp + bGl0eVNldFR5cGUiOiB7InZhbHVlIjogIm5vbmUifSwgIl9hcnRpZmFjdHNMb2NhdGlvbiI6IHsi + dmFsdWUiOiAiaHR0cHM6Ly9henVyZXNka2NpLmJsb2IuY29yZS53aW5kb3dzLm5ldC90ZW1wbGF0 + ZWhvc3QvQ3JlYXRlVk0ifSwgImF1dGhlbnRpY2F0aW9uVHlwZSI6IHsidmFsdWUiOiAicGFzc3dv + cmQifSwgInByaXZhdGVJcEFkZHJlc3NBbGxvY2F0aW9uIjogeyJ2YWx1ZSI6ICJEeW5hbWljIn0s + ICJvc1R5cGUiOiB7InZhbHVlIjogIkN1c3RvbSJ9LCAiYWRtaW5QYXNzd29yZCI6IHsidmFsdWUi + OiAidGVzdFBhc3N3b3JkMCJ9LCAicHVibGljSXBBZGRyZXNzQWxsb2NhdGlvbiI6IHsidmFsdWUi + OiAiRHluYW1pYyJ9LCAidmlydHVhbE5ldHdvcmtUeXBlIjogeyJ2YWx1ZSI6ICJuZXcifSwgImRu + c05hbWVUeXBlIjogeyJ2YWx1ZSI6ICJub25lIn0sICJsb2NhdGlvbiI6IHsidmFsdWUiOiAid2Vz + dHVzIn0sICJvc1ZlcnNpb24iOiB7InZhbHVlIjogImxhdGVzdCJ9LCAib3NEaXNrTmFtZSI6IHsi + dmFsdWUiOiAib3NkaXNraW1hZ2UifSwgInZpcnR1YWxOZXR3b3JrSXBBZGRyZXNzUHJlZml4Ijog + eyJ2YWx1ZSI6ICIxMC4wLjAuMC8xNiJ9LCAicHVibGljSXBBZGRyZXNzVHlwZSI6IHsidmFsdWUi + OiAibmV3In0sICJhZG1pblVzZXJuYW1lIjogeyJ2YWx1ZSI6ICJ1YnVudHUifSwgIm9zU0tVIjog + eyJ2YWx1ZSI6ICIxNC4wNC40LUxUUyJ9LCAic3RvcmFnZUFjY291bnRUeXBlIjogeyJ2YWx1ZSI6 + ICJuZXcifSwgIm9zT2ZmZXIiOiB7InZhbHVlIjogIlVidW50dVNlcnZlciJ9LCAib3NQdWJsaXNo + ZXIiOiB7InZhbHVlIjogIkNhbm9uaWNhbCJ9LCAic3VibmV0SXBBZGRyZXNzUHJlZml4IjogeyJ2 + YWx1ZSI6ICIxMC4wLjAuMC8yNCJ9LCAic2l6ZSI6IHsidmFsdWUiOiAiU3RhbmRhcmRfQTIifSwg + Im5hbWUiOiB7InZhbHVlIjogInZtLXdpdGgtcHVibGljLWlwIn0sICJzdG9yYWdlUmVkdW5kYW5j + eVR5cGUiOiB7InZhbHVlIjogIlN0YW5kYXJkX0xSUyJ9LCAic3RvcmFnZUNvbnRhaW5lck5hbWUi + OiB7InZhbHVlIjogInZoZHMifX19fQ== + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['1219'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips?api-version=2015-11-01 + response: + body: {string: '{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips","name":"azurecli-test-deployment-vm-list-ips","properties":{"templateLink":{"uri":"https://azuresdkci.blob.core.windows.net/templatehost/CreateVM/azuredeploy.json","contentVersion":"1.0.0.0"},"parameters":{"_artifactsLocation":{"type":"String","value":"https://azuresdkci.blob.core.windows.net/templatehost/CreateVM"},"adminPassword":{"type":"SecureString"},"adminUsername":{"type":"String","value":"ubuntu"},"authenticationType":{"type":"String","value":"password"},"availabilitySetId":{"type":"String","value":""},"availabilitySetType":{"type":"String","value":"none"},"dnsNameForPublicIP":{"type":"String","value":""},"dnsNameType":{"type":"String","value":"none"},"location":{"type":"String","value":"westus"},"name":{"type":"String","value":"vm-with-public-ip"},"osDiskName":{"type":"String","value":"osdiskimage"},"osDiskUri":{"type":"String","value":"http://vhdstorage6oayrczyf2jh6.blob.core.windows.net/vhds/osdiskimage.vhd"},"osOffer":{"type":"String","value":"UbuntuServer"},"osPublisher":{"type":"String","value":"Canonical"},"osSKU":{"type":"String","value":"14.04.4-LTS"},"osType":{"type":"String","value":"Custom"},"osVersion":{"type":"String","value":"latest"},"privateIpAddressAllocation":{"type":"String","value":"Dynamic"},"publicIpAddressAllocation":{"type":"String","value":"Dynamic"},"publicIpAddressName":{"type":"String","value":"PublicIPvm-with-public-ip"},"publicIpAddressType":{"type":"String","value":"new"},"size":{"type":"String","value":"Standard_A2"},"sshDestKeyPath":{"type":"String","value":"/home/ubuntu/.ssh/authorized_keys"},"sshKeyValue":{"type":"String","value":""},"storageAccountName":{"type":"String","value":"vhdstorage6oayrczyf2jh6"},"storageAccountType":{"type":"String","value":"new"},"storageContainerName":{"type":"String","value":"vhds"},"storageRedundancyType":{"type":"String","value":"Standard_LRS"},"subnetIpAddressPrefix":{"type":"String","value":"10.0.0.0/24"},"subnetName":{"type":"String","value":"Subnetvm-with-public-ip"},"virtualNetworkIpAddressPrefix":{"type":"String","value":"10.0.0.0/16"},"virtualNetworkName":{"type":"String","value":"VNETvm-with-public-ip"},"virtualNetworkType":{"type":"String","value":"new"}},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2016-05-10T17:45:20.9202577Z","duration":"PT0.1813682S","correlationId":"e0218361-be68-4c49-ab06-4ae9ce835361","providers":[{"namespace":"Microsoft.Resources","resourceTypes":[{"resourceType":"deployments","locations":[null]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/VNetvm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"VNetvm-with-public-ip"}],"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/NicIpvm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"NicIpvm-with-public-ip"},{"dependsOn":[{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/vhdstorage6oayrczyf2jh6vm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"vhdstorage6oayrczyf2jh6vm-with-public-ip"},{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/NicIpvm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"NicIpvm-with-public-ip"}],"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/VMvm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"VMvm-with-public-ip"}]}}'} + headers: + Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01'] + Cache-Control: [no-cache] + Content-Length: ['4017'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:45:20 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:45:51 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:46:26 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:46:57 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:47:27 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:47:57 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:48:31 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:49:02 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:49:32 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:50:03 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:50:33 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:51:03 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:51:34 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:52:04 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:52:35 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:53:06 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:53:36 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:54:06 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:54:37 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:55:08 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:55:38 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:56:08 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['140'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 17:56:39 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] - method: PUT - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips?api-version=2015-11-01 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: - body: {string: '{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips","name":"azurecli-test-deployment-vm-list-ips","properties":{"templateLink":{"uri":"https://azuresdkci.blob.core.windows.net/templatehost/CreateVM/azuredeploy.json","contentVersion":"1.0.0.0"},"parameters":{"_artifactsLocation":{"type":"String","value":"https://azuresdkci.blob.core.windows.net/templatehost/CreateVM"},"adminPassword":{"type":"SecureString"},"adminUsername":{"type":"String","value":"ubuntu"},"authenticationType":{"type":"String","value":"password"},"availabilitySetId":{"type":"String","value":""},"availabilitySetType":{"type":"String","value":"none"},"dnsNameForPublicIP":{"type":"String","value":""},"dnsNameType":{"type":"String","value":"none"},"location":{"type":"String","value":"westus"},"name":{"type":"String","value":"vm-with-public-ip"},"osDiskName":{"type":"String","value":"osdiskimage"},"osDiskUri":{"type":"String","value":"http://vhdstorage6oayrczyf2jh6.blob.core.windows.net/vhds/osdiskimage.vhd"},"osOffer":{"type":"String","value":"UbuntuServer"},"osPublisher":{"type":"String","value":"Canonical"},"osSKU":{"type":"String","value":"14.04.4-LTS"},"osType":{"type":"String","value":"Custom"},"osVersion":{"type":"String","value":"latest"},"privateIpAddressAllocation":{"type":"String","value":"Dynamic"},"publicIpAddressAllocation":{"type":"String","value":"Dynamic"},"publicIpAddressName":{"type":"String","value":"PublicIPvm-with-public-ip"},"publicIpAddressType":{"type":"String","value":"new"},"size":{"type":"String","value":"Standard_A2"},"sshDestKeyPath":{"type":"String","value":"/home/ubuntu/.ssh/authorized_keys"},"sshKeyValue":{"type":"String","value":""},"storageAccountName":{"type":"String","value":"vhdstorage6oayrczyf2jh6"},"storageAccountType":{"type":"String","value":"new"},"storageContainerName":{"type":"String","value":"vhds"},"storageRedundancyType":{"type":"String","value":"Standard_LRS"},"subnetIpAddressPrefix":{"type":"String","value":"10.0.0.0/24"},"subnetName":{"type":"String","value":"Subnetvm-with-public-ip"},"virtualNetworkIpAddressPrefix":{"type":"String","value":"10.0.0.0/16"},"virtualNetworkName":{"type":"String","value":"VNETvm-with-public-ip"},"virtualNetworkType":{"type":"String","value":"new"}},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2016-05-06T22:19:04.4090941Z","duration":"PT0.1551359S","correlationId":"28b8e6a1-335a-4efa-b0af-b7da2eb41663","providers":[{"namespace":"Microsoft.Resources","resourceTypes":[{"resourceType":"deployments","locations":[null]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/VNetvm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"VNetvm-with-public-ip"}],"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/NicIpvm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"NicIpvm-with-public-ip"},{"dependsOn":[{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/vhdstorage6oayrczyf2jh6vm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"vhdstorage6oayrczyf2jh6vm-with-public-ip"},{"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/NicIpvm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"NicIpvm-with-public-ip"}],"id":"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/VMvm-with-public-ip","resourceType":"Microsoft.Resources/deployments","resourceName":"VMvm-with-public-ip"}]}}'} + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= headers: - Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01'] Cache-Control: [no-cache] - Content-Length: ['4017'] + Content-Encoding: [gzip] + Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:19:03 GMT'] + Date: ['Tue, 10 May 2016 17:57:10 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] - status: {code: 201, message: Created} + Vary: [Accept-Encoding] + status: {code: 200, message: OK} - request: body: null headers: @@ -398,7 +1109,7 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | @@ -410,7 +1121,7 @@ interactions: Content-Encoding: [gzip] Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:19:34 GMT'] + Date: ['Tue, 10 May 2016 17:57:41 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -427,7 +1138,7 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | @@ -439,7 +1150,7 @@ interactions: Content-Encoding: [gzip] Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:20:05 GMT'] + Date: ['Tue, 10 May 2016 17:58:11 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -456,7 +1167,7 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | @@ -468,7 +1179,7 @@ interactions: Content-Encoding: [gzip] Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:20:35 GMT'] + Date: ['Tue, 10 May 2016 17:58:41 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -485,7 +1196,7 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | @@ -497,7 +1208,7 @@ interactions: Content-Encoding: [gzip] Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:21:04 GMT'] + Date: ['Tue, 10 May 2016 17:59:11 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -514,7 +1225,7 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | @@ -526,7 +1237,7 @@ interactions: Content-Encoding: [gzip] Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:21:34 GMT'] + Date: ['Tue, 10 May 2016 17:59:42 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -543,7 +1254,7 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | @@ -555,7 +1266,7 @@ interactions: Content-Encoding: [gzip] Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:22:06 GMT'] + Date: ['Tue, 10 May 2016 18:00:12 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -572,7 +1283,7 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | @@ -584,7 +1295,7 @@ interactions: Content-Encoding: [gzip] Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:22:37 GMT'] + Date: ['Tue, 10 May 2016 18:00:43 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -601,19 +1312,19 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587390337412238195?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b - tevmo0cfvV5Pp3k+y2cf/ZL/ByCIe+QWAAAA + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] - Content-Length: ['141'] + Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:23:07 GMT'] + Date: ['Tue, 10 May 2016 18:01:13 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -630,40 +1341,19 @@ interactions: Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl - VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR8Xs - o0cf3W3Wk2ZaF6u2qJbN3Z3J7vmn+w92t3cn5zvb+7NZtp3l03vb08nDvQd75zsP7z/cuVvnTbWu - p/nndbVeNXenZfEmb9pXF7//Ty6eF017tjqezahNkzd3V3V1Wczyurn7RTGtq6Y6b8ev9PXm7ixf - ldX1Il+2zd3sB+s6J1DbLcHadt9sXy62S4K6Xayaj0YfLbNFTmjfsjV1v8rrtsibjx794o/afLEq - szZ/Xizf4u91XRCoeduumkd3BYFm9nZajCdlNRlPqzofXxXLWXXVjJd5e9e8Pq+a9u5JndOvP/mF - vCYIjH+6qZbU67RatoTLT9KwiajUxe54B/999EsIo6ymEbT0FTD4/TNC7jybts3zapphCvBpe73C - GF+3dbG8IHiXWbnGBx+GKXrPZoti+TJrmquqptl3XeVTAqkdmnZfNXkt5HbtpIVDaT1ZL9s1v7Ju - 5zToQobxhtsPv7cyOODNy6wos0lRFu3167w9CxDrvhh54aa+ltUyx2uzZfMiW+TPqvrlelIW07OX - m97y3rhtB+Ut5vCK+HXdoPVNpCVOvira+faKkSWGxktV87Ro3gKpTa9WzYxaFYvsgvGSl74Ctw+/ - A+Yi3rqcz5q2qunNT6vsup7+4Pp876fnnw4wGlrf9Xob0wfS45fn53m9qb+vmHNe5/UlteNXeFaa - Of254bWTjKhNTFbKO69/r682td7dH+/sj/e3n795Le1vmsqTNY1+IW2t/A43h5A1LZqv6uKS/rC6 - 77i8DTc8vSYuKKYMAKOffmPv38QiTGwSgSiXyR8W1k1EW+ZXeKspfkB/DTd73WbLWVbPfv/jPW7e - zJ8S8X6v/Ppl1s43vXh3Xi3yu6Jq7o7pvbtQNlVN/c1+/7f5NYsTfUygflJeGYbFTYXBj6fTikDe - RCliaX0hkIg+oNuSSV46ISORFcu8vk3/3nuv8tmayLicXt/Un6X381fM/WTpSWbtrL6s8/Pi3SYA - u2Sz8N/dvX33/k3ovuZWUba6LOp2nZUv8pZU/9uvg8gukz2EcxNCP/ni9M0t0LmJmjx79NaimuHP - s+W0zuFxkCYigYGbA2VB7xDZW7R4vZ5Oc/IMZvR9WyyI1bPFij7f29n9dHvn/vbOp2/29h7R//bv - jR/uPNz79OD+T1HT2bpWsf/o5Zt7X9x7OP70/v17uzv3XtOXpIDrnJQOfQ8z+dHeweQg/zTb3b53 - 7362vZ+fZ9uTnex8e/Jglu3lk/3dTz+9R68xejNSZx89+t4vZsPTrLIpkIx4ZdSeZoV/B03kHf8T - ek38HQwfzY2mQtPluiy//0voPxpJvsqXs3w5ZfeLgMgHzZc0Nvrr/13u508SG/S5JCQF4XsDGO8F - YUvivhhckOf/XeN/AX3fR9SN5+sSYADwLxn9v5sfoHVF4QZavz8QN+CvS6FbdwWa/b+LSgOT64b4 - dWkyAPj/fXLzk1/0sXSj+brDj0HF2Kt1u1rTC49+MVki+cNCdELkujupFtQkv6um7otsOieXg7i7 - D93wlnuZNBcM410y5/h5RkFtTbEqvf6TX9D8vBcMaXT20pF4kwM6CEbHoX8SIgO2vQfgtQjYXRU0 - 9diIEHHZI2L/kl/y/wBtp0PgIhEAAA== + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR02b + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] - Content-Length: ['1333'] + Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:23:07 GMT'] + Date: ['Tue, 10 May 2016 18:01:44 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -676,118 +1366,27 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 networkmanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/publicIPAddresses?api-version=2015-06-15 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl - VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR5dZ - uc4/evS9X/zRMlvQLx9Ny6LNt6/ypl1v3/v0/s69hw8eHtzbXhWrj0YfFTNqcbdZT5ppXazaolo2 - d3cmu+ef7j/Y3d6dnO9s789m2XaWT+9tTycP9x7sne88vP9w526dN9W6nuaf19V61dylTt7kZf4k - X07nrz6/u6qry2KW183dL4ppXTXVeTt+kbdXVf327mo9KYvp2cvj2YyANDm/PIxh3mYXhON37/6+ - H00/3b9/8ODTyfa9vWy6vX9v/3x7sj/9dHv6MNuZne9OdvPp+e/7Eb3TXq8w8lv0TY3Lapph4PQC - o4DPCP9VXrcFNXj0i/HXZdFQk2J58brNWsB+vZ5O83yWz6g1gRJarJmc+3v5g0/3dvLtbDoj+u1n - 2fbDvcne9qcPDvZ289m9yfn+p/RWsVIs6JXde+OHu+Pd3Z3x3u4+fWfxLA12X+TtvAL0p9c0r8WU - GhWzMn9TLPJq3Z4tvyiW6xbo7o8+mi2b13nbErb09y/+aFYtsmL5grjheTbJS4KxkeDnv2gGWgy3 - GfOHzXhaVutZtlqNsx+s63w8rRYf/RLCanVSLc+Li3XNeAMBpsrdHyqTLeXn2bLN6/NsOsxky2J6 - t4NyQx9M+YPd/fsP9+/v3ntwsPPpvY9+yS/5JSMrVS91hi4X21dFO9+WGdtmCn6j423aVxe//08u - nhdNe2Y4hoazafCCC3GPbb0JW0/AdvZmBw+Jp7fPZzvnxLkPptsPp9P97SybPJzdPzgnOjz8ZgSM - +hTeLJpVmV2DOelrg6a+DXaicX59SdyhudvfefDpdp7NZkT03fPt7OHewfb0wWRysHc+uffgnAXJ - 0JVegSTeG+/evz/e24GU2gF9LUnscBaGwIjd/bljjr5k/OQXL4ppjzNICALcnVT0moaSsbg207hf - 19P96U+/vSpWD66ZTPT13Q8f+uL6crF5kIIazZolyTBWHv8/fHjv/s7ew3yb1HW+vX/w4P42Keu9 - 7b3s09n+LJtNst3J/5f4f+9gbzrdmexv3384O9jezw4ebB/sZ7Pt7N7uvZ3zPZLtDOxrkf5aPH6j - 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 + tevmo0cfvVovl8Xy4qNf8v8Aicy9SRQAAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] - Content-Length: ['5221'] + Content-Length: ['140'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:23:09 GMT'] + Date: ['Tue, 10 May 2016 18:02:14 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] Vary: [Accept-Encoding] - x-ms-original-request-ids: [0e46a965-2c43-4ac6-b401-f4b09f461013, 913fb2ce-c3f1-4cfa-8a54-ae7eb34cdebe, - 3b3d2a6a-ebe7-4bf7-9203-0a5db3892e7d] status: {code: 200, message: OK} - request: body: null @@ -796,176 +1395,27 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 networkmanagementclient/2015-06-15 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkInterfaces?api-version=2015-06-15 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387045647388923?api-version=2015-11-01 response: body: string: !!binary | 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 + tevmo0cfvV5Pp3k+y2cf/ZL/ByCIe+QWAAAA headers: Cache-Control: [no-cache] Content-Encoding: [gzip] - Content-Length: ['8529'] + Content-Length: ['141'] Content-Type: [application/json; charset=utf-8] - Date: ['Fri, 06 May 2016 22:23:11 GMT'] + Date: ['Tue, 10 May 2016 18:02:44 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] Vary: [Accept-Encoding] - x-ms-original-request-ids: [78bc3368-3af6-437f-8573-6389c35f249f, f8bc06ba-3700-4dde-b65c-e23f55c9eed9, - 3fb0bcbf-2d28-485b-8adc-474b793f125d] status: {code: 200, message: OK} - request: body: null @@ -973,26 +1423,174 @@ interactions: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['0'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] - method: DELETE - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses?api-version=2015-11-01 + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips?api-version=2015-11-01 response: - body: {string: ''} + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR8Xs + o0cf3W3Wk2ZaF6u2qJbN3Z3J7vmn+w92t3cn5zvb+7NZtp3l03vb08nDvQd75zsP7z/cuVvnTbWu + p/nndbVeNXenZfEmb9pXF7//Ty6eF017tjqezahNkzd3V3V1Wczyurn7RTGtq6Y6b8ev9PXm7ixf + ldX1Il+2zd3sB+s6J1DbLcHadt9sXy62S4K6Xayaj0YfLbNFTmjfsjV1v8rrtsibjx794o/afLEq + szZ/Xizf4u91XRCoeduumkd3BYFm9nZajCdlNRlPqzofXxXLWXXVjJd5e9e8Pq+a9u5JndOvP/mF + vCYIjH+6qZbU67RatoTLT9KwiajUxe54B/999EsIo6ymEbT0FTD4/TNC7jybts3zapphCvBpe73C + GF+3dbG8IHiXWbnGBx+GKXrPZoti+TJrmquqptl3XeVTAqkdmnZfNXkt5HbtpIVDaT1ZL9s1v7Ju + 5zToQobxhtsPv7cyOODNy6wos0lRFu3167w9CxDrvhh54aa+ltUyx2uzZfMiW+TPqvrlelIW07OX + m97y3rhtB+Ut5vCK+HXdoPVNpCVOvira+faKkSWGxktV87Ro3gKpTa9WzYxaFYvsgvGSl74Ctw+/ + A+Yi3rqcz5q2qunNT6vsup7+4Pp876fnnw4wGlrf9Xob0wfS45fn53m9qb+vmHNe5/UlteNXeFaa + Of254bWTjKhNTFbKO69/r682td7dH+/sj/e3n795Le1vmsqTNY1+IW2t/A43h5A1LZqv6uKS/rC6 + 77i8DTc8vSYuKKYMAKOffmPv38QiTGwSgSiXyR8W1k1EW+ZXeKspfkB/DTd73WbLWVbPfv/jPW7e + zJ8S8X6v/Ppl1s43vXh3Xi3yu6Jq7o7pvbtQNlVN/c1+/7f5NYsTfUygflJeGYbFTYXBj6fTikDe + RCliaX0hkIg+oNuSSV46ISORFcu8vk3/3nuv8tmayLicXt/Un6X381fM/WTpSWbtrL6s8/Pi3SYA + u2Sz8N/dvX33/k3ovuZWUba6LOp2nZUv8pZU/9uvg8gukz2EcxNCP/ni9M0t0LmJmjx79NaimuHP + s+W0zuFxkCYigYGbA2VB7xDZW7R4vZ5Oc/IMZvR9WyyI1bPFij7f29n9dHvn/vbuzpvdg0c7e492 + H453H+x/ev/ewU9R09m6VrH/6OWb3U+/uH8w3r93/8Gn+/de07ekgeuctA41gJ38KN/Z2z249+nu + 9iT/9GB7f7r/cDub7Hy6vZ/lD6f5wb379B29xvjBDfvo0fd+MVueZpVNgWXELaP2NC38O4gi7/if + 0Gvi8GD8aG5UFZou12X5/V9C/9FQ8lW+nOXLKftfBEQ+aL6kwdFf/+/yP3+S+KDPJiEpCN8bwHgv + CF8S+8Xggjz/7xr/Cyj8PqJuPF+XAAOAf8no/938ALUrGjdQ+/2BuAF/XQrduivQ7P9dVBqYXDfE + r0uTAcD/75Obn/yij6Ubzdcdfgwqxl6t29WaXnj0i8kUyR8WohMi191JtaAm+V21dV9k0zn5HMTd + feiGt9zLpLlgGe+SPcfPM4pqawpW6fWf/ILm571gSKOzl47EmzzQQTA6Dv2TEBkw7j0Ar0XA7qqg + qctGhIjLHhH7l/yS/wcdTTzcIxEAAA== headers: Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:23:11 GMT'] + Content-Encoding: [gzip] + Content-Length: ['1333'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 18:02:44 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: !!binary | + Z3JhbnRfdHlwZT1yZWZyZXNoX3Rva2VuJmNsaWVudF9pZD0wNGIwNzc5NS04ZGRiLTQ2MWEtYmJl + ZS0wMmY5ZTFiZjdiNDYmcmVzb3VyY2U9aHR0cHMlM0ElMkYlMkZtYW5hZ2VtZW50LmNvcmUud2lu + ZG93cy5uZXQlMkYmcmVmcmVzaF90b2tlbj1BQUFCQUFBQWlMOUtuMloyN1V1YnZXRlBibTBnTGRZ + NkpKVFNaaE4xZ29VQ0hEX3NkWDhPMk5TaVowcEJjRExCRmt6UTJnazFTZS1RbTB5dHpwajJzYXdy + eHpzOEpoUVpndXpta1NaNW5FVVhIamw3eDNMNmQ0cFRBNzgtTlZRSHZ2RDIyMHJGbU1jTHJlcWpR + WVNETFB5VDQ2TW5tUks5NmZNTk9qNVA5cjExNHAwdnJhbnlrZm9xQWNjX0dJa3ZZVHBVLUpUdzJk + YUJBaW50X1pmMUhSV0lHVmhyTm0xaUJnazQwalBuY2Q1bXJMb2c0SzdyNFlxM21GUWxxTUJCbzla + UDZ3MWt1TFFibFVqWXlwbWdfSDM1SXdNR3BUWFpjdnVBRVc0N1VTLWZOZUNrdm1JTmIwUTJnTFNM + RERGQmpHQmNNd2xZN0RRZERFRFVBcXBkUmd4SHFDZzZCNDVSSWFxTHB3dFJ0Y3RtRnFTa3ZKdGQt + NlJCSTFqQXpsZ0VPMW9zaTZaOTNKNnNXeVhjSDNXV1Ezci1sa1M1M0FGV0pHUXdNTUtTOC1HTnZm + QXF0eVluUWFydWRfcy1HSW1rdFRMZXlPMmtEN1pxSURNUGx2MW9fMHQxRHdTSEFReE54RVIxQmJr + b21WQmV3NGU0RmFvemlOZEpFS2ZzLU1LYUdRMEM4U3FRbTJvMU8tcm9aSF9KWno3clQ4SW1GTEdt + WVk4SWc4LVBWelY0dXFoUzhVZ21PeXBYYmVramFzSEpjY29EM0hEVElfdDQwemZmQUNWcVVsYVhm + cnljVzZ0MjljNEFCWWRybEJTODRmVWtQTUtWd0xLUVJSSEphQ3ZiUFlfOTBRT2xHXzBIQU5xQjh1 + TllXVzhOZnQyNXl1M25iaHNvZzI1aXYydHAxakZxdzFlbVd0SG5sV3hTZEJib0ZZVk5hVVpMS2hq + c1piNkJXbGw2cl80eDlEdXRaU0FB + headers: + Accept: ['*/*'] + Accept-Charset: [utf-8] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['876'] + User-Agent: [python-requests/2.9.1] + content-type: [application/x-www-form-urlencoded] + return-client-request-id: ['true'] + x-client-CPU: [x86] + x-client-OS: [win32] + x-client-SKU: [Python] + x-client-Ver: [0.2.0] + method: POST + uri: https://login.microsoftonline.com/54826b22-38d6-4fb2-bad9-b7b93a3e9c5a/oauth2/token?api-version=1.0 + response: + body: {string: '{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3599","expires_on":"1462908434","not_before":"1462904534","resource":"https://management.core.windows.net/","access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDYyOTA0NTM0LCJuYmYiOjE0NjI5MDQ1MzQsImV4cCI6MTQ2MjkwODQzNCwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IkFkbWluMiIsImdpdmVuX25hbWUiOiJBZG1pbjIiLCJncm91cHMiOlsiZTRiYjBiNTYtMTAxNC00MGY4LTg4YWItM2Q4YThjYjBlMDg2Il0sImlwYWRkciI6IjE2Ny4yMjAuMS4xODYiLCJuYW1lIjoiQWRtaW4yIiwib2lkIjoiNTk2M2Y1MGMtN2M0My00MDVjLWFmN2UtNTMyOTRkZTc2YWJkIiwicHVpZCI6IjEwMDNCRkZEOTU5Rjg0MjMiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJzRGdleFJ3Q05JZlktaHpRampDRHZaVDdJemRmbzRTeXJyNHgwZEROelI0IiwidGlkIjoiNTQ4MjZiMjItMzhkNi00ZmIyLWJhZDktYjdiOTNhM2U5YzVhIiwidW5pcXVlX25hbWUiOiJhZG1pbjJAQXp1cmVTREtUZWFtLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6ImFkbWluMkBBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.jYzsA0FdWK6hp3jYIgjvB7lWnJuNHDWwBO-pt49fN7Ybe66iyM5ciiRuWqlSbM0vUOrVJjQfuGtgbCT_w9YVVLM2INuMnt9j74qpssNzGz0S8tlrUMuD-fYDXPIyM9yWdT25XM9i1VrdsDKrmSWn7ST7qx42cwHQBuRLTFUxUjF_ufw9GX7gxRsacnw03_spiUredmzeYpL9hGbQIJgF4C5HUg7t8AxJuwqbVOY-9x45zlOkYck44y0JceWWYPVBnmgXxCk0FkuqPe3okJr6kaqHhIuBw1dTImcdm4Yn69jTeUJoKiaA6xdRdahjYFOg9y0s8dunLTceufxFn-j1iQ","refresh_token":"AAABAAAAiL9Kn2Z27UubvWFPbm0gLRgYcCqwplpsw_IelFGra2Zbc8l1fJ3L48U0NId1008SPn0hWU9urLx46WloxWkb9Ve7HnCj0Wubdlo-GUgwXSVT9nMz0XEq_rDElpkXJ68SEqZ2xQFD8icjJVTceVYTNgvZBj0J9urOVAPWMSd0bEjH5qdVJZs10uJgyBTTaQ063NRb3cCfVzGedaki_ZDgDR-Utgm1snL07La-jo4mk6hulI1kIyK80lxp9CoLlQhAlwuqBAOKrCOggjcBnQfzJARszKhiYeteEuqjlSBFYfq2eV4dFb3-iF0ISlr7vHZVmUt9pVowRmK2qZbtlZg7_-LJ4QQQ8FPyft9BlGeg5jzsxvqpB0ZcOMYHfG3VFpF7N5zmVW9y-IhSlzy55HI8XoVRuqg3f9hDfSEA2xEZoNe9R1lUCkleErCuG4dPdFGIs3tI4bW5YHmCnaqDcEMJ0OCVPetGaYHKGgM0byVYSFoBZTs519jbiAkbnYj5hBf_H_Hr31oV-folyYL96wFZy7i1NIWyJLhlp2AMVQWSQQPX3aVmhxwkCbUTS9TgpsVrZ0lkKA_fIXaTT6uMHlHvRLbTnkcPAOPUuREhdfZcRIfRQsVxcWqTkbqpox335gZDGImW1MDBH5Jzm4ziAfgO3WopoW7OlYxprU4QrqDG4jLVSEXAxoguh2x3KjyFG-c7-q_x7ZimqRJeuqEfW5ErxyAA"}'} + headers: + Cache-Control: ['no-cache, no-store'] + Content-Length: ['2410'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 18:27:13 GMT'] + Expires: ['-1'] + P3P: [CP="DSP CUR OTPi IND OTRi ONL FIN"] + Pragma: [no-cache] + Server: [Microsoft-IIS/8.5] + Set-Cookie: [flight-uxoptin=true; path=/; secure; HttpOnly, esctx=AAABAAAAiL9Kn2Z27UubvWFPbm0gLQTchK2rUI7IwjTDM_4db2U6lF-TZOvQSJnGvXHfsOQ54XVk3lriUIC1WTS2Sun1If3dOUT6EaKq8cVCOr2BySNlpy7dd4iyYE5vc85wMUd6mrjgy2f5RSBnTUsigc5ZU5iWgm9_Ie3-vGcDciIWOyJs8AeaXR0xeR0Zruh54G-MIAA; + domain=.login.microsoftonline.com; path=/; secure; HttpOnly, x-ms-gateway-slice=productiona; + path=/; secure; HttpOnly, stsservicecookie=ests; path=/; secure; HttpOnly] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + X-Content-Type-Options: [nosniff] + X-Powered-By: [ASP.NET] + status: {code: 200, message: OK} +- request: + body: !!binary | + eyJwcm9wZXJ0aWVzIjogeyJtb2RlIjogIkluY3JlbWVudGFsIiwgInRlbXBsYXRlTGluayI6IHsi + dXJpIjogImh0dHBzOi8vYXp1cmVzZGtjaS5ibG9iLmNvcmUud2luZG93cy5uZXQvdGVtcGxhdGVo + b3N0L0NyZWF0ZVZNL2F6dXJlZGVwbG95Lmpzb24ifSwgInBhcmFtZXRlcnMiOiB7ImF2YWlsYWJp + bGl0eVNldFR5cGUiOiB7InZhbHVlIjogIm5vbmUifSwgIl9hcnRpZmFjdHNMb2NhdGlvbiI6IHsi + dmFsdWUiOiAiaHR0cHM6Ly9henVyZXNka2NpLmJsb2IuY29yZS53aW5kb3dzLm5ldC90ZW1wbGF0 + ZWhvc3QvQ3JlYXRlVk0ifSwgImF1dGhlbnRpY2F0aW9uVHlwZSI6IHsidmFsdWUiOiAicGFzc3dv + cmQifSwgInByaXZhdGVJcEFkZHJlc3NBbGxvY2F0aW9uIjogeyJ2YWx1ZSI6ICJEeW5hbWljIn0s + ICJvc1R5cGUiOiB7InZhbHVlIjogIkN1c3RvbSJ9LCAiYWRtaW5QYXNzd29yZCI6IHsidmFsdWUi + OiAidGVzdFBhc3N3b3JkMCJ9LCAicHVibGljSXBBZGRyZXNzQWxsb2NhdGlvbiI6IHsidmFsdWUi + OiAiRHluYW1pYyJ9LCAidmlydHVhbE5ldHdvcmtUeXBlIjogeyJ2YWx1ZSI6ICJuZXcifSwgImRu + c05hbWVUeXBlIjogeyJ2YWx1ZSI6ICJub25lIn0sICJsb2NhdGlvbiI6IHsidmFsdWUiOiAid2Vz + dHVzIn0sICJvc1ZlcnNpb24iOiB7InZhbHVlIjogImxhdGVzdCJ9LCAib3NEaXNrTmFtZSI6IHsi + dmFsdWUiOiAib3NkaXNraW1hZ2UifSwgInZpcnR1YWxOZXR3b3JrSXBBZGRyZXNzUHJlZml4Ijog + eyJ2YWx1ZSI6ICIxMC4wLjAuMC8xNiJ9LCAicHVibGljSXBBZGRyZXNzVHlwZSI6IHsidmFsdWUi + OiAibmV3In0sICJhZG1pblVzZXJuYW1lIjogeyJ2YWx1ZSI6ICJ1YnVudHUifSwgIm9zU0tVIjog + eyJ2YWx1ZSI6ICIxNC4wNC40LUxUUyJ9LCAic3RvcmFnZUFjY291bnRUeXBlIjogeyJ2YWx1ZSI6 + ICJuZXcifSwgIm9zT2ZmZXIiOiB7InZhbHVlIjogIlVidW50dVNlcnZlciJ9LCAib3NQdWJsaXNo + ZXIiOiB7InZhbHVlIjogIkNhbm9uaWNhbCJ9LCAic3VibmV0SXBBZGRyZXNzUHJlZml4IjogeyJ2 + YWx1ZSI6ICIxMC4wLjAuMC8yNCJ9LCAic2l6ZSI6IHsidmFsdWUiOiAiU3RhbmRhcmRfQTIifSwg + Im5hbWUiOiB7InZhbHVlIjogInZtLXdpdGgtcHVibGljLWlwIn0sICJzdG9yYWdlUmVkdW5kYW5j + eVR5cGUiOiB7InZhbHVlIjogIlN0YW5kYXJkX0xSUyJ9LCAic3RvcmFnZUNvbnRhaW5lck5hbWUi + OiB7InZhbHVlIjogInZoZHMifX19fQ== + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + Content-Length: ['1219'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 + Azure-SDK-For-Python AZURECLI_0.0.32] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips?api-version=2015-11-01 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR8Xs + o0cf3W3Wk2ZaF6u2qJbN3Z3J7vmn+w92t3cn5zvb+7NZtp3l03vb08nDvQd75zsP7z/cuVvnTbWu + p/nndbVeNXenZfEmb9pXF7//Ty6eF017tjqezahNkzd3V3V1Wczyurn7RTGtq6Y6b8ev9PXm7ixf + ldX1Il+2zd3sB+s6J1DbLcHadt9sXy62S4K6Xayaj0YfLbNFTmjfsjV1v8rrtsibjx794o/afLEq + szZ/Xizf4u91XRCoeduumkd3BYFm9nZajCdlNRlPqzofXxXLWXXVjJd5e9e8Pq+a9u5JndOvP/mF + vCYIjH+6qZbU67RatoTLT9KwiajUxe54B/999EsIo6ymEbT0FTD4/TNC7jybts3zapphCvBpe73C + GF+3dbG8IHiXWbnGBx+GKXrPZoti+TJrmquqptl3XeVTAqkdmnZfNXkt5HbtpIVDaT1ZL9s1v7Ju + 5zToQobxhtsPv7cyOODNy6wos0lRFu3167w9CxDrvhh54aa+ltUyx2uzZfMiW+TPqvrlelIW07OX + m97y3rhtB+Ut5vCK+HXdoPVNpCVOvira+faKkSWGxktV87Ro3gKpTa9WzYxaFYvsgvGSl74Ctw+/ + A+Yi3rqcz5q2qunNT6vsup7+4Pp876fnnw4wGlrf9Xob0wfS45fn53m9qb+vmHNe5/UlteNXeFaa + Of254bWTjKhNTFbKO69/r682td7dH+/sj/e3n795Le1vmsqTNY1+IW2t/A43h5A1LZqv6uKS/rC6 + 77i8DTc8vSYuKKYMAKOffmPv38QiTGwSgSiXyR8W1k1EW+ZXeKspfkB/DTd73WbLWVbPfv/jPW7e + zJ8S8X6v/Ppl1s43vXh3Xi3yu6Jq7o7pvbtQNlVN/c1+/7f5NYsTfUygflJeGYbFTYXBj6fTikDe + RCliaX0hkIg+oNuSSV46ISORFcu8vk3/3nuv8tmayLicXt/Un6X381fM/WTpSWbtrL6s8/Pi3SYA + u2Sz8N/dvX33/k3ovuZWUba6LOp2nZUv8pZU/9uvg8gukz2EcxNCP/ni9M0t0LmJmjx79NaimuHP + s+W0zuFxkCYigYGbA2VB7xDZW7QgrshXbT6jr9tiQZyeLVb08d7O7qfbO/e3d3fe7B482nvwaPf+ + +N7OvXt79z79KWo6W9cq9R+9fLMz3tvZ+3Tn4YPX9A0p3zonhUNfwkR+9ODTbHdy/+Gn2w8mD+5v + 7z84f7A9mc72tz/NZgf79+5N7k8mD+g1Rg0e2EePvveL2eg0q2wKBCMeGbWnGeHfQQ95x/+EXhNf + B0NHc6Ol0HS5Lsvv/xL6j4aRr/LlLF9O2fUiIPJB8yUNjP76f5fr+ZPEAn0OCUlB+N4AxntBWJI4 + LwYX5Pl/1/hfQNf3EXXj+boEGAD8S0b/7+YHaFxRtoHG7w/EDfjrUujWXYFm/++i0sDkuiF+XZoM + AP5/n9z85Bd9LN1ovu7wY1BJqf6S/wdGOchysQ8AAA== + headers: + Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips/operationStatuses/08587387020503770680?api-version=2015-11-01'] + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Length: ['1228'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 18:27:14 GMT'] Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] - Retry-After: ['15'] Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] x-ms-ratelimit-remaining-subscription-writes: ['1199'] - status: {code: 202, message: Accepted} + status: {code: 200, message: OK} - request: body: null headers: @@ -1000,23 +1598,47 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 vmcreationclient/2015-11-01 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses/providers/Microsoft.Resources/deployments/azurecli-test-deployment-vm-list-ips?api-version=2015-11-01 response: - body: {string: ''} + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR8Xs + o0cf3W3Wk2ZaF6u2qJbN3Z3J7vmn+w92t3cn5zvb+7NZtp3l03vb08nDvQd75zsP7z/cuVvnTbWu + p/nndbVeNXenZfEmb9pXF7//Ty6eF017tjqezahNkzd3V3V1Wczyurn7RTGtq6Y6b8ev9PXm7ixf + ldX1Il+2zd3sB+s6J1DbLcHadt9sXy62S4K6Xayaj0YfLbNFTmjfsjV1v8rrtsibjx794o/afLEq + szZ/Xizf4u91XRCoeduumkd3BYFm9nZajCdlNRlPqzofXxXLWXXVjJd5e9e8Pq+a9u5JndOvP/mF + vCYIjH+6qZbU67RatoTLT9KwiajUxe54B/999EsIo6ymEbT0FTD4/TNC7jybts3zapphCvBpe73C + GF+3dbG8IHiXWbnGBx+GKXrPZoti+TJrmquqptl3XeVTAqkdmnZfNXkt5HbtpIVDaT1ZL9s1v7Ju + 5zToQobxhtsPv7cyOODNy6wos0lRFu3167w9CxDrvhh54aa+ltUyx2uzZfMiW+TPqvrlelIW07OX + m97y3rhtB+Ut5vCK+HXdoPVNpCVOvira+faKkSWGxktV87Ro3gKpTa9WzYxaFYvsgvGSl74Ctw+/ + A+Yi3rqcz5q2qunNT6vsup7+4Pp876fnnw4wGlrf9Xob0wfS45fn53m9qb+vmHNe5/UlteNXeFaa + Of254bWTjKhNTFbKO69/r682td7dH+/sj/e3n795Le1vmsqTNY1+IW2t/A43h5A1LZqv6uKS/rC6 + 77i8DTc8vSYuKKYMAKOffmPv38QiTGwSgSiXyR8W1k1EW+ZXeKspfkB/DTd73WbLWVbPfv/jPW7e + zJ8S8X6v/Ppl1s43vXh3Xi3yu6Jq7o7pvbtQNlVN/c1+/7f5NYsTfUygflJeGYbFTYXBj6fTikDe + RCliaX0hkIg+oNuSSV46ISORFcu8vk3/3nuv8tmayLicXt/Un6X381fM/WTpSWbtrL6s8/Pi3SYA + u2Sz8N/dvX33/k3ovuZWUba6LOp2nZUv8pZU/9uvg8gukz2EcxNCP/ni9M0t0LmJmjx79NaimuHP + s+W0zuFxkCYigYGbA2VB7xDZW7QgrshXbT6jr9tiQZyeLVb08d7O7qfbO/e3d3fe7B482nvwaPf+ + +N7OvXt79z79KWo6W9cq9R+9fLMz3tvZ+3Tn4YPX9A0p3zonhUNfwkR+9ODTbHdy/+Gn2w8mD+5v + 7z84f7A9mc72tz/NZgf79+5N7k8mD+g1Rg0e2EePvveL2eg0q2wKBCMeGbWnGeHfQQ95x/+EXhNf + B0NHc6Ol0HS5Lsvv/xL6j4aRr/LlLF9O2fUiIPJB8yUNjP76f5fr+ZPEAn0OCUlB+N4AxntBWJI4 + LwYX5Pl/1/hfQNf3EXXj+boEGAD8S0b/7+YHaFxRtoHG7w/EDfjrUujWXYFm/++i0sDkuiF+XZoM + AP5/n9z85Bd9LN1ovu7wY1BJqf6S/wdGOchysQ8AAA== headers: Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:23:27 GMT'] + Content-Encoding: [gzip] + Content-Length: ['1228'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 18:27:15 GMT'] Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] - Retry-After: ['15'] Strict-Transport-Security: [max-age=31536000; includeSubDomains] - status: {code: 202, message: Accepted} + Vary: [Accept-Encoding] + status: {code: 200, message: OK} - request: body: null headers: @@ -1024,23 +1646,133 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 networkmanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/publicIPAddresses?api-version=2015-06-15 response: - body: {string: ''} + body: + string: !!binary | + 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 + /wCfp29SVHIAAA== headers: Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:23:42 GMT'] + Content-Encoding: [gzip] + Content-Length: ['5995'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 18:27:16 GMT'] Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] - Retry-After: ['15'] Strict-Transport-Security: [max-age=31536000; includeSubDomains] - status: {code: 202, message: Accepted} + Vary: [Accept-Encoding] + x-ms-original-request-ids: [865e5d66-e928-4b47-89dc-2a43cd36b3d0, deb050f7-3dec-4960-acdd-141acefc9e7d, + cf12b181-e3e5-4ebd-ae13-e67e638027f3] + status: {code: 200, message: OK} - request: body: null headers: @@ -1048,46 +1780,231 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 + User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 networkmanagementclient/2015-06-15 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/networkInterfaces?api-version=2015-06-15 response: - body: {string: ''} + body: + string: !!binary | + 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 headers: Cache-Control: [no-cache] - Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:23:57 GMT'] + Content-Encoding: [gzip] + Content-Length: ['10179'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 10 May 2016 18:27:18 GMT'] Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] - Retry-After: ['15'] Strict-Transport-Security: [max-age=31536000; includeSubDomains] - status: {code: 202, message: Accepted} + Vary: [Accept-Encoding] + x-ms-original-request-ids: [345ed5d3-4520-4c67-b1bb-4f91a33ecbb8, a1c41c2e-af52-41e9-bef4-bf89613fcccf, + 8069d0ce-b562-4298-85cd-4eebae08dc05] + status: {code: 200, message: OK} - request: body: null headers: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] + Content-Length: ['0'] Content-Type: [application/json; charset=utf-8] User-Agent: [python/3.5.1 requests/2.9.1 msrest/0.2.0 msrest_azure/0.2.1 resourcemanagementclient/2015-11-01 Azure-SDK-For-Python AZURECLI_0.0.32] accept-language: [en-US] - method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01 + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cliTestRg_VmListIpAddresses?api-version=2015-11-01 response: body: {string: ''} headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:24:12 GMT'] + Date: ['Tue, 10 May 2016 18:27:19 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] Retry-After: ['15'] Strict-Transport-Security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] status: {code: 202, message: Accepted} - request: body: null @@ -1106,7 +2023,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:24:27 GMT'] + Date: ['Tue, 10 May 2016 18:27:34 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1130,7 +2047,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:24:43 GMT'] + Date: ['Tue, 10 May 2016 18:27:49 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1154,7 +2071,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:24:58 GMT'] + Date: ['Tue, 10 May 2016 18:28:04 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1178,7 +2095,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:25:14 GMT'] + Date: ['Tue, 10 May 2016 18:28:20 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1202,7 +2119,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:25:28 GMT'] + Date: ['Tue, 10 May 2016 18:28:35 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1226,7 +2143,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:25:43 GMT'] + Date: ['Tue, 10 May 2016 18:28:51 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1250,7 +2167,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:25:59 GMT'] + Date: ['Tue, 10 May 2016 18:29:06 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1274,7 +2191,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:26:14 GMT'] + Date: ['Tue, 10 May 2016 18:29:22 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1298,7 +2215,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:26:29 GMT'] + Date: ['Tue, 10 May 2016 18:29:38 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1322,7 +2239,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:26:45 GMT'] + Date: ['Tue, 10 May 2016 18:29:53 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1346,7 +2263,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:27:00 GMT'] + Date: ['Tue, 10 May 2016 18:30:09 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1370,7 +2287,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:27:16 GMT'] + Date: ['Tue, 10 May 2016 18:30:25 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1394,7 +2311,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:27:31 GMT'] + Date: ['Tue, 10 May 2016 18:30:40 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1418,7 +2335,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:27:46 GMT'] + Date: ['Tue, 10 May 2016 18:30:54 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1442,7 +2359,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:28:01 GMT'] + Date: ['Tue, 10 May 2016 18:31:10 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1466,7 +2383,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:28:17 GMT'] + Date: ['Tue, 10 May 2016 18:31:25 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1490,7 +2407,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:28:32 GMT'] + Date: ['Tue, 10 May 2016 18:31:41 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1514,7 +2431,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:28:48 GMT'] + Date: ['Tue, 10 May 2016 18:31:56 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1538,7 +2455,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:29:03 GMT'] + Date: ['Tue, 10 May 2016 18:32:12 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1562,7 +2479,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:29:18 GMT'] + Date: ['Tue, 10 May 2016 18:32:26 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1586,7 +2503,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:29:33 GMT'] + Date: ['Tue, 10 May 2016 18:32:42 GMT'] Expires: ['-1'] Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUUkc6NUZWTUxJU1RJUEFERFJFU1NFUy1XRVNUVVMiLCJqb2JMb2NhdGlvbiI6Indlc3R1cyJ9?api-version=2015-11-01'] Pragma: [no-cache] @@ -1610,7 +2527,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Fri, 06 May 2016 22:29:49 GMT'] + Date: ['Tue, 10 May 2016 18:32:57 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_usage_list_westus.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_usage_list_westus.yaml index a217abbeaf8..0d787b96373 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_usage_list_westus.yaml +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_usage_list_westus.yaml @@ -16,17 +16,17 @@ interactions: string: !!binary | H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk - 6UeXWbnOP3qUfg9/pSl/iOej9bJo6fOPTqr1sv1oZD+frus6X7Y/qe/tuG/KYsGv7O3seJ8uswXa - WcD0kenzo+wyK8psUpRFe/06bxvXDbUqq2lWFj/IZ6arj4695im3N81/ifzyS/R929ltR/HAfWNG - sXvbQUyrOr8J8zdVm5Xpq/yiqJb0ywm/Yt74UOTvu2885G+L/mVRt+us/CKbzoslYWXfokb9gfyk - tE5tc9P6QwfhYWsGcd/77PYjeE0o58wc9m1qfONIUn7vm+WqXfeNGRNNjPtw06CaNlvOsnr29Fm2 - KMpr1wk16g/mtbZOn6bS/htmsU/dN197JMc7v//xA8HOdUQNN4zmeGf7+MHmEeHH93/j5Jf8Pwv7 - HijOBAAA + 6UeXWbnOP3qUfg9/pSl/iOej9bJo6fOPTqr1sv1oZD+frus6X7Y/qe/tuW/KYsGv7O3s7LhPl9kC + 7Sxg+sj0+VF2mRVlNinKor1+nbeN64ZaldU0K4sf5DPT1UfHXvOU25vmv0R++SX6vu3stqPYv+e+ + MsPYve0oplWd34T6m6rNyvRVflFUS/rlhF8xb3wo9nv77isP+9vif1nU7Torv8im82JJaNm3qFF/ + JD8prVPb3LT+0FF42JpB3Pc+u/0IXhPKObOHfZsa3ziSlN/7Zvlq131jxkQT4z7cNKimzZazrJ49 + fZYtivLadUKN+oN5ra3Tp6m0/4Z5bN/D+msP5Xjn9z9+IOi5nqjhhuEc72wfP/jZGVJEdd16RJOs + KabHgpbrgVr0h/IETdPjzWPAj+//xskv+X8AlW6HPZUFAAA= headers: Cache-Control: [no-cache] Content-Encoding: [gzip] Content-Type: [application/json; charset=utf-8] - Date: ['Thu, 07 Apr 2016 22:03:08 GMT'] + Date: ['Tue, 10 May 2016 18:33:29 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_vm_image.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_vm_image.py index ff864b2e2b8..ded79324f4e 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_vm_image.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_vm_image.py @@ -4,7 +4,6 @@ from azure.cli.command_modules.vm.generated import ConvenienceVmCommands - class TestVMImage(unittest.TestCase): @mock.patch('azure.cli.command_modules.vm.custom.urlopen', autospec=True) def test_read_images_from_alias_doc(self, mock_urlopen): @@ -18,7 +17,7 @@ def test_read_images_from_alias_doc(self, mock_urlopen): mock_urlopen.return_value = mock_read #action - images = ConvenienceVmCommands(None).list_vm_images() + images = ConvenienceVmCommands().list_vm_images() #assert win_images = [i for i in images if i['publisher'] == 'MicrosoftWindowsServer'] diff --git a/testall.bat b/testall.bat index 9b9e522a1b6..198c584060e 100644 --- a/testall.bat +++ b/testall.bat @@ -1,4 +1,4 @@ @echo off cls -python -m unittest discover -s src/azure/cli/tests +python -m unittest discover -s src/azure/cli/tests --buffer python scripts/command_modules/test.py \ No newline at end of file