diff --git a/packaged_releases/debian/debian_build.sh b/packaged_releases/debian/debian_build.sh old mode 100644 new mode 100755 index 1d59a1ffd40..be072977e72 --- a/packaged_releases/debian/debian_build.sh +++ b/packaged_releases/debian/debian_build.sh @@ -7,7 +7,6 @@ set -ex : "${CLI_VERSION:?CLI_VERSION environment variable not set.}" -: "${CLI_DOWNLOAD_SHA256:?CLI_DOWNLOAD_SHA256 environment variable not set.}" : "${BUILD_ARTIFACT_DIR:?BUILD_ARTIFACT_DIR environment variable not set.}" if [ -z "$1" ] @@ -16,6 +15,12 @@ if [ -z "$1" ] exit 1 fi +local_repo=$2 +if [ -z "$local_repo" ] + then + : "${CLI_DOWNLOAD_SHA256:?CLI_DOWNLOAD_SHA256 environment variable not set.}" +fi + sudo apt-get update debian_directory_creator=$1 @@ -23,17 +28,34 @@ debian_directory_creator=$1 # Install dependencies for the build sudo apt-get install -y libssl-dev libffi-dev python3-dev debhelper # Download, Extract, Patch, Build CLI +tmp_pkg_dir=$(mktemp -d) working_dir=$(mktemp -d) -source_archive=$working_dir/azure-cli-${CLI_VERSION}.tar.gz -source_dir=$working_dir/azure-cli-${CLI_VERSION} cd $working_dir -wget https://azurecliprod.blob.core.windows.net/releases/azure-cli_packaged_${CLI_VERSION}.tar.gz -qO $source_archive -echo "$CLI_DOWNLOAD_SHA256 $source_archive" | sha256sum -c - -mkdir $source_dir -# Extract archive -archive_extract_dir=$(mktemp -d) -tar -xvzf $source_archive -C $archive_extract_dir -cp -r $archive_extract_dir/azure-cli_packaged_${CLI_VERSION}/* $source_dir +if [ -z "$local_repo" ] + then + source_archive=$working_dir/azure-cli-${CLI_VERSION}.tar.gz + source_dir=$working_dir/azure-cli-${CLI_VERSION} + deb_file=$working_dir/azure-cli_${CLI_VERSION}-1_all.deb + az_completion_file=$source_dir/az.completion + wget https://azurecliprod.blob.core.windows.net/releases/azure-cli_packaged_${CLI_VERSION}.tar.gz -qO $source_archive + echo "$CLI_DOWNLOAD_SHA256 $source_archive" | sha256sum -c - + mkdir $source_dir + # Extract archive + archive_extract_dir=$(mktemp -d) + tar -xvzf $source_archive -C $archive_extract_dir + cp -r $archive_extract_dir/azure-cli_packaged_${CLI_VERSION}/* $source_dir + else + source_dir=$local_repo + deb_file=$local_repo/../azure-cli_${CLI_VERSION}-1_all.deb + az_completion_file=$source_dir/packaged_releases/az.completion + # clean up old build output + if [ -d "$source_dir/debian" ] + then + rm -rf $source_dir/debian + fi + cp $local_repo/privates/*.whl $tmp_pkg_dir +fi + # Build Python from source and include python_dir=$(mktemp -d) python_archive=$(mktemp) @@ -47,7 +69,6 @@ make # required to run the 'make install' sudo apt-get install -y zlib1g-dev make install -tmp_pkg_dir=$(mktemp -d) # note: This installation step could happen in debian/rules but was unable to escape $ char. # It does not affect the built .deb file though. @@ -63,11 +84,11 @@ mkdir $source_dir/debian # Create temp dir for the debian/ directory used for CLI build. cli_debian_dir_tmp=$(mktemp -d) -$debian_directory_creator $cli_debian_dir_tmp $source_dir/az.completion $source_dir +$debian_directory_creator $cli_debian_dir_tmp $az_completion_file $source_dir cp -r $cli_debian_dir_tmp/* $source_dir/debian cd $source_dir dpkg-buildpackage -us -uc echo "The archive is available at $working_dir/azure-cli_${CLI_VERSION}-1_all.deb" -cp $working_dir/azure-cli_${CLI_VERSION}-1_all.deb ${BUILD_ARTIFACT_DIR} +cp $deb_file ${BUILD_ARTIFACT_DIR} echo "The archive has also been copied to ${BUILD_ARTIFACT_DIR}" echo "Done." diff --git a/packaged_releases/debian/debian_dir_creator.sh b/packaged_releases/debian/debian_dir_creator.sh old mode 100644 new mode 100755 diff --git a/packaged_releases/windows/scripts/build-packages.py b/packaged_releases/windows/scripts/build-packages.py new file mode 100644 index 00000000000..e823e6f39c4 --- /dev/null +++ b/packaged_releases/windows/scripts/build-packages.py @@ -0,0 +1,66 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +""" +Script to build all command modules that can be used to install a fully self-contained instance of the CLI. +""" + +from __future__ import print_function + +import glob +import os +import sys +import tempfile +import subprocess + +def _error_exit(msg): + print('ERROR: '+msg, file=sys.stderr) + sys.exit(1) + +def _print_status(msg=''): + print('-- '+msg) + +def _get_tmp_dir(): + return tempfile.mkdtemp() + +def _get_tmp_file(): + return tempfile.mkstemp()[1] + +def _exec_command(command_list, cwd=None, stdout=None): + """Returns True in the command was executed successfully""" + try: + _print_status('Executing {}'.format(command_list)) + subprocess.check_call(command_list, stdout=stdout, cwd=cwd) + return True + except subprocess.CalledProcessError as err: + print(err, file=sys.stderr) + return False + +def _build_package(path_to_package, dist_dir): + cmd_success = _exec_command(['python', 'setup.py', 'bdist_wheel', '-d', dist_dir], cwd=path_to_package) + if not cmd_success: + _error_exit('Error building {}.'.format(path_to_package)) + +def build_packages(clone_root, dist_dir): + packages_to_build = [ + os.path.join(clone_root, 'src', 'azure-cli'), + os.path.join(clone_root, 'src', 'azure-cli-core'), + os.path.join(clone_root, 'src', 'azure-cli-nspkg'), + os.path.join(clone_root, 'src', 'azure-cli-command_modules-nspkg'), + ] + + packages_to_build.extend(glob.glob(os.path.join(clone_root, 'src', 'command_modules', 'azure-cli-*'))) + for p in packages_to_build: + if os.path.isfile(os.path.join(p, 'setup.py')): + _build_package(p, dist_dir) + +if __name__ == '__main__': + if len(sys.argv) == 1: + raise ValueError('Please provide temporary path for local built packages') + dist_dir = sys.argv[1] + clone_root = sys.argv[2] + build_packages(clone_root, dist_dir) + print("package were built to {}".format(dist_dir)) + print("Done.") diff --git a/packaged_releases/windows/scripts/build_local.cmd b/packaged_releases/windows/scripts/build_local.cmd new file mode 100644 index 00000000000..b60f31cfdbf --- /dev/null +++ b/packaged_releases/windows/scripts/build_local.cmd @@ -0,0 +1,121 @@ +@echo off +SetLocal EnableDelayedExpansion +echo build a msi installer using local cli sources and python executables. You need to have curl.exe, unzip.exe and msbuild.exe available under PATH +echo. + +set "PATH=%PATH%;%ProgramFiles%\Git\bin;%ProgramFiles%\Git\usr\bin" + +if "%CLIVERSION%"=="" ( + echo Please set the CLIVERSION environment variable, e.g. 2.0.13 + goto ERROR +) +set PYTHON_VERSION=3.6.1 + +set WIX_DOWNLOAD_URL="https://azurecliprod.blob.core.windows.net/msi/wix310-binaries-mirror.zip" + +:: Set up the output directory and temp. directories +echo Cleaning previous build artifacts... +set OUTPUT_DIR=%~dp0..\out +if exist %OUTPUT_DIR% rmdir /s /q %OUTPUT_DIR% +mkdir %OUTPUT_DIR% + +set TEMP_SCRATCH_FOLDER=%HOMEDRIVE%%HOMEPATH%\zcli_scratch +set BUILDING_DIR=%HOMEDRIVE%%HOMEPATH%\zcli +set WIX_DIR=%HOMEDRIVE%%HOMEPATH%\zwix +set REPO_ROOT=%~dp0..\..\.. + +:: look for python 3.x so we can build into the installer +if not "%1"=="" ( + set PYTHON_DIR=%1 + set PYTHON_EXE=%1\python.exe + goto PYTHON_FOUND +) + +FOR /f %%i IN ('where python') DO ( + set PY_FILE_DRIVE=%%~di + set PY_FILE_PATH=%%~pi + set PY_FILE_NAME=%%~ni + set PYTHON_EXE=!PY_FILE_DRIVE!!PY_FILE_PATH!!PY_FILE_NAME!.exe + set PYTHON_DIR=!PY_FILE_DRIVE!!PY_FILE_PATH! + FOR /F "delims=" %%j IN ('!PYTHON_EXE! --version') DO ( + set PYTHON_VER=%%j + echo.!PYTHON_VER!|findstr /C:"%PYTHON_VERSION%" >nul 2>&1 + if not errorlevel 1 ( + goto PYTHON_FOUND + ) + ) +) +echo python %PYTHON_VERSION% is needed to create installer. +exit /b 1 +:PYTHON_FOUND +echo Python Executables: %PYTHON_DIR%, %PYTHON_EXE% + +::reset working folders +if exist %BUILDING_DIR% rmdir /s /q %BUILDING_DIR% +::rmdir always returns 0, so check folder's existence +if exist %BUILDING_DIR% ( + echo Failed to delete %BUILDING_DIR%. + goto ERROR +) +mkdir %BUILDING_DIR% + +if exist %TEMP_SCRATCH_FOLDER% rmdir /s /q %TEMP_SCRATCH_FOLDER% +if exist %TEMP_SCRATCH_FOLDER% ( + echo Failed to delete %TEMP_SCRATCH_FOLDER%. + goto ERROR +) +mkdir %TEMP_SCRATCH_FOLDER% + +copy %REPO_ROOT%\privates\*.whl %TEMP_SCRATCH_FOLDER% + +::ensure wix is available +if exist %WIX_DIR% ( + echo Using existing Wix at %WIX_DIR% +) +if not exist %WIX_DIR% ( + mkdir %WIX_DIR% + pushd %WIX_DIR% + echo Downloading Wix. + curl -o wix-archive.zip %WIX_DOWNLOAD_URL% -k + unzip -q wix-archive.zip + if %errorlevel% neq 0 goto ERROR + del wix-archive.zip + echo Wix downloaded and extracted successfully. + popd +) + +:: Use the Python version on the machine that creates the MSI +robocopy %PYTHON_DIR% %BUILDING_DIR% /s /NFL /NDL + +:: Build & install all the packages with bdist_wheel +%BUILDING_DIR%\python %~dp0build-packages.py %TEMP_SCRATCH_FOLDER% %REPO_ROOT% +if %errorlevel% neq 0 goto ERROR +:: Install them to the temp folder so to be packaged +%BUILDING_DIR%\python.exe -m pip install -f %TEMP_SCRATCH_FOLDER% --no-cache-dir azure-cli +%BUILDING_DIR%\python.exe -m pip install --force-reinstall --upgrade azure-nspkg azure-mgmt-nspkg + +echo Creating the wbin (Windows binaries) folder that will be added to the path... +mkdir %BUILDING_DIR%\wbin +copy %REPO_ROOT%\packaged_releases\windows\scripts\az.cmd %BUILDING_DIR%\wbin\ +if %errorlevel% neq 0 goto ERROR +copy %REPO_ROOT%\packaged_releases\windows\resources\CLI_LICENSE.rtf %BUILDING_DIR% +copy %REPO_ROOT%\packaged_releases\windows\resources\ThirdPartyNotices.txt %BUILDING_DIR% +del %BUILDING_DIR%\Scripts\pip.exe +del %BUILDING_DIR%\Scripts\pip3.exe +del %BUILDING_DIR%\Scripts\pip3.6.exe +if %errorlevel% neq 0 goto ERROR + +echo Building MSI... +msbuild /t:rebuild /p:Configuration=Release %REPO_ROOT%\packaged_releases\windows\azure-cli.wixproj + +start %OUTPUT_DIR% + +goto END + +:ERROR +echo Error occurred, please check the output for details. +exit /b 1 + +:END +exit /b 0 +popd diff --git a/packaged_releases/windows/scripts/prepareBuild.cmd b/packaged_releases/windows/scripts/prepareBuild.cmd index 2d0e105a328..5b729b7fed3 100644 --- a/packaged_releases/windows/scripts/prepareBuild.cmd +++ b/packaged_releases/windows/scripts/prepareBuild.cmd @@ -10,6 +10,7 @@ if "%CLIVERSION%"=="" ( goto ERROR ) +::when change to a later version, please update ones in build_local.cmd set PYTHON_VERSION=3.6.1 pushd %~dp0..\ diff --git a/src/azure-cli-core/azure/cli/core/commands/parameters.py b/src/azure-cli-core/azure/cli/core/commands/parameters.py index af98ccf3cd3..686a30fba29 100644 --- a/src/azure-cli-core/azure/cli/core/commands/parameters.py +++ b/src/azure-cli-core/azure/cli/core/commands/parameters.py @@ -225,6 +225,20 @@ def __call__(self, parser, namespace, values, option_string=None): action='store_true' ) +zones_type = CliArgumentType( + options_list=['--zones', '-z'], + nargs='+', + help='Space separated list of availability zones into which to provision the resource.', + choices=['1', '2', '3'] +) + +zone_type = CliArgumentType( + options_list=['--zone', '-z'], + help='Availability zone into which to provision the resource.', + choices=['1', '2', '3'], + nargs=1 +) + register_cli_argument('', 'resource_group_name', resource_group_name_type) register_cli_argument('', 'location', location_type) register_cli_argument('', 'deployment_name', deployment_name_type) diff --git a/src/azure-cli-core/azure/cli/core/profiles/_shared.py b/src/azure-cli-core/azure/cli/core/profiles/_shared.py index 3750bfe8ed4..d9ea2afb9ac 100644 --- a/src/azure-cli-core/azure/cli/core/profiles/_shared.py +++ b/src/azure-cli-core/azure/cli/core/profiles/_shared.py @@ -28,7 +28,7 @@ class ResourceType(Enum): # pylint: disable=too-few-public-methods MGMT_STORAGE = ('azure.mgmt.storage', 'StorageManagementClient') - MGMT_COMPUTE = ('azure.mgmt.compute.compute', + MGMT_COMPUTE = ('azure.mgmt.compute', 'ComputeManagementClient') MGMT_NETWORK = ('azure.mgmt.network', 'NetworkManagementClient') diff --git a/src/command_modules/azure-cli-acs/setup.py b/src/command_modules/azure-cli-acs/setup.py index f441afebe05..91af61d12f9 100644 --- a/src/command_modules/azure-cli-acs/setup.py +++ b/src/command_modules/azure-cli-acs/setup.py @@ -31,7 +31,7 @@ DEPENDENCIES = [ 'azure-mgmt-authorization==0.30.0', - 'azure-mgmt-compute==2.1.0', + 'azure-mgmt-compute==3.0.0rc1', 'azure-mgmt-containerservice==1.0.0', 'azure-graphrbac==0.31.0', 'azure-cli-core', diff --git a/src/command_modules/azure-cli-network/HISTORY.rst b/src/command_modules/azure-cli-network/HISTORY.rst index 882d6d7b2de..b0047fcfbc3 100644 --- a/src/command_modules/azure-cli-network/HISTORY.rst +++ b/src/command_modules/azure-cli-network/HISTORY.rst @@ -5,6 +5,7 @@ Release History unreleased +++++++++++++++++++ +* `lb/public-ip`: Add availability zone support. * `express-route`: Add support for IPv6 Microsoft Peering * Add `asg` application security group commands. * `nic create`: Added `--application-security-groups` support. diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_help.py b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_help.py index 5d46996cf65..8a489e95233 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_help.py +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_help.py @@ -908,6 +908,12 @@ - name: Create a load balancer on a specific virtual network and subnet. text: > az network lb create -g MyResourceGroup -n MyLb --vnet-name MyVnet --subnet MySubnet + - name: create a zone flavored public facing load balancer through provisioning a zonal public ip + text: > + az network lb create -g MyResourceGroup -n myLB --public-ip-zone 2 + - name: create a zone flavored internal facing load balancer through provisioning a zonal frontend ip configuration + text: > + az network lb create -g MyResourceGroup -n myLB --frontend-ip-zone 1 -vnet-name MyVnet --subnet MySubnet """ helps['network lb delete'] = """ @@ -1418,6 +1424,9 @@ - name: Create a static public IP resource for a DNS name label. text: > az network public-ip create -g MyResourceGroup -n MyIp --dns-name MyLabel --allocation-method Static + - name: Create a public IP resource in an availability zone in the current resource group's region. + text: > + az network public-ip create -g MyResourceGroup -n MyIp --zone 2 """ helps['network public-ip delete'] = """ @@ -1778,27 +1787,71 @@ helps['network vnet peering create'] = """ type: command short-summary: Create a peering. + examples: + - name: Create a virtual network peering between virtual networks in the same region + text: > + az network vnet create --name myVnet1 --resource-group myResourceGroup --location eastus --address-prefix 10.0.0.0/16 + \\n\\n az network vnet create --name myVnet2 --resource-group myResourceGroup --location eastus --address-prefix 10.1.0.0/16 + \\n\\n vnet1Id=$(az network vnet show --resource-group myResourceGroup--name myVnet1 --query id --out tsv) + \\n\\n vnet2Id=$(az network vnet show --resource-group myResourceGroup --name myVnet2 --query id --out tsv) + \\n\\n az network vnet peering create --name myVnet1ToMyVnet2 --resource-group myResourceGroup --vnet-name myVnet1 --remote-vnet-id $vnet2Id --allow-vnet-access + \\n\\n az network vnet peering create --name myVnet2ToMyVnet1 --resource-group myResourceGroup --vnet-name myVnet2 --remote-vnet-id $vnet1Id --allow-vnet-access + + - name: Create a virtual network peering between virtual networks in different regions + text: > + az network vnet create --name myVnet1 --resource-group myResourceGroup --location westcentralus --address-prefix 10.0.0.0/16 + \\n\\n az network vnet create --name myVnet2 --resource-group myResourceGroup --location canadacentral --address-prefix 10.2.0.0/16 + \\n\\n vnet1Id=$(az network vnet show --resource-group myResourceGroup--name myVnet1 --query id --out tsv) + \\n\\n vnet2Id=$(az network vnet show --resource-group myResourceGroup --name myVnet2 --query id --out tsv) + \\n\\n az network vnet peering create --name myVnet1ToMyVnet2 --resource-group myResourceGroup --vnet-name myVnet1 --remote-vnet-id $vnet2Id --allow-vnet-access + \\n\\n az network vnet peering create --name myVnet2ToMyVnet1 --resource-group myResourceGroup --vnet-name myVnet2 --remote-vnet-id $vnet1Id --allow-vnet-access """ helps['network vnet peering delete'] = """ type: command short-summary: Delete a peering. + examples: + - name: Delete a virtual network peering + text: > + az network vnet peering delete --name myVnet1toMyVnet2 --resource-group myResourceGroup --vnet-name myVnet1 """ helps['network vnet peering list'] = """ type: command short-summary: List peerings. + examples: + - name: List all peerings of a specified virtual network + text: > + az network vnet peering list --resource-group myResourceGroup --vnet-name myVnet1 """ helps['network vnet peering show'] = """ type: command - short-summary: Get the details of a peering. -""" + short-summary: Show details of a peering. + examples: + - name: Show all details of the specified virtual network peering. + text: > + az network vnet peering show --name myVnet1toMyVnet2 --resource-group myResourceGroup --vnet-name myVnet1 + """ helps['network vnet peering update'] = """ type: command short-summary: Update a peering. + examples: + - name: Change forwarded traffic configuration of a virtual network peering + text: > + az network vnet peering update ---name myVnet1toMyVnet2 --resource-group myResourceGroup --vnet-name myVnet1 --set allowForwardedTraffic==true + - name: Change virtual network access of a virtual network peering + text: > + az network vnet peering update ---name myVnet1toMyVnet2 --resource-group myResourceGroup --vnet-name myVnet1 --set allowVirtualNetworkAccess==true + - name: Change gateway transit property configuration of a virtual network peering + text: > + az network vnet peering update ---name myVnet1toMyVnet2 --resource-group myResourceGroup --vnet-name myVnet1 --set allowGatewayTransit==true + - name: Use remote gateways in virtual network peering + text: > + az network vnet peering update ---name myVnet1toMyVnet2 --resource-group myResourceGroup --vnet-name myVnet1 --set useRemoteGateways==true """ + # endregion # region VPN Connection 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 index ab3507159a7..b2b207a67f8 100644 --- 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 @@ -11,7 +11,7 @@ from azure.cli.core.commands.parameters import (location_type, get_resource_name_completion_list, enum_choice_list, tags_type, ignore_type, file_type, get_resource_group_completion_list, - three_state_flag, model_choice_list) + three_state_flag, model_choice_list, zone_type) from azure.cli.core.commands.validators import get_default_location_from_resource_group from azure.cli.core.commands.template_create import get_folded_parameter_help_string from azure.cli.command_modules.network._client_factory import _network_client_factory @@ -490,6 +490,12 @@ def completer(prefix, action, parsed_args, **kwargs): # pylint: disable=unused- register_cli_argument('network public-ip create', 'dns_name', validator=process_public_ip_create_namespace) register_cli_argument('network public-ip create', 'dns_name_type', ignore_type) +with VersionConstraint(ResourceType.MGMT_NETWORK, min_api='2017-06-01') as c: + c.register_cli_argument('network public-ip', 'zone', zone_type) + c.register_cli_argument('network lb create', 'frontend_ip_zone', CliArgumentType(overrides=zone_type, options_list=('--frontend-ip-zone'), help='used to create internal facing Load balancer')) + c.register_cli_argument('network lb create', 'public_ip_zone', CliArgumentType(overrides=zone_type, options_list=('--public-ip-zone'), help='used to created a new public ip for the load balancer, a.k.a public facing Load balancer')) + c.register_cli_argument('network lb frontend-ip', 'zone', zone_type) + for item in ['create', 'update']: register_cli_argument('network public-ip {}'.format(item), 'allocation_method', help='IP address allocation method', **enum_choice_list(IPAllocationMethod)) if supported_api_version(ResourceType.MGMT_NETWORK, min_api='2016-09-01'): diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_template_builder.py b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_template_builder.py index 361e9307105..ab59f30a7a1 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_template_builder.py +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/_template_builder.py @@ -63,7 +63,7 @@ def build(self): def _build_frontend_ip_config(name, public_ip_id=None, subnet_id=None, private_ip_address=None, - private_ip_allocation=None): + private_ip_allocation=None, zone=None): frontend_ip_config = { 'name': name } @@ -82,6 +82,10 @@ def _build_frontend_ip_config(name, public_ip_id=None, subnet_id=None, private_i 'subnet': {'id': subnet_id} } }) + + if zone and supported_api_version(ResourceType.MGMT_NETWORK, min_api='2017-06-01'): + frontend_ip_config['zones'] = zone + return frontend_ip_config @@ -207,9 +211,9 @@ def _ag_subresource_id(_type, name): def build_load_balancer_resource(name, location, tags, backend_pool_name, frontend_ip_name, public_ip_id, subnet_id, - private_ip_address, private_ip_allocation, sku): + private_ip_address, private_ip_allocation, sku, frontend_ip_zone): frontend_ip_config = _build_frontend_ip_config(frontend_ip_name, public_ip_id, subnet_id, private_ip_address, - private_ip_allocation) + private_ip_allocation, frontend_ip_zone) lb_properties = { 'backendAddressPools': [ @@ -233,7 +237,7 @@ def build_load_balancer_resource(name, location, tags, backend_pool_name, fronte return lb -def build_public_ip_resource(name, location, tags, address_allocation, dns_name, sku): +def build_public_ip_resource(name, location, tags, address_allocation, dns_name, sku, zone): public_ip_properties = {'publicIPAllocationMethod': address_allocation} if dns_name: @@ -250,6 +254,8 @@ def build_public_ip_resource(name, location, tags, address_allocation, dns_name, } if sku and supported_api_version(ResourceType.MGMT_NETWORK, min_api='2017-08-01'): public_ip['sku'] = {'name': sku} + if zone and supported_api_version(ResourceType.MGMT_NETWORK, min_api='2017-06-01'): + public_ip['zones'] = zone return public_ip diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/commands.py b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/commands.py index d1d8a088004..f002a2b2b47 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/commands.py +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/commands.py @@ -316,10 +316,13 @@ def _make_singular(value): cli_command(__name__, 'network watcher troubleshooting show', custom_path + 'show_nw_troubleshooting_result', cf_network_watcher) # PublicIPAddressesOperations +public_ip_show_table_transform = '{Name:name, ResourceGroup:resourceGroup, Location:location, $zone$AddressVersion:publicIpAddressVersion, AllocationMethod:publicIpAllocationMethod, IdleTimeoutInMinutes:idleTimeoutInMinutes, ProvisioningState:provisioningState}' +public_ip_show_table_transform = public_ip_show_table_transform.replace('$zone$', 'Zones: (!zones && \' \') || join(` `, zones), ' if supported_api_version(ResourceType.MGMT_NETWORK, min_api='2017-06-01') else ' ') + public_ip_path = 'azure.mgmt.network.operations.public_ip_addresses_operations#PublicIPAddressesOperations.' cli_command(__name__, 'network public-ip delete', public_ip_path + 'delete', cf_public_ip_addresses) -cli_command(__name__, 'network public-ip show', public_ip_path + 'get', cf_public_ip_addresses, exception_handler=empty_on_404) -cli_command(__name__, 'network public-ip list', custom_path + 'list_public_ips') +cli_command(__name__, 'network public-ip show', public_ip_path + 'get', cf_public_ip_addresses, exception_handler=empty_on_404, table_transformer=public_ip_show_table_transform) +cli_command(__name__, 'network public-ip list', custom_path + 'list_public_ips', table_transformer='[].' + public_ip_show_table_transform) cli_command(__name__, 'network public-ip create', custom_path + 'create_public_ip', transform=transform_public_ip_create_output) cli_generic_update_command(__name__, 'network public-ip update', public_ip_path + 'get', public_ip_path + 'create_or_update', cf_public_ip_addresses, custom_function_op=custom_path + 'update_public_ip') 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 index 200cde25cd8..026cabcd26f 100644 --- 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 @@ -202,8 +202,7 @@ def create_application_gateway(application_gateway_name, resource_group_name, lo master_template.add_resource(build_public_ip_resource(public_ip_address, location, tags, public_ip_address_allocation, - None, - None)) + None, None, None)) public_ip_id = '{}/publicIPAddresses/{}'.format(network_id_template, public_ip_address) @@ -878,7 +877,7 @@ def create_load_balancer(load_balancer_name, resource_group_name, location=None, public_ip_dns_name=None, subnet=None, subnet_address_prefix='10.0.0.0/24', virtual_network_name=None, vnet_address_prefix='10.0.0.0/16', public_ip_address_type=None, subnet_type=None, validate=False, - no_wait=False, sku=None): + no_wait=False, sku=None, frontend_ip_zone=None, public_ip_zone=None): from azure.cli.core.util import random_string from azure.cli.command_modules.network._template_builder import \ (ArmTemplateBuilder, build_load_balancer_resource, build_public_ip_resource, @@ -921,13 +920,14 @@ def create_load_balancer(load_balancer_name, resource_group_name, location=None, tags, public_ip_address_allocation, public_ip_dns_name, - sku)) + sku, public_ip_zone)) public_ip_id = '{}/publicIPAddresses/{}'.format(network_id_template, public_ip_address) load_balancer_resource = build_load_balancer_resource( load_balancer_name, location, tags, backend_pool_name, frontend_ip_name, - public_ip_id, subnet_id, private_ip_address, private_ip_allocation, sku) + public_ip_id, subnet_id, private_ip_address, private_ip_allocation, sku, + frontend_ip_zone) load_balancer_resource['dependsOn'] = lb_dependencies master_template.add_resource(load_balancer_resource) master_template.add_output('loadBalancer', load_balancer_name, output_type='object') @@ -1022,7 +1022,7 @@ def set_lb_inbound_nat_pool( def create_lb_frontend_ip_configuration( resource_group_name, load_balancer_name, item_name, public_ip_address=None, subnet=None, virtual_network_name=None, private_ip_address=None, - private_ip_address_allocation='dynamic'): + private_ip_address_allocation='dynamic', zone=None): ncf = _network_client_factory() lb = ncf.load_balancers.get(resource_group_name, load_balancer_name) new_config = FrontendIPConfiguration( @@ -1031,6 +1031,10 @@ def create_lb_frontend_ip_configuration( private_ip_allocation_method=private_ip_address_allocation, public_ip_address=PublicIPAddress(public_ip_address) if public_ip_address else None, subnet=Subnet(subnet) if subnet else None) + + if zone and supported_api_version(ResourceType.MGMT_NETWORK, min_api='2017-06-01'): + new_config.zones = zone + _upsert(lb, 'frontend_ip_configurations', new_config, 'name') poller = ncf.load_balancers.create_or_update(resource_group_name, load_balancer_name, lb) return _get_property(poller.result().frontend_ip_configurations, item_name) @@ -1554,7 +1558,7 @@ def update_nsg_rule_2017_03_01(instance, protocol=None, source_address_prefix=No def create_public_ip(resource_group_name, public_ip_address_name, location=None, tags=None, allocation_method=None, dns_name=None, - idle_timeout=4, reverse_fqdn=None, version=None, sku=None): + idle_timeout=4, reverse_fqdn=None, version=None, sku=None, zone=None): client = _network_client_factory().public_ip_addresses if not allocation_method: allocation_method = IPAllocationMethod.static.value if (sku and sku.lower() == 'standard') \ @@ -1569,6 +1573,8 @@ def create_public_ip(resource_group_name, public_ip_address_name, location=None, } if supported_api_version(ResourceType.MGMT_NETWORK, min_api='2016-09-01'): public_ip_args['public_ip_address_version'] = version + if supported_api_version(ResourceType.MGMT_NETWORK, min_api='2017-06-01'): + public_ip_args['zones'] = zone if sku: public_ip_args['sku'] = {'name': sku} public_ip = PublicIPAddress(**public_ip_args) diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_lb_zone.yaml b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_lb_zone.yaml new file mode 100644 index 00000000000..fc9634a669e --- /dev/null +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_lb_zone.yaml @@ -0,0 +1,627 @@ +interactions: +- request: + body: '{"tags": {"use": "az-test"}, "location": "westus"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['50'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001","name":"cli_test_network_lb_zone000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['328'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:55:48 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'] + CommandName: [network lb create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?$filter=resourceGroup%20eq%20%27cli_test_network_lb_zone000001%27%20and%20name%20eq%20%27pubip1%27%20and%20resourceType%20eq%20%27Microsoft.Network%2FpublicIPAddresses%27&api-version=2017-05-10 + response: + body: {string: '{"value":[]}'} + headers: + cache-control: [no-cache] + content-length: ['12'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:55:48 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: 'b''{"properties": {"template": {"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "outputs": {"loadBalancer": {"value": "[reference(\''lb1\'')]", "type": "object"}}, + "variables": {}, "contentVersion": "1.0.0.0", "parameters": {}, "resources": + [{"zones": ["2"], "apiVersion": "2017-09-01", "sku": {"name": "Basic"}, "dependsOn": + [], "location": "eastus2", "properties": {"publicIPAllocationMethod": "Dynamic"}, + "tags": {}, "name": "pubip1", "type": "Microsoft.Network/publicIPAddresses"}, + {"dependsOn": ["Microsoft.Network/publicIpAddresses/pubip1"], "apiVersion": + "2017-09-01", "sku": {"name": "Basic"}, "location": "eastus2", "properties": + {"backendAddressPools": [{"name": "lb1bepool"}], "frontendIPConfigurations": + [{"properties": {"publicIPAddress": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/publicIPAddresses/pubip1"}}, + "name": "LoadBalancerFrontEnd"}]}, "tags": {}, "name": "lb1", "type": "Microsoft.Network/loadBalancers"}]}, + "mode": "Incremental", "parameters": {}}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network lb create] + Connection: [keep-alive] + Content-Length: ['1148'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/lb_deploy_JtgRPWIDsXhAICgC0gaN3l8PsyyQHLHF","name":"lb_deploy_JtgRPWIDsXhAICgC0gaN3l8PsyyQHLHF","properties":{"templateHash":"1172509193047925089","parameters":{},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2017-09-19T22:55:50.1164566Z","duration":"PT0.2528247S","correlationId":"5e7df025-de9b-47f4-84ce-4e00b47cca77","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"publicIPAddresses","locations":["eastus2"]},{"resourceType":"loadBalancers","locations":["eastus2"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/publicIPAddresses/pubip1","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"pubip1"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1","resourceType":"Microsoft.Network/loadBalancers","resourceName":"lb1"}]}}'} + headers: + azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/lb_deploy_JtgRPWIDsXhAICgC0gaN3l8PsyyQHLHF/operationStatuses/08586957451356139926?api-version=2017-05-10'] + cache-control: [no-cache] + content-length: ['1297'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:55:49 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'] + CommandName: [network lb create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957451356139926?api-version=2017-05-10 + response: + body: {string: '{"status":"Succeeded"}'} + headers: + cache-control: [no-cache] + content-length: ['22'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:19 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'] + CommandName: [network lb create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/lb_deploy_JtgRPWIDsXhAICgC0gaN3l8PsyyQHLHF","name":"lb_deploy_JtgRPWIDsXhAICgC0gaN3l8PsyyQHLHF","properties":{"templateHash":"1172509193047925089","parameters":{},"mode":"Incremental","provisioningState":"Succeeded","timestamp":"2017-09-19T22:56:01.0488916Z","duration":"PT11.1852597S","correlationId":"5e7df025-de9b-47f4-84ce-4e00b47cca77","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"publicIPAddresses","locations":["eastus2"]},{"resourceType":"loadBalancers","locations":["eastus2"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/publicIPAddresses/pubip1","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"pubip1"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1","resourceType":"Microsoft.Network/loadBalancers","resourceName":"lb1"}],"outputs":{"loadBalancer":{"type":"Object","value":{"provisioningState":"Succeeded","resourceGuid":"3abd8901-a69f-4298-86c5-8f3c78da5ea4","frontendIPConfigurations":[{"name":"LoadBalancerFrontEnd","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1/frontendIPConfigurations/LoadBalancerFrontEnd","etag":"W/\"861eaca4-b58a-4993-a20a-4da9bba4dca4\"","properties":{"provisioningState":"Succeeded","privateIPAllocationMethod":"Dynamic","publicIPAddress":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/publicIPAddresses/pubip1"}}}],"backendAddressPools":[{"name":"lb1bepool","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1/backendAddressPools/lb1bepool","etag":"W/\"861eaca4-b58a-4993-a20a-4da9bba4dca4\"","properties":{"provisioningState":"Succeeded"}}],"loadBalancingRules":[],"probes":[],"inboundNatRules":[],"outboundNatRules":[],"inboundNatPools":[]}}},"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/publicIPAddresses/pubip1"}]}}'} + headers: + cache-control: [no-cache] + content-length: ['2996'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:20 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'] + CommandName: [network lb show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"lb1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1\"\ + ,\r\n \"etag\": \"W/\\\"861eaca4-b58a-4993-a20a-4da9bba4dca4\\\"\",\r\n \ + \ \"type\": \"Microsoft.Network/loadBalancers\",\r\n \"location\": \"eastus2\"\ + ,\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\":\ + \ \"Succeeded\",\r\n \"resourceGuid\": \"3abd8901-a69f-4298-86c5-8f3c78da5ea4\"\ + ,\r\n \"frontendIPConfigurations\": [\r\n {\r\n \"name\": \"\ + LoadBalancerFrontEnd\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1/frontendIPConfigurations/LoadBalancerFrontEnd\"\ + ,\r\n \"etag\": \"W/\\\"861eaca4-b58a-4993-a20a-4da9bba4dca4\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"privateIPAllocationMethod\": \"Dynamic\",\r\n \"\ + publicIPAddress\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/publicIPAddresses/pubip1\"\ + \r\n }\r\n }\r\n }\r\n ],\r\n \"backendAddressPools\"\ + : [\r\n {\r\n \"name\": \"lb1bepool\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1/backendAddressPools/lb1bepool\"\ + ,\r\n \"etag\": \"W/\\\"861eaca4-b58a-4993-a20a-4da9bba4dca4\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + \r\n }\r\n }\r\n ],\r\n \"loadBalancingRules\": [],\r\n\ + \ \"probes\": [],\r\n \"inboundNatRules\": [],\r\n \"outboundNatRules\"\ + : [],\r\n \"inboundNatPools\": []\r\n },\r\n \"sku\": {\r\n \"name\"\ + : \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['1942'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:20 GMT'] + etag: [W/"861eaca4-b58a-4993-a20a-4da9bba4dca4"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network public-ip show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/publicIPAddresses/pubip1?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"pubip1\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/publicIPAddresses/pubip1\"\ + ,\r\n \"etag\": \"W/\\\"412f6c48-c860-4703-ae06-8d17012255e6\\\"\",\r\n \ + \ \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"zones\": [\r\n \"\ + 2\"\r\n ],\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"resourceGuid\": \"55b33524-e7e3-4e62-beca-f22277335749\",\r\n \ + \ \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\"\ + : \"Dynamic\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"ipConfiguration\"\ + : {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb1/frontendIPConfigurations/LoadBalancerFrontEnd\"\ + \r\n }\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\ + \n \"sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['971'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:22 GMT'] + etag: [W/"412f6c48-c860-4703-ae06-8d17012255e6"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network lb create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resources?$filter=resourceGroup%20eq%20%27cli_test_network_lb_zone000001%27%20and%20name%20eq%20%27vnet1%27%20and%20resourceType%20eq%20%27Microsoft.Network%2FvirtualNetworks%27&api-version=2017-05-10 + response: + body: {string: '{"value":[]}'} + headers: + cache-control: [no-cache] + content-length: ['12'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:22 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: 'b''{"properties": {"template": {"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "outputs": {"loadBalancer": {"value": "[reference(\''lb2\'')]", "type": "object"}}, + "variables": {}, "contentVersion": "1.0.0.0", "parameters": {}, "resources": + [{"name": "vnet1", "apiVersion": "2015-06-15", "tags": {}, "properties": {"addressSpace": + {"addressPrefixes": ["10.0.0.0/16"]}, "subnets": [{"properties": {"addressPrefix": + "10.0.0.0/24"}, "name": "subnet1"}]}, "dependsOn": [], "location": "eastus2", + "type": "Microsoft.Network/virtualNetworks"}, {"dependsOn": ["Microsoft.Network/virtualNetworks/vnet1"], + "apiVersion": "2017-09-01", "sku": {"name": "Basic"}, "location": "eastus2", + "properties": {"backendAddressPools": [{"name": "lb2bepool"}], "frontendIPConfigurations": + [{"properties": {"privateIPAllocationMethod": "Dynamic", "privateIPAddress": + null, "subnet": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1"}}, + "zones": ["2"], "name": "LoadBalancerFrontEnd"}]}, "tags": {}, "name": "lb2", + "type": "Microsoft.Network/loadBalancers"}]}, "mode": "Incremental", "parameters": + {}}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network lb create] + Connection: [keep-alive] + Content-Length: ['1283'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/lb_deploy_VmbzJvyDY5SFEhDULpdsLaJjBTX1gcb6","name":"lb_deploy_VmbzJvyDY5SFEhDULpdsLaJjBTX1gcb6","properties":{"templateHash":"16642192827439827038","parameters":{},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2017-09-19T22:56:24.3416196Z","duration":"PT0.3918586S","correlationId":"b30b829d-6441-4474-81ff-26be7ec35321","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus2"]},{"resourceType":"loadBalancers","locations":["eastus2"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"vnet1"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2","resourceType":"Microsoft.Network/loadBalancers","resourceName":"lb2"}]}}'} + headers: + azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/lb_deploy_VmbzJvyDY5SFEhDULpdsLaJjBTX1gcb6/operationStatuses/08586957451015278592?api-version=2017-05-10'] + cache-control: [no-cache] + content-length: ['1290'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:23 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'] + CommandName: [network lb create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957451015278592?api-version=2017-05-10 + response: + body: {string: '{"status":"Succeeded"}'} + headers: + cache-control: [no-cache] + content-length: ['22'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:54 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'] + CommandName: [network lb create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Resources/deployments/lb_deploy_VmbzJvyDY5SFEhDULpdsLaJjBTX1gcb6","name":"lb_deploy_VmbzJvyDY5SFEhDULpdsLaJjBTX1gcb6","properties":{"templateHash":"16642192827439827038","parameters":{},"mode":"Incremental","provisioningState":"Succeeded","timestamp":"2017-09-19T22:56:33.6648258Z","duration":"PT9.7150648S","correlationId":"b30b829d-6441-4474-81ff-26be7ec35321","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus2"]},{"resourceType":"loadBalancers","locations":["eastus2"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"vnet1"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2","resourceType":"Microsoft.Network/loadBalancers","resourceName":"lb2"}],"outputs":{"loadBalancer":{"type":"Object","value":{"provisioningState":"Succeeded","resourceGuid":"efe2599d-3a99-4f5e-949a-bf961b862e21","frontendIPConfigurations":[{"name":"LoadBalancerFrontEnd","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/LoadBalancerFrontEnd","etag":"W/\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\"","properties":{"provisioningState":"Succeeded","privateIPAddress":"10.0.0.4","privateIPAllocationMethod":"Dynamic","subnet":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1"}},"zones":["2"]}],"backendAddressPools":[{"name":"lb2bepool","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/backendAddressPools/lb2bepool","etag":"W/\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\"","properties":{"provisioningState":"Succeeded"}}],"loadBalancingRules":[],"probes":[],"inboundNatRules":[],"outboundNatRules":[],"inboundNatPools":[]}}},"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1"}]}}'} + headers: + cache-control: [no-cache] + content-length: ['3033'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:54 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'] + CommandName: [network lb show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"lb2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2\"\ + ,\r\n \"etag\": \"W/\\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\\"\",\r\n \ + \ \"type\": \"Microsoft.Network/loadBalancers\",\r\n \"location\": \"eastus2\"\ + ,\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\":\ + \ \"Succeeded\",\r\n \"resourceGuid\": \"efe2599d-3a99-4f5e-949a-bf961b862e21\"\ + ,\r\n \"frontendIPConfigurations\": [\r\n {\r\n \"name\": \"\ + LoadBalancerFrontEnd\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/LoadBalancerFrontEnd\"\ + ,\r\n \"etag\": \"W/\\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"privateIPAddress\": \"10.0.0.4\",\r\n \"privateIPAllocationMethod\"\ + : \"Dynamic\",\r\n \"subnet\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\ + \r\n }\r\n },\r\n \"zones\": [\r\n \"2\"\r\ + \n ]\r\n }\r\n ],\r\n \"backendAddressPools\": [\r\n \ + \ {\r\n \"name\": \"lb2bepool\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/backendAddressPools/lb2bepool\"\ + ,\r\n \"etag\": \"W/\\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + \r\n }\r\n }\r\n ],\r\n \"loadBalancingRules\": [],\r\n\ + \ \"probes\": [],\r\n \"inboundNatRules\": [],\r\n \"outboundNatRules\"\ + : [],\r\n \"inboundNatPools\": []\r\n },\r\n \"sku\": {\r\n \"name\"\ + : \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['2036'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:55 GMT'] + etag: [W/"59bb9005-a0e6-47e1-a6a2-fc0cd9349016"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network lb frontend-ip create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"lb2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2\"\ + ,\r\n \"etag\": \"W/\\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\\"\",\r\n \ + \ \"type\": \"Microsoft.Network/loadBalancers\",\r\n \"location\": \"eastus2\"\ + ,\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\":\ + \ \"Succeeded\",\r\n \"resourceGuid\": \"efe2599d-3a99-4f5e-949a-bf961b862e21\"\ + ,\r\n \"frontendIPConfigurations\": [\r\n {\r\n \"name\": \"\ + LoadBalancerFrontEnd\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/LoadBalancerFrontEnd\"\ + ,\r\n \"etag\": \"W/\\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"privateIPAddress\": \"10.0.0.4\",\r\n \"privateIPAllocationMethod\"\ + : \"Dynamic\",\r\n \"subnet\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\ + \r\n }\r\n },\r\n \"zones\": [\r\n \"2\"\r\ + \n ]\r\n }\r\n ],\r\n \"backendAddressPools\": [\r\n \ + \ {\r\n \"name\": \"lb2bepool\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/backendAddressPools/lb2bepool\"\ + ,\r\n \"etag\": \"W/\\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + \r\n }\r\n }\r\n ],\r\n \"loadBalancingRules\": [],\r\n\ + \ \"probes\": [],\r\n \"inboundNatRules\": [],\r\n \"outboundNatRules\"\ + : [],\r\n \"inboundNatPools\": []\r\n },\r\n \"sku\": {\r\n \"name\"\ + : \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['2036'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:56 GMT'] + etag: [W/"59bb9005-a0e6-47e1-a6a2-fc0cd9349016"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: 'b''{"etag": "W/\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\"", "location": + "eastus2", "properties": {"frontendIPConfigurations": [{"properties": {"subnet": + {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1"}, + "privateIPAllocationMethod": "Dynamic", "privateIPAddress": "10.0.0.4", "provisioningState": + "Succeeded"}, "etag": "W/\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\"", "name": + "LoadBalancerFrontEnd", "zones": ["2"], "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/LoadBalancerFrontEnd"}, + {"properties": {"privateIPAllocationMethod": "dynamic", "subnet": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1"}}, + "zones": ["2"], "name": "LoadBalancerFrontEnd2"}], "inboundNatPools": [], "resourceGuid": + "efe2599d-3a99-4f5e-949a-bf961b862e21", "inboundNatRules": [], "provisioningState": + "Succeeded", "backendAddressPools": [{"properties": {"provisioningState": "Succeeded"}, + "etag": "W/\\"59bb9005-a0e6-47e1-a6a2-fc0cd9349016\\"", "name": "lb2bepool", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/backendAddressPools/lb2bepool"}], + "loadBalancingRules": [], "probes": [], "outboundNatRules": []}, "tags": {}, + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2", + "sku": {"name": "Basic"}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network lb frontend-ip create] + Connection: [keep-alive] + Content-Length: ['1976'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"lb2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2\"\ + ,\r\n \"etag\": \"W/\\\"ca05dc20-3876-4278-9fe5-14bae7027dee\\\"\",\r\n \ + \ \"type\": \"Microsoft.Network/loadBalancers\",\r\n \"location\": \"eastus2\"\ + ,\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\":\ + \ \"Succeeded\",\r\n \"resourceGuid\": \"efe2599d-3a99-4f5e-949a-bf961b862e21\"\ + ,\r\n \"frontendIPConfigurations\": [\r\n {\r\n \"name\": \"\ + LoadBalancerFrontEnd\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/LoadBalancerFrontEnd\"\ + ,\r\n \"etag\": \"W/\\\"ca05dc20-3876-4278-9fe5-14bae7027dee\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"privateIPAddress\": \"10.0.0.4\",\r\n \"privateIPAllocationMethod\"\ + : \"Dynamic\",\r\n \"subnet\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\ + \r\n }\r\n },\r\n \"zones\": [\r\n \"2\"\r\ + \n ]\r\n },\r\n {\r\n \"name\": \"LoadBalancerFrontEnd2\"\ + ,\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/LoadBalancerFrontEnd2\"\ + ,\r\n \"etag\": \"W/\\\"ca05dc20-3876-4278-9fe5-14bae7027dee\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"privateIPAddress\": \"10.0.0.5\",\r\n \"privateIPAllocationMethod\"\ + : \"Dynamic\",\r\n \"subnet\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\ + \r\n }\r\n },\r\n \"zones\": [\r\n \"2\"\r\ + \n ]\r\n }\r\n ],\r\n \"backendAddressPools\": [\r\n \ + \ {\r\n \"name\": \"lb2bepool\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/backendAddressPools/lb2bepool\"\ + ,\r\n \"etag\": \"W/\\\"ca05dc20-3876-4278-9fe5-14bae7027dee\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + \r\n }\r\n }\r\n ],\r\n \"loadBalancingRules\": [],\r\n\ + \ \"probes\": [],\r\n \"inboundNatRules\": [],\r\n \"outboundNatRules\"\ + : [],\r\n \"inboundNatPools\": []\r\n },\r\n \"sku\": {\r\n \"name\"\ + : \"Basic\"\r\n }\r\n}"} + headers: + azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/2e4e34a9-0a25-46a6-9f11-1fdb8895088c?api-version=2017-09-01'] + cache-control: [no-cache] + content-length: ['2902'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:56:57 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + x-ms-ratelimit-remaining-subscription-writes: ['1196'] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network lb frontend-ip create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus2/operations/2e4e34a9-0a25-46a6-9f11-1fdb8895088c?api-version=2017-09-01 + response: + body: {string: "{\r\n \"status\": \"Succeeded\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['29'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:27 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network lb frontend-ip create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"lb2\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2\"\ + ,\r\n \"etag\": \"W/\\\"ca05dc20-3876-4278-9fe5-14bae7027dee\\\"\",\r\n \ + \ \"type\": \"Microsoft.Network/loadBalancers\",\r\n \"location\": \"eastus2\"\ + ,\r\n \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\":\ + \ \"Succeeded\",\r\n \"resourceGuid\": \"efe2599d-3a99-4f5e-949a-bf961b862e21\"\ + ,\r\n \"frontendIPConfigurations\": [\r\n {\r\n \"name\": \"\ + LoadBalancerFrontEnd\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/LoadBalancerFrontEnd\"\ + ,\r\n \"etag\": \"W/\\\"ca05dc20-3876-4278-9fe5-14bae7027dee\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"privateIPAddress\": \"10.0.0.4\",\r\n \"privateIPAllocationMethod\"\ + : \"Dynamic\",\r\n \"subnet\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\ + \r\n }\r\n },\r\n \"zones\": [\r\n \"2\"\r\ + \n ]\r\n },\r\n {\r\n \"name\": \"LoadBalancerFrontEnd2\"\ + ,\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/LoadBalancerFrontEnd2\"\ + ,\r\n \"etag\": \"W/\\\"ca05dc20-3876-4278-9fe5-14bae7027dee\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"privateIPAddress\": \"10.0.0.5\",\r\n \"privateIPAllocationMethod\"\ + : \"Dynamic\",\r\n \"subnet\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1\"\ + \r\n }\r\n },\r\n \"zones\": [\r\n \"2\"\r\ + \n ]\r\n }\r\n ],\r\n \"backendAddressPools\": [\r\n \ + \ {\r\n \"name\": \"lb2bepool\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_network_lb_zone000001/providers/Microsoft.Network/loadBalancers/lb2/backendAddressPools/lb2bepool\"\ + ,\r\n \"etag\": \"W/\\\"ca05dc20-3876-4278-9fe5-14bae7027dee\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + \r\n }\r\n }\r\n ],\r\n \"loadBalancingRules\": [],\r\n\ + \ \"probes\": [],\r\n \"inboundNatRules\": [],\r\n \"outboundNatRules\"\ + : [],\r\n \"inboundNatPools\": []\r\n },\r\n \"sku\": {\r\n \"name\"\ + : \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['2902'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:27 GMT'] + etag: [W/"ca05dc20-3876-4278-9fe5-14bae7027dee"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_network_lb_zone000001?api-version=2017-05-10 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 19 Sep 2017 22:57:28 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTEk6NUZURVNUOjVGTkVUV09SSzo1RkxCOjVGWk9ORUVKTTNGSUMySzRHUUZBR3w0NkVENDJEMkY3OTlBMTYwLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1195'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_public_ip.yaml b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_public_ip.yaml index 8936ebfb5f0..dcc31c7798b 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_public_ip.yaml +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_public_ip.yaml @@ -6,11 +6,11 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 resourcemanagementclient/1.1.0 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f2695a7a-9d4f-11e7-95ec-a0b3ccf7272a] + x-ms-client-request-id: [8ec61bb8-9d8c-11e7-8e4e-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_public_ip?api-version=2017-05-10 response: @@ -18,7 +18,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:33:55 GMT'] + Date: ['Tue, 19 Sep 2017 22:47:46 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -26,44 +26,44 @@ interactions: content-length: ['226'] status: {code: 200, message: OK} - request: - body: '{"sku": {"name": "Basic"}, "properties": {"publicIPAddressVersion": "IPv4", - "dnsSettings": {"domainNameLabel": "woot"}, "publicIPAllocationMethod": "Static", - "idleTimeoutInMinutes": 4}, "location": "westus"}' + body: '{"location": "westus", "sku": {"name": "Basic"}, "properties": {"publicIPAllocationMethod": + "Static", "publicIPAddressVersion": "IPv4", "dnsSettings": {"domainNameLabel": + "woot"}, "idleTimeoutInMinutes": 4}}' headers: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Length: ['207'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f28394d2-9d4f-11e7-bcfb-a0b3ccf7272a] + x-ms-client-request-id: [8ed633c6-9d8c-11e7-9f5a-64510658e3b3] method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipdns?api-version=2017-09-01 response: body: {string: "{\r\n \"name\": \"pubipdns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipdns\"\ - ,\r\n \"etag\": \"W/\\\"dcc3c699-7e4f-4f74-b923-e920f6c25373\\\"\",\r\n \ + ,\r\n \"etag\": \"W/\\\"075d17b5-d238-4bd8-b343-41f1a01dc07f\\\"\",\r\n \ \ \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\"\ - : \"Updating\",\r\n \"resourceGuid\": \"c8662fbf-b6a1-4da7-a058-536317b10913\"\ + : \"Updating\",\r\n \"resourceGuid\": \"470e1737-e5f3-4128-ba2c-83ec75b32654\"\ ,\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\"\ : \"Static\",\r\n \"idleTimeoutInMinutes\": 4,\r\n \"dnsSettings\":\ \ {\r\n \"domainNameLabel\": \"woot\",\r\n \"fqdn\": \"woot.westus.cloudapp.azure.com\"\ \r\n }\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\ \n \"sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}"} headers: - Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operations/c71b4ea1-bdbd-439b-a3dd-9d9483fee226?api-version=2017-09-01'] + Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operations/135633f6-aa28-40ff-9653-79511bff6cf0?api-version=2017-09-01'] Cache-Control: [no-cache] Content-Length: ['705'] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:33:55 GMT'] + Date: ['Tue, 19 Sep 2017 22:47:47 GMT'] Expires: ['-1'] Pragma: [no-cache] Retry-After: ['3'] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] Strict-Transport-Security: [max-age=31536000; includeSubDomains] - x-ms-ratelimit-remaining-subscription-writes: ['1198'] + x-ms-ratelimit-remaining-subscription-writes: ['1195'] status: {code: 201, message: Created} - request: body: null @@ -72,19 +72,19 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f28394d2-9d4f-11e7-bcfb-a0b3ccf7272a] + x-ms-client-request-id: [8ed633c6-9d8c-11e7-9f5a-64510658e3b3] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c71b4ea1-bdbd-439b-a3dd-9d9483fee226?api-version=2017-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/135633f6-aa28-40ff-9653-79511bff6cf0?api-version=2017-09-01 response: body: {string: "{\r\n \"status\": \"Succeeded\"\r\n}"} headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:33:58 GMT'] + Date: ['Tue, 19 Sep 2017 22:47:51 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -100,19 +100,19 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f28394d2-9d4f-11e7-bcfb-a0b3ccf7272a] + x-ms-client-request-id: [8ed633c6-9d8c-11e7-9f5a-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipdns?api-version=2017-09-01 response: body: {string: "{\r\n \"name\": \"pubipdns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipdns\"\ - ,\r\n \"etag\": \"W/\\\"5e448b43-03c9-4d10-b273-c176c456e500\\\"\",\r\n \ + ,\r\n \"etag\": \"W/\\\"da753922-1ae6-48d5-a5ea-c63dd38a9e45\\\"\",\r\n \ \ \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\"\ - : \"Succeeded\",\r\n \"resourceGuid\": \"c8662fbf-b6a1-4da7-a058-536317b10913\"\ - ,\r\n \"ipAddress\": \"40.83.145.190\",\r\n \"publicIPAddressVersion\"\ + : \"Succeeded\",\r\n \"resourceGuid\": \"470e1737-e5f3-4128-ba2c-83ec75b32654\"\ + ,\r\n \"ipAddress\": \"40.86.177.40\",\r\n \"publicIPAddressVersion\"\ : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\"\ : 4,\r\n \"dnsSettings\": {\r\n \"domainNameLabel\": \"woot\",\r\n\ \ \"fqdn\": \"woot.westus.cloudapp.azure.com\"\r\n }\r\n },\r\n \ @@ -121,15 +121,15 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:33:59 GMT'] - ETag: [W/"5e448b43-03c9-4d10-b273-c176c456e500"] + Date: ['Tue, 19 Sep 2017 22:47:51 GMT'] + ETag: [W/"da753922-1ae6-48d5-a5ea-c63dd38a9e45"] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] Strict-Transport-Security: [max-age=31536000; includeSubDomains] Transfer-Encoding: [chunked] Vary: [Accept-Encoding] - content-length: ['741'] + content-length: ['740'] status: {code: 200, message: OK} - request: body: null @@ -138,11 +138,11 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 resourcemanagementclient/1.1.0 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f4f623f0-9d4f-11e7-a062-a0b3ccf7272a] + x-ms-client-request-id: [91d44bf6-9d8c-11e7-85ac-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_public_ip?api-version=2017-05-10 response: @@ -150,7 +150,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:33:59 GMT'] + Date: ['Tue, 19 Sep 2017 22:47:51 GMT'] Expires: ['-1'] Pragma: [no-cache] Strict-Transport-Security: [max-age=31536000; includeSubDomains] @@ -158,43 +158,42 @@ interactions: content-length: ['226'] status: {code: 200, message: OK} - request: - body: '{"sku": {"name": "Basic"}, "properties": {"publicIPAddressVersion": "IPv4", - "publicIPAllocationMethod": "Dynamic", "idleTimeoutInMinutes": 4}, "location": - "westus"}' + body: '{"location": "westus", "sku": {"name": "Basic"}, "properties": {"publicIPAllocationMethod": + "Dynamic", "publicIPAddressVersion": "IPv4", "idleTimeoutInMinutes": 4}}' headers: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Length: ['164'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f5187efa-9d4f-11e7-a082-a0b3ccf7272a] + x-ms-client-request-id: [91e26bc8-9d8c-11e7-81aa-64510658e3b3] method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns?api-version=2017-09-01 response: body: {string: "{\r\n \"name\": \"pubipnodns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns\"\ - ,\r\n \"etag\": \"W/\\\"5627b00a-c505-4650-b04a-61921313fb58\\\"\",\r\n \ + ,\r\n \"etag\": \"W/\\\"b6c1641e-ba18-481e-9dd2-39d3de000b3d\\\"\",\r\n \ \ \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\"\ - : \"Updating\",\r\n \"resourceGuid\": \"14bb6122-5441-40f9-95d2-3e1b892beabd\"\ + : \"Updating\",\r\n \"resourceGuid\": \"ab027262-386e-4ebb-a5ee-267a90e9a3da\"\ ,\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\"\ : \"Dynamic\",\r\n \"idleTimeoutInMinutes\": 4\r\n },\r\n \"type\": \"\ Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"\ Basic\"\r\n }\r\n}"} headers: - Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operations/957566d9-969d-44c4-b713-f7c1256651d2?api-version=2017-09-01'] + Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operations/39efae05-5d27-45ac-beab-a643da7d458d?api-version=2017-09-01'] Cache-Control: [no-cache] Content-Length: ['598'] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:33:59 GMT'] + Date: ['Tue, 19 Sep 2017 22:47:53 GMT'] Expires: ['-1'] Pragma: [no-cache] Retry-After: ['3'] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] Strict-Transport-Security: [max-age=31536000; includeSubDomains] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1197'] status: {code: 201, message: Created} - request: body: null @@ -203,19 +202,19 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f5187efa-9d4f-11e7-a082-a0b3ccf7272a] + x-ms-client-request-id: [91e26bc8-9d8c-11e7-81aa-64510658e3b3] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/957566d9-969d-44c4-b713-f7c1256651d2?api-version=2017-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/39efae05-5d27-45ac-beab-a643da7d458d?api-version=2017-09-01 response: body: {string: "{\r\n \"status\": \"Succeeded\"\r\n}"} headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:03 GMT'] + Date: ['Tue, 19 Sep 2017 22:47:56 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -231,18 +230,18 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f5187efa-9d4f-11e7-a082-a0b3ccf7272a] + x-ms-client-request-id: [91e26bc8-9d8c-11e7-81aa-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns?api-version=2017-09-01 response: body: {string: "{\r\n \"name\": \"pubipnodns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns\"\ - ,\r\n \"etag\": \"W/\\\"b8f542f1-fd23-4dee-ab43-412b3d46bbb9\\\"\",\r\n \ + ,\r\n \"etag\": \"W/\\\"c2ba1bff-ebf6-40ca-b998-ac39edb6502f\\\"\",\r\n \ \ \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\"\ - : \"Succeeded\",\r\n \"resourceGuid\": \"14bb6122-5441-40f9-95d2-3e1b892beabd\"\ + : \"Succeeded\",\r\n \"resourceGuid\": \"ab027262-386e-4ebb-a5ee-267a90e9a3da\"\ ,\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\"\ : \"Dynamic\",\r\n \"idleTimeoutInMinutes\": 4\r\n },\r\n \"type\": \"\ Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"\ @@ -250,8 +249,8 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:03 GMT'] - ETag: [W/"b8f542f1-fd23-4dee-ab43-412b3d46bbb9"] + Date: ['Tue, 19 Sep 2017 22:47:56 GMT'] + ETag: [W/"c2ba1bff-ebf6-40ca-b998-ac39edb6502f"] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -267,18 +266,18 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f7b3f23a-9d4f-11e7-89af-a0b3ccf7272a] + x-ms-client-request-id: [94c058a6-9d8c-11e7-9b54-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns?api-version=2017-09-01 response: body: {string: "{\r\n \"name\": \"pubipnodns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns\"\ - ,\r\n \"etag\": \"W/\\\"b8f542f1-fd23-4dee-ab43-412b3d46bbb9\\\"\",\r\n \ + ,\r\n \"etag\": \"W/\\\"c2ba1bff-ebf6-40ca-b998-ac39edb6502f\\\"\",\r\n \ \ \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\"\ - : \"Succeeded\",\r\n \"resourceGuid\": \"14bb6122-5441-40f9-95d2-3e1b892beabd\"\ + : \"Succeeded\",\r\n \"resourceGuid\": \"ab027262-386e-4ebb-a5ee-267a90e9a3da\"\ ,\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\"\ : \"Dynamic\",\r\n \"idleTimeoutInMinutes\": 4\r\n },\r\n \"type\": \"\ Microsoft.Network/publicIPAddresses\",\r\n \"sku\": {\r\n \"name\": \"\ @@ -286,8 +285,8 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:04 GMT'] - ETag: [W/"b8f542f1-fd23-4dee-ab43-412b3d46bbb9"] + Date: ['Tue, 19 Sep 2017 22:47:57 GMT'] + ETag: [W/"c2ba1bff-ebf6-40ca-b998-ac39edb6502f"] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -297,40 +296,39 @@ interactions: content-length: ['599'] status: {code: 200, message: OK} - request: - body: '{"etag": "W/\"b8f542f1-fd23-4dee-ab43-412b3d46bbb9\"", "sku": {"name": - "Basic"}, "id": "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns", - "properties": {"provisioningState": "Succeeded", "publicIPAllocationMethod": - "Static", "publicIPAddressVersion": "IPv4", "dnsSettings": {"domainNameLabel": - "wowza"}, "idleTimeoutInMinutes": 10, "resourceGuid": "14bb6122-5441-40f9-95d2-3e1b892beabd"}, - "location": "westus"}' + body: '{"location": "westus", "sku": {"name": "Basic"}, "properties": {"dnsSettings": + {"domainNameLabel": "wowza"}, "resourceGuid": "ab027262-386e-4ebb-a5ee-267a90e9a3da", + "publicIPAllocationMethod": "Static", "publicIPAddressVersion": "IPv4", "provisioningState": + "Succeeded", "idleTimeoutInMinutes": 10}, "id": "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns", + "etag": "W/\"c2ba1bff-ebf6-40ca-b998-ac39edb6502f\""}' headers: Accept: [application/json] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Length: ['511'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f7da1882-9d4f-11e7-a53d-a0b3ccf7272a] + x-ms-client-request-id: [94f614dc-9d8c-11e7-ae88-64510658e3b3] method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns?api-version=2017-09-01 response: body: {string: "{\r\n \"name\": \"pubipnodns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns\"\ - ,\r\n \"etag\": \"W/\\\"92749eab-2cd2-4228-97c7-e943fe80c69a\\\"\",\r\n \ + ,\r\n \"etag\": \"W/\\\"306bad6c-cb56-4dfe-b613-9b21b5807578\\\"\",\r\n \ \ \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\"\ - : \"Updating\",\r\n \"resourceGuid\": \"14bb6122-5441-40f9-95d2-3e1b892beabd\"\ + : \"Updating\",\r\n \"resourceGuid\": \"ab027262-386e-4ebb-a5ee-267a90e9a3da\"\ ,\r\n \"publicIPAddressVersion\": \"IPv4\",\r\n \"publicIPAllocationMethod\"\ : \"Static\",\r\n \"idleTimeoutInMinutes\": 10,\r\n \"dnsSettings\"\ : {\r\n \"domainNameLabel\": \"wowza\",\r\n \"fqdn\": \"wowza.westus.cloudapp.azure.com\"\ \r\n }\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\ \n \"sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}"} headers: - Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operations/c497e224-b3e1-44d8-bf1a-a686069df1cb?api-version=2017-09-01'] + Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operations/64ca2fc7-8d17-442f-948c-00795e9178d3?api-version=2017-09-01'] Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:04 GMT'] + Date: ['Tue, 19 Sep 2017 22:47:57 GMT'] Expires: ['-1'] Pragma: [no-cache] Retry-After: ['3'] @@ -339,7 +337,7 @@ interactions: Transfer-Encoding: [chunked] Vary: [Accept-Encoding] content-length: ['712'] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1196'] status: {code: 200, message: OK} - request: body: null @@ -348,19 +346,19 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f7da1882-9d4f-11e7-a53d-a0b3ccf7272a] + x-ms-client-request-id: [94f614dc-9d8c-11e7-ae88-64510658e3b3] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/c497e224-b3e1-44d8-bf1a-a686069df1cb?api-version=2017-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/64ca2fc7-8d17-442f-948c-00795e9178d3?api-version=2017-09-01 response: body: {string: "{\r\n \"status\": \"Succeeded\"\r\n}"} headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:07 GMT'] + Date: ['Tue, 19 Sep 2017 22:48:00 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -376,19 +374,19 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [f7da1882-9d4f-11e7-a53d-a0b3ccf7272a] + x-ms-client-request-id: [94f614dc-9d8c-11e7-ae88-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns?api-version=2017-09-01 response: body: {string: "{\r\n \"name\": \"pubipnodns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns\"\ - ,\r\n \"etag\": \"W/\\\"94e88ae0-e2d2-41f8-8ce0-ff39ede38458\\\"\",\r\n \ + ,\r\n \"etag\": \"W/\\\"977b0972-8130-4845-9250-133509b3d2cd\\\"\",\r\n \ \ \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\"\ - : \"Succeeded\",\r\n \"resourceGuid\": \"14bb6122-5441-40f9-95d2-3e1b892beabd\"\ - ,\r\n \"ipAddress\": \"40.83.150.73\",\r\n \"publicIPAddressVersion\"\ + : \"Succeeded\",\r\n \"resourceGuid\": \"ab027262-386e-4ebb-a5ee-267a90e9a3da\"\ + ,\r\n \"ipAddress\": \"40.86.179.78\",\r\n \"publicIPAddressVersion\"\ : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\"\ : 10,\r\n \"dnsSettings\": {\r\n \"domainNameLabel\": \"wowza\",\r\ \n \"fqdn\": \"wowza.westus.cloudapp.azure.com\"\r\n }\r\n },\r\n\ @@ -397,8 +395,8 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:07 GMT'] - ETag: [W/"94e88ae0-e2d2-41f8-8ce0-ff39ede38458"] + Date: ['Tue, 19 Sep 2017 22:48:01 GMT'] + ETag: [W/"977b0972-8130-4845-9250-133509b3d2cd"] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -414,30 +412,30 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [fa2eb24c-9d4f-11e7-b103-a0b3ccf7272a] + x-ms-client-request-id: [9789ac0a-9d8c-11e7-ae92-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses?api-version=2017-09-01 response: body: {string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"pubipdns\",\r\ \n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipdns\"\ - ,\r\n \"etag\": \"W/\\\"5e448b43-03c9-4d10-b273-c176c456e500\\\"\",\r\ + ,\r\n \"etag\": \"W/\\\"da753922-1ae6-48d5-a5ea-c63dd38a9e45\\\"\",\r\ \n \"location\": \"westus\",\r\n \"properties\": {\r\n \"\ - provisioningState\": \"Succeeded\",\r\n \"resourceGuid\": \"c8662fbf-b6a1-4da7-a058-536317b10913\"\ - ,\r\n \"ipAddress\": \"40.83.145.190\",\r\n \"publicIPAddressVersion\"\ + provisioningState\": \"Succeeded\",\r\n \"resourceGuid\": \"470e1737-e5f3-4128-ba2c-83ec75b32654\"\ + ,\r\n \"ipAddress\": \"40.86.177.40\",\r\n \"publicIPAddressVersion\"\ : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \ \ \"idleTimeoutInMinutes\": 4,\r\n \"dnsSettings\": {\r\n \ \ \"domainNameLabel\": \"woot\",\r\n \"fqdn\": \"woot.westus.cloudapp.azure.com\"\ \r\n }\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\"\ ,\r\n \"sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n },\r\ \n {\r\n \"name\": \"pubipnodns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns\"\ - ,\r\n \"etag\": \"W/\\\"94e88ae0-e2d2-41f8-8ce0-ff39ede38458\\\"\",\r\ + ,\r\n \"etag\": \"W/\\\"977b0972-8130-4845-9250-133509b3d2cd\\\"\",\r\ \n \"location\": \"westus\",\r\n \"properties\": {\r\n \"\ - provisioningState\": \"Succeeded\",\r\n \"resourceGuid\": \"14bb6122-5441-40f9-95d2-3e1b892beabd\"\ - ,\r\n \"ipAddress\": \"40.83.150.73\",\r\n \"publicIPAddressVersion\"\ + provisioningState\": \"Succeeded\",\r\n \"resourceGuid\": \"ab027262-386e-4ebb-a5ee-267a90e9a3da\"\ + ,\r\n \"ipAddress\": \"40.86.179.78\",\r\n \"publicIPAddressVersion\"\ : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \ \ \"idleTimeoutInMinutes\": 10,\r\n \"dnsSettings\": {\r\n \ \ \"domainNameLabel\": \"wowza\",\r\n \"fqdn\": \"wowza.westus.cloudapp.azure.com\"\ @@ -447,14 +445,14 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:07 GMT'] + Date: ['Tue, 19 Sep 2017 22:48:01 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] Strict-Transport-Security: [max-age=31536000; includeSubDomains] Transfer-Encoding: [chunked] Vary: [Accept-Encoding] - content-length: ['1692'] + content-length: ['1691'] status: {code: 200, message: OK} - request: body: null @@ -463,19 +461,19 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [fa4db168-9d4f-11e7-99e2-a0b3ccf7272a] + x-ms-client-request-id: [97b3722c-9d8c-11e7-a2b2-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipdns?api-version=2017-09-01 response: body: {string: "{\r\n \"name\": \"pubipdns\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipdns\"\ - ,\r\n \"etag\": \"W/\\\"5e448b43-03c9-4d10-b273-c176c456e500\\\"\",\r\n \ + ,\r\n \"etag\": \"W/\\\"da753922-1ae6-48d5-a5ea-c63dd38a9e45\\\"\",\r\n \ \ \"location\": \"westus\",\r\n \"properties\": {\r\n \"provisioningState\"\ - : \"Succeeded\",\r\n \"resourceGuid\": \"c8662fbf-b6a1-4da7-a058-536317b10913\"\ - ,\r\n \"ipAddress\": \"40.83.145.190\",\r\n \"publicIPAddressVersion\"\ + : \"Succeeded\",\r\n \"resourceGuid\": \"470e1737-e5f3-4128-ba2c-83ec75b32654\"\ + ,\r\n \"ipAddress\": \"40.86.177.40\",\r\n \"publicIPAddressVersion\"\ : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \"idleTimeoutInMinutes\"\ : 4,\r\n \"dnsSettings\": {\r\n \"domainNameLabel\": \"woot\",\r\n\ \ \"fqdn\": \"woot.westus.cloudapp.azure.com\"\r\n }\r\n },\r\n \ @@ -484,15 +482,15 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:08 GMT'] - ETag: [W/"5e448b43-03c9-4d10-b273-c176c456e500"] + Date: ['Tue, 19 Sep 2017 22:48:02 GMT'] + ETag: [W/"da753922-1ae6-48d5-a5ea-c63dd38a9e45"] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] Strict-Transport-Security: [max-age=31536000; includeSubDomains] Transfer-Encoding: [chunked] Vary: [Accept-Encoding] - content-length: ['741'] + content-length: ['740'] status: {code: 200, message: OK} - request: body: null @@ -502,27 +500,27 @@ interactions: Connection: [keep-alive] Content-Length: ['0'] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [fa771282-9d4f-11e7-b288-a0b3ccf7272a] + x-ms-client-request-id: [97e64f88-9d8c-11e7-b590-64510658e3b3] method: DELETE uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipdns?api-version=2017-09-01 response: body: {string: ''} headers: - Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operations/39891dba-a8dd-4087-98aa-5f090cc18845?api-version=2017-09-01'] + Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operations/3d136c05-300e-4f89-9e02-9ad782bae5c0?api-version=2017-09-01'] Cache-Control: [no-cache] Content-Length: ['0'] - Date: ['Tue, 19 Sep 2017 15:34:09 GMT'] + Date: ['Tue, 19 Sep 2017 22:48:02 GMT'] Expires: ['-1'] - Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operationResults/39891dba-a8dd-4087-98aa-5f090cc18845?api-version=2017-09-01'] + Location: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Network/locations/westus/operationResults/3d136c05-300e-4f89-9e02-9ad782bae5c0?api-version=2017-09-01'] Pragma: [no-cache] Retry-After: ['10'] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] Strict-Transport-Security: [max-age=31536000; includeSubDomains] - x-ms-ratelimit-remaining-subscription-writes: ['1199'] + x-ms-ratelimit-remaining-subscription-writes: ['1196'] status: {code: 202, message: Accepted} - request: body: null @@ -531,19 +529,19 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [fa771282-9d4f-11e7-b288-a0b3ccf7272a] + x-ms-client-request-id: [97e64f88-9d8c-11e7-b590-64510658e3b3] method: GET - uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/39891dba-a8dd-4087-98aa-5f090cc18845?api-version=2017-09-01 + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westus/operations/3d136c05-300e-4f89-9e02-9ad782bae5c0?api-version=2017-09-01 response: body: {string: "{\r\n \"status\": \"Succeeded\"\r\n}"} headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:18 GMT'] + Date: ['Tue, 19 Sep 2017 22:48:13 GMT'] Expires: ['-1'] Pragma: [no-cache] Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] @@ -559,20 +557,20 @@ interactions: Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] Content-Type: [application/json; charset=utf-8] - User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.14 - msrest_azure/0.4.14 networkmanagementclient/1.5.0rc1 Azure-SDK-For-Python + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python AZURECLI/TEST/2.0.16+dev] accept-language: [en-US] - x-ms-client-request-id: [014caaf8-9d50-11e7-b583-a0b3ccf7272a] + x-ms-client-request-id: [9ec596d8-9d8c-11e7-b102-64510658e3b3] method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses?api-version=2017-09-01 response: body: {string: "{\r\n \"value\": [\r\n {\r\n \"name\": \"pubipnodns\"\ ,\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_public_ip/providers/Microsoft.Network/publicIPAddresses/pubipnodns\"\ - ,\r\n \"etag\": \"W/\\\"94e88ae0-e2d2-41f8-8ce0-ff39ede38458\\\"\",\r\ + ,\r\n \"etag\": \"W/\\\"977b0972-8130-4845-9250-133509b3d2cd\\\"\",\r\ \n \"location\": \"westus\",\r\n \"properties\": {\r\n \"\ - provisioningState\": \"Succeeded\",\r\n \"resourceGuid\": \"14bb6122-5441-40f9-95d2-3e1b892beabd\"\ - ,\r\n \"ipAddress\": \"40.83.150.73\",\r\n \"publicIPAddressVersion\"\ + provisioningState\": \"Succeeded\",\r\n \"resourceGuid\": \"ab027262-386e-4ebb-a5ee-267a90e9a3da\"\ + ,\r\n \"ipAddress\": \"40.86.179.78\",\r\n \"publicIPAddressVersion\"\ : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Static\",\r\n \ \ \"idleTimeoutInMinutes\": 10,\r\n \"dnsSettings\": {\r\n \ \ \"domainNameLabel\": \"wowza\",\r\n \"fqdn\": \"wowza.westus.cloudapp.azure.com\"\ @@ -582,7 +580,7 @@ interactions: headers: Cache-Control: [no-cache] Content-Type: [application/json; charset=utf-8] - Date: ['Tue, 19 Sep 2017 15:34:19 GMT'] + Date: ['Tue, 19 Sep 2017 22:48:14 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/latest/test_network_zoned_public_ip.yaml b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_zoned_public_ip.yaml new file mode 100644 index 00000000000..a0eb4790d84 --- /dev/null +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/recordings/latest/test_network_zoned_public_ip.yaml @@ -0,0 +1,194 @@ +interactions: +- request: + body: '{"location": "westus", "tags": {"use": "az-test"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['50'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_zoned_public_ip000001?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_zoned_public_ip000001","name":"cli_test_zoned_public_ip000001","location":"westus","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['328'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:39 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1194'] + status: {code: 201, message: Created} +- request: + body: '{"location": "centralus", "sku": {"name": "Basic"}, "properties": {"idleTimeoutInMinutes": + 4, "publicIPAllocationMethod": "Dynamic", "publicIPAddressVersion": "IPv4"}, + "zones": ["2"]}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network public-ip create] + Connection: [keep-alive] + Content-Length: ['183'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_zoned_public_ip000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_zoned_public_ip000001/providers/Microsoft.Network/publicIPAddresses/pubip\"\ + ,\r\n \"etag\": \"W/\\\"2e1d45c0-9a69-4f17-bc59-1972a3c2e471\\\"\",\r\n \ + \ \"location\": \"centralus\",\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n\ + \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n \"\ + resourceGuid\": \"b1de8aa7-f100-495d-8db0-a1e0781dea75\",\r\n \"publicIPAddressVersion\"\ + : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Dynamic\",\r\n \"idleTimeoutInMinutes\"\ + : 4\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"\ + sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}"} + headers: + azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/operations/b12d7bfe-6378-4b34-9fed-e46a48f11c0f?api-version=2017-09-01'] + cache-control: [no-cache] + content-length: ['671'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:40 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1191'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network public-ip create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/centralus/operations/b12d7bfe-6378-4b34-9fed-e46a48f11c0f?api-version=2017-09-01 + response: + body: {string: "{\r\n \"status\": \"Succeeded\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['29'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:43 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network public-ip create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_zoned_public_ip000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_zoned_public_ip000001/providers/Microsoft.Network/publicIPAddresses/pubip\"\ + ,\r\n \"etag\": \"W/\\\"166c7aee-5d02-4c56-b5d8-c88537c5eb80\\\"\",\r\n \ + \ \"location\": \"centralus\",\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n\ + \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"\ + resourceGuid\": \"b1de8aa7-f100-495d-8db0-a1e0781dea75\",\r\n \"publicIPAddressVersion\"\ + : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Dynamic\",\r\n \"idleTimeoutInMinutes\"\ + : 4\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"\ + sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['672'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:44 GMT'] + etag: [W/"166c7aee-5d02-4c56-b5d8-c88537c5eb80"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network public-ip show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_zoned_public_ip000001/providers/Microsoft.Network/publicIPAddresses/pubip?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"pubip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_zoned_public_ip000001/providers/Microsoft.Network/publicIPAddresses/pubip\"\ + ,\r\n \"etag\": \"W/\\\"166c7aee-5d02-4c56-b5d8-c88537c5eb80\\\"\",\r\n \ + \ \"location\": \"centralus\",\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n\ + \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n \"\ + resourceGuid\": \"b1de8aa7-f100-495d-8db0-a1e0781dea75\",\r\n \"publicIPAddressVersion\"\ + : \"IPv4\",\r\n \"publicIPAllocationMethod\": \"Dynamic\",\r\n \"idleTimeoutInMinutes\"\ + : 4\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\n \"\ + sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['672'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:45 GMT'] + etag: [W/"166c7aee-5d02-4c56-b5d8-c88537c5eb80"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_zoned_public_ip000001?api-version=2017-05-10 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 19 Sep 2017 22:57:45 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTEk6NUZURVNUOjVGWk9ORUQ6NUZQVUJMSUM6NUZJUExVT0pQWklNT1hNNlBBNnwxQTQxNTA0NUI5NDA5N0MzLVdFU1RVUyIsImpvYkxvY2F0aW9uIjoid2VzdHVzIn0?api-version=2017-05-10'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1196'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/test_network_commands.py b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/test_network_commands.py index 9dd5022bab5..256ddfb550d 100644 --- a/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/test_network_commands.py +++ b/src/command_modules/azure-cli-network/azure/cli/command_modules/network/tests/test_network_commands.py @@ -44,6 +44,46 @@ def test_network_lb_sku(self, resource_group): ]) +@api_version_constraint(ResourceType.MGMT_NETWORK, min_api='2017-06-01') +class NetworkLoadBalancerWithZone(ScenarioTest): + + @ResourceGroupPreparer(name_prefix='cli_test_network_lb_zone') + def test_network_lb_zone(self, resource_group): + + kwargs = { + 'rg': resource_group, + 'lb': 'lb1', + 'zone': '2', + 'location': 'eastus2', + 'ip': 'pubip1' + } + + # LB with public ip + self.cmd('network lb create -g {rg} -l {location} -n {lb} --public-ip-zone {zone} --public-ip-address {ip}'.format(**kwargs)) + # No zone on LB and its front-ip-config + self.cmd('network lb show -g {rg} -n {lb}'.format(**kwargs), checks=[ + JMESPathCheckV2("frontendIpConfigurations[0].zones", None), + JMESPathCheckV2("zones", None) + ]) + # Zone on public-ip which LB uses to infer the zone + self.cmd('network public-ip show -g {rg} -n {ip}'.format(**kwargs), checks=[ + JMESPathCheckV2('zones[0]', kwargs['zone']) + ]) + + # LB w/o public ip, so called ILB + kwargs['lb'] = 'lb2' + self.cmd('network lb create -g {rg} -l {location} -n {lb} --frontend-ip-zone {zone} --public-ip-address "" --vnet-name vnet1 --subnet subnet1'.format(**kwargs)) + # Zone on front-ip-config, and still no zone on LB resource + self.cmd('network lb show -g {rg} -n {lb}'.format(**kwargs), checks=[ + JMESPathCheckV2("frontendIpConfigurations[0].zones[0]", kwargs['zone']), + JMESPathCheckV2("zones", None) + ]) + # add a second frontend ip configuration + self.cmd('network lb frontend-ip create -g {rg} --lb-name {lb} -n LoadBalancerFrontEnd2 -z {zone} --vnet-name vnet1 --subnet subnet1'.format(**kwargs), checks=[ + JMESPathCheckV2("zones", [kwargs['zone']]) + ]) + + @api_version_constraint(ResourceType.MGMT_NETWORK, min_api='2017-08-01') class NetworkPublicIpWithSku(ScenarioTest): @@ -575,6 +615,21 @@ def body(self): @api_version_constraint(ResourceType.MGMT_NETWORK, min_api='2017-06-01') +class NetworkZonedPublicIpScenarioTest(ScenarioTest): + + @ResourceGroupPreparer(name_prefix='cli_test_zoned_public_ip') + def test_network_zoned_public_ip(self, resource_group): + kwargs = { + 'rg': resource_group, + 'ip': 'pubip' + } + self.cmd('network public-ip create -g {rg} -n {ip} -l centralus -z 2'.format(**kwargs), + checks=JMESPathCheck('publicIp.zones[0]', '2')) + + table_output = self.cmd('network public-ip show -g {rg} -n {ip} -otable'.format(**kwargs)).output + self.assertEqual(table_output.splitlines()[2].split(), ['pubip', resource_group, 'centralus', '2', 'IPv4', 'Dynamic', '4', 'Succeeded']) + + class NetworkRouteFilterScenarioTest(ScenarioTest): @ResourceGroupPreparer(name_prefix='cli_test_network_route_filter') diff --git a/src/command_modules/azure-cli-network/setup.py b/src/command_modules/azure-cli-network/setup.py index 8ca876544d2..7ca3c74464d 100644 --- a/src/command_modules/azure-cli-network/setup.py +++ b/src/command_modules/azure-cli-network/setup.py @@ -30,7 +30,7 @@ ] DEPENDENCIES = [ - 'azure-mgmt-network==1.5.0rc1', + 'azure-mgmt-network==1.5.0rc3', 'azure-mgmt-trafficmanager==0.30.0', 'azure-mgmt-dns==1.0.1', 'azure-mgmt-resource==1.2.0rc2', diff --git a/src/command_modules/azure-cli-vm/HISTORY.rst b/src/command_modules/azure-cli-vm/HISTORY.rst index 93bd9a4f315..a9eb0c874a6 100644 --- a/src/command_modules/azure-cli-vm/HISTORY.rst +++ b/src/command_modules/azure-cli-vm/HISTORY.rst @@ -5,6 +5,7 @@ Release History unreleased +++++++++++++++++++ +* `vm/vmss/disk create`: support availability zone * `vmss create`: Fixed issue where supplying `--app-gateway ID` would fail. * `vm create`: Added `--asgs` support. * `vm run-command`: support to run commands on remote VMs 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 index 604bb8396db..85e0fd308f2 100644 --- 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 @@ -86,6 +86,9 @@ - name: Create a CentOS VM with Managed Service Identity. The VM will have a 'Contributor' role with access to a storage account. text: > az vm create -n MyVm -g MyResourceGroup --image centos --assign-identity --scope /subscriptions/99999999-1bf0-4dda-aec3-cb9272f09590/MyResourceGroup/myRG/providers/Microsoft.Storage/storageAccounts/storage1 + - name: Create a VM in an availability zone in the current resource group's region + text: > + az vm create -n MyVm -g MyResourceGroup --image Centos --zone 1 """ helps['vmss create'] = """ @@ -130,6 +133,9 @@ - name: Create a VM scaleset with Managed Service Identity. The VM will have a 'Contributor' Role with access to a storage account. text: > az vm create -n MyVm -g MyResourceGroup --image centos --assign-identity --scope /subscriptions/99999999-1bf0-4dda-aec3-cb9272f09590/MyResourceGroup/myRG/providers/Microsoft.Storage/storageAccounts/storage1 + - name: Create a single zone VM scaleset in the current resource group's region + text: > + az vmss create -n MyVmss -g MyResourceGroup --image Centos --zones 1 """ helps['vm availability-set create'] = """ @@ -1047,6 +1053,9 @@ - name: Create a managed disk by copying an existing disk or snapshot. text: > az disk create -g MyResourceGroup -n MyDisk2 --source MyDisk + - name: Create a disk in an availability zone in the region of "East US 2" + text: > + az disk create -n MyDisk -g MyResourceGroup --size-gb 10 --location eastus2 --zone 1 """ helps['disk list'] = """ 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 252f7bada47..34577aa7438 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 @@ -16,7 +16,7 @@ (get_default_location_from_resource_group, validate_file_or_dict) from azure.cli.core.commands.parameters import \ (location_type, get_one_of_subscription_locations, - get_resource_name_completion_list, tags_type, file_type, enum_choice_list, ignore_type) + get_resource_name_completion_list, tags_type, file_type, enum_choice_list, ignore_type, zone_type, zones_type) from azure.cli.command_modules.vm._actions import \ (load_images_from_aliases_doc, get_vm_sizes, _resource_not_exists) from azure.cli.command_modules.vm._validators import \ @@ -73,6 +73,11 @@ def get_vm_run_command_completion_list(prefix, action, parsed_args, **kwargs): register_cli_argument(scope, 'tags', tags_type) register_cli_argument('vm', 'name', arg_type=name_arg_type) +with VersionConstraint(ResourceType.MGMT_COMPUTE, min_api='2017-03-30') as c: + c.register_cli_argument('vm', 'zone', zone_type) + c.register_cli_argument('disk', 'zone', zone_type, options_list=['--zone']) # TODO: --size-gb currently has claimed -z. We can do a breaking change later if we want to. + c.register_cli_argument('vmss', 'zones', zones_type) + for item in ['show', 'list']: register_cli_argument('vm {}'.format(item), 'show_details', action='store_true', options_list=('--show-details', '-d'), help='show public ip address, FQDN, and power states. command will run slow') diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_template_builder.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_template_builder.py index fd962e0b2e5..d0c0f439172 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_template_builder.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/_template_builder.py @@ -128,7 +128,7 @@ def build_storage_account_resource(name, location, tags, sku): return storage_account -def build_public_ip_resource(name, location, tags, address_allocation, dns_name, sku): +def build_public_ip_resource(name, location, tags, address_allocation, dns_name, sku, zone): public_ip_properties = {'publicIPAllocationMethod': address_allocation} if dns_name: @@ -143,6 +143,8 @@ def build_public_ip_resource(name, location, tags, address_allocation, dns_name, 'dependsOn': [], 'properties': public_ip_properties } + if zone: + public_ip['zones'] = zone if sku and supported_api_version(ResourceType.MGMT_NETWORK, min_api='2017-08-01'): public_ip['sku'] = {'name': sku} return public_ip @@ -312,7 +314,7 @@ def build_vm_resource( # pylint: disable=too-many-locals os_caching=None, data_caching=None, storage_sku=None, os_publisher=None, os_offer=None, os_sku=None, os_version=None, os_vhd_uri=None, attach_os_disk=None, attach_data_disks=None, data_disk_sizes_gb=None, image_data_disks=None, - custom_data=None, secrets=None, license_type=None): + custom_data=None, secrets=None, license_type=None, zone=None): def _build_os_profile(): @@ -445,6 +447,8 @@ def _build_storage_profile(): 'dependsOn': [], 'properties': vm_properties, } + if zone: + vm['zones'] = zone return vm @@ -689,7 +693,7 @@ def build_vmss_resource(name, naming_prefix, location, tags, overprovision, upgr image=None, admin_password=None, ssh_key_value=None, ssh_key_path=None, os_publisher=None, os_offer=None, os_sku=None, os_version=None, backend_address_pool_id=None, inbound_nat_pool_id=None, - single_placement_group=None, custom_data=None, secrets=None): + single_placement_group=None, custom_data=None, secrets=None, zones=None): # Build IP configuration ip_configuration = { @@ -839,6 +843,8 @@ def build_vmss_resource(name, naming_prefix, location, tags, overprovision, upgr }, 'properties': vmss_properties } + if zones: + vmss['zones'] = zones return vmss diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/commands.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/commands.py index 68e66c1b31c..f0c09bbf4d4 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/commands.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/commands.py @@ -21,7 +21,7 @@ # pylint: disable=line-too-long custom_path = 'azure.cli.command_modules.vm.custom#{}' -mgmt_path = 'azure.mgmt.compute.compute.operations.{}#{}.{}' +mgmt_path = 'azure.mgmt.compute.operations.{}#{}.{}' # VM @@ -41,13 +41,16 @@ def transform_ip_addresses(result): return transformed -def transform_vm(result): - return OrderedDict([('name', result['name']), - ('resourceGroup', result['resourceGroup']), - ('powerState', result.get('powerState')), - ('publicIps', result.get('publicIps')), - ('fqdns', result.get('fqdns')), - ('location', result['location'])]) +def transform_vm(vm): + result = OrderedDict([('name', vm['name']), + ('resourceGroup', vm['resourceGroup']), + ('powerState', vm.get('powerState')), + ('publicIps', vm.get('publicIps')), + ('fqdns', vm.get('fqdns')), + ('location', vm['location'])]) + if 'zones' in vm: + result['zones'] = ','.join(vm['zones']) if vm['zones'] else '' + return result def transform_vm_create_output(result): @@ -63,6 +66,8 @@ def transform_vm_create_output(result): ('location', result.location)]) if getattr(result, 'identity', None): output['identity'] = result.identity + if hasattr(result, 'zones'): # output 'zones' column even the property value is None + output['zones'] = result.zones[0] if result.zones else '' return output except AttributeError: from msrest.pipeline import ClientRawResponse @@ -259,7 +264,8 @@ def transform_sku_for_table_output(skus): table_transformer='[].{Name:localName, CurrentValue:currentValue, Limit:limit}') # VMSS -vmss_show_table_transform = '{Name:name, ResourceGroup:resourceGroup, Location:location, Capacity:sku.capacity, Overprovision:overprovision, upgradePolicy:upgradePolicy.mode}' +vmss_show_table_transform = '{Name:name, ResourceGroup:resourceGroup, Location:location, $zone$Capacity:sku.capacity, Overprovision:overprovision, UpgradePolicy:upgradePolicy.mode}' +vmss_show_table_transform = vmss_show_table_transform.replace('$zone$', 'Zones: (!zones && \' \') || join(` `, zones), ' if supported_api_version(ResourceType.MGMT_COMPUTE, min_api='2017-03-30') else ' ') cli_command(__name__, 'vmss delete', mgmt_path.format('virtual_machine_scale_sets_operations', 'VirtualMachineScaleSetsOperations', 'delete'), cf_vmss, no_wait_param='raw') cli_command(__name__, 'vmss list-skus', mgmt_path.format('virtual_machine_scale_sets_operations', 'VirtualMachineScaleSetsOperations', 'list_skus'), cf_vmss) @@ -288,19 +294,21 @@ def transform_sku_for_table_output(skus): if supported_api_version(ResourceType.MGMT_COMPUTE, min_api='2017-03-30'): # VM Disk + disk_show_table_transform = '{Name:name, ResourceGroup:resourceGroup, Location:location, $zone$Sku:sku.name, OsType:osType, SizeGb:diskSizeGb, ProvisioningState:provisioningState}' + disk_show_table_transform = disk_show_table_transform.replace('$zone$', 'Zones: (!zones && \' \') || join(` `, zones), ' if supported_api_version(ResourceType.MGMT_COMPUTE, min_api='2017-03-30') else ' ') op_var = 'disks_operations' op_class = 'DisksOperations' - cli_command(__name__, 'disk create', custom_path.format('create_managed_disk'), no_wait_param='no_wait') - cli_command(__name__, 'disk list', custom_path.format('list_managed_disks')) - cli_command(__name__, 'disk show', mgmt_path.format(op_var, op_class, 'get'), cf_disks, exception_handler=empty_on_404) + cli_command(__name__, 'disk create', custom_path.format('create_managed_disk'), no_wait_param='no_wait', table_transformer=disk_show_table_transform) + cli_command(__name__, 'disk list', custom_path.format('list_managed_disks'), table_transformer='[].' + disk_show_table_transform) + cli_command(__name__, 'disk show', mgmt_path.format(op_var, op_class, 'get'), cf_disks, exception_handler=empty_on_404, table_transformer=disk_show_table_transform) cli_command(__name__, 'disk delete', mgmt_path.format(op_var, op_class, 'delete'), cf_disks, no_wait_param='raw', confirmation=True) cli_command(__name__, 'disk grant-access', custom_path.format('grant_disk_access')) cli_command(__name__, 'disk revoke-access', mgmt_path.format(op_var, op_class, 'revoke_access'), cf_disks) - cli_generic_update_command(__name__, 'disk update', 'azure.mgmt.compute.compute.operations.{}#{}.get'.format(op_var, op_class), - 'azure.mgmt.compute.compute.operations.{}#{}.create_or_update'.format(op_var, op_class), + cli_generic_update_command(__name__, 'disk update', 'azure.mgmt.compute.operations.{}#{}.get'.format(op_var, op_class), + 'azure.mgmt.compute.operations.{}#{}.create_or_update'.format(op_var, op_class), custom_function_op=custom_path.format('update_managed_disk'), setter_arg_name='disk', factory=cf_disks, no_wait_param='raw') - cli_generic_wait_command(__name__, 'disk wait', 'azure.mgmt.compute.compute.operations.{}#{}.get'.format(op_var, op_class), cf_disks) + cli_generic_wait_command(__name__, 'disk wait', 'azure.mgmt.compute.operations.{}#{}.get'.format(op_var, op_class), cf_disks) op_var = 'snapshots_operations' op_class = 'SnapshotsOperations' @@ -310,8 +318,8 @@ def transform_sku_for_table_output(skus): cli_command(__name__, 'snapshot delete', mgmt_path.format(op_var, op_class, 'delete'), cf_snapshots) cli_command(__name__, 'snapshot grant-access', custom_path.format('grant_snapshot_access')) cli_command(__name__, 'snapshot revoke-access', mgmt_path.format(op_var, op_class, 'revoke_access'), cf_snapshots) - cli_generic_update_command(__name__, 'snapshot update', 'azure.mgmt.compute.compute.operations.{}#{}.get'.format(op_var, op_class), - 'azure.mgmt.compute.compute.operations.{}#{}.create_or_update'.format(op_var, op_class), + cli_generic_update_command(__name__, 'snapshot update', 'azure.mgmt.compute.operations.{}#{}.get'.format(op_var, op_class), + 'azure.mgmt.compute.operations.{}#{}.create_or_update'.format(op_var, op_class), custom_function_op=custom_path.format('update_snapshot'), setter_arg_name='snapshot', factory=cf_snapshots) 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 e83f5273a1d..a153f621cbd 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 @@ -299,7 +299,7 @@ def create_managed_disk(resource_group_name, disk_name, location=None, source=None, # pylint: disable=unused-argument # below are generated internally from 'source' source_blob_uri=None, source_disk=None, source_snapshot=None, - source_storage_account_id=None, no_wait=False, tags=None): + source_storage_account_id=None, no_wait=False, tags=None, zone=None): Disk, CreationData, DiskCreateOption = get_sdk(ResourceType.MGMT_COMPUTE, 'Disk', 'CreationData', 'DiskCreateOption', mod='models') @@ -319,6 +319,9 @@ def create_managed_disk(resource_group_name, disk_name, location=None, if size_gb is None and option == DiskCreateOption.empty: raise CLIError('usage error: --size-gb required to create an empty disk') disk = Disk(location, creation_data, (tags or {}), _get_sku_object(sku), disk_size_gb=size_gb) + if zone: + disk.zones = zone + client = _compute_client_factory() return client.disks.create_or_update(resource_group_name, disk_name, disk, raw=no_wait) @@ -477,7 +480,7 @@ def grant_snapshot_access(resource_group_name, snapshot_name, duration_in_second def _grant_access(resource_group_name, name, duration_in_seconds, is_disk): - from azure.mgmt.compute.models import AccessLevel + AccessLevel = get_sdk(ResourceType.MGMT_COMPUTE, 'AccessLevel', mod='models') client = _compute_client_factory() op = client.disks if is_disk else client.snapshots return op.grant_access(resource_group_name, name, AccessLevel.read, duration_in_seconds) @@ -1555,10 +1558,10 @@ def convert_av_set_to_managed_disk(resource_group_name, availability_set_name): # pylint: disable=too-many-locals, unused-argument, too-many-statements, too-many-branches -def create_vm(vm_name, resource_group_name, image=None, size='Standard_DS1_v2', location=None, tags=None, no_wait=False, - authentication_type=None, admin_password=None, admin_username=DefaultStr(getpass.getuser()), - ssh_dest_key_path=None, ssh_key_value=None, generate_ssh_keys=False, - availability_set=None, nics=None, nsg=None, nsg_rule=None, +def create_vm(vm_name, resource_group_name, image=None, size='Standard_DS1_v2', location=None, tags=None, + no_wait=False, authentication_type=None, admin_password=None, + admin_username=DefaultStr(getpass.getuser()), ssh_dest_key_path=None, ssh_key_value=None, + generate_ssh_keys=False, availability_set=None, nics=None, nsg=None, nsg_rule=None, private_ip_address=None, public_ip_address=None, public_ip_address_allocation='dynamic', public_ip_address_dns_name=None, os_disk_name=None, os_type=None, storage_account=None, os_caching=None, data_caching=None, storage_container_name=None, storage_sku=None, use_unmanaged_disk=False, @@ -1568,7 +1571,8 @@ def create_vm(vm_name, resource_group_name, image=None, size='Standard_DS1_v2', storage_account_type=None, vnet_type=None, nsg_type=None, public_ip_type=None, nic_type=None, validate=False, custom_data=None, secrets=None, plan_name=None, plan_product=None, plan_publisher=None, license_type=None, assign_identity=False, identity_scope=None, - identity_role=DefaultStr('Contributor'), identity_role_id=None, application_security_groups=None): + identity_role=DefaultStr('Contributor'), identity_role_id=None, application_security_groups=None, + zone=None): from azure.cli.core.commands.client_factory import get_subscription_id from azure.cli.core.util import random_string, hash_string from azure.cli.command_modules.vm._template_builder import (ArmTemplateBuilder, build_vm_resource, @@ -1630,7 +1634,7 @@ def create_vm(vm_name, resource_group_name, image=None, size='Standard_DS1_v2', tags, public_ip_address_allocation, public_ip_address_dns_name, - None)) + None, zone)) subnet_id = subnet if is_valid_resource_id(subnet) else \ '{}/virtualNetworks/{}/subnets/{}'.format(network_id_template, vnet_name, subnet) @@ -1683,7 +1687,7 @@ def create_vm(vm_name, resource_group_name, image=None, size='Standard_DS1_v2', admin_password, ssh_key_value, ssh_dest_key_path, image, os_disk_name, os_type, os_caching, data_caching, storage_sku, os_publisher, os_offer, os_sku, os_version, os_vhd_uri, attach_os_disk, attach_data_disks, data_disk_sizes_gb, image_data_disks, custom_data, secrets, - license_type) + license_type, zone) vm_resource['dependsOn'] = vm_dependencies if plan_name: @@ -1769,7 +1773,7 @@ def create_vmss(vmss_name, resource_group_name, image, single_placement_group=None, custom_data=None, secrets=None, plan_name=None, plan_product=None, plan_publisher=None, assign_identity=False, identity_scope=None, identity_role=DefaultStr('Contributor'), - identity_role_id=None): + identity_role_id=None, zones=None): from azure.cli.core.commands.client_factory import get_subscription_id from azure.cli.core.util import random_string, hash_string from azure.cli.command_modules.vm._template_builder import (ArmTemplateBuilder, StorageProfile, build_vmss_resource, @@ -1856,7 +1860,7 @@ def _get_public_ip_address_allocation(value, sku): master_template.add_resource(build_public_ip_resource( public_ip_address, location, tags, _get_public_ip_address_allocation(public_ip_address_allocation, load_balancer_sku), - public_ip_address_dns_name, load_balancer_sku)) + public_ip_address_dns_name, load_balancer_sku, zones)) public_ip_address_id = '{}/publicIPAddresses/{}'.format(network_id_template, public_ip_address) @@ -1887,7 +1891,7 @@ def _get_public_ip_address_allocation(value, sku): master_template.add_resource(build_public_ip_resource( public_ip_address, location, tags, _get_public_ip_address_allocation(public_ip_address_allocation, None), public_ip_address_dns_name, - None)) + None, zones)) public_ip_address_id = '{}/publicIPAddresses/{}'.format(network_id_template, public_ip_address) @@ -1963,7 +1967,7 @@ def _get_public_ip_address_allocation(value, sku): os_publisher, os_offer, os_sku, os_version, backend_address_pool_id, inbound_nat_pool_id, single_placement_group=single_placement_group, - custom_data=custom_data, secrets=secrets) + custom_data=custom_data, secrets=secrets, zones=zones) vmss_resource['dependsOn'] = vmss_dependencies if plan_name: diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_disk_create_zones.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_disk_create_zones.yaml new file mode 100644 index 00000000000..17cd0650a53 --- /dev/null +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_disk_create_zones.yaml @@ -0,0 +1,291 @@ +interactions: +- request: + body: '{"tags": {"use": "az-test"}, "location": "eastus2"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['51'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['329'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1190'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [disk create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['329'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:18 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: '{"zones": ["2"], "location": "eastus2", "properties": {"creationData": + {"createOption": "Empty"}, "diskSizeGB": 1}, "sku": {"name": "Premium_LRS"}, + "tags": {}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [disk create] + Connection: [keep-alive] + Content-Length: ['159'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123?api-version=2017-03-30 + response: + body: {string: "{\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n \"sku\": {\r\n \ + \ \"name\": \"Premium_LRS\"\r\n },\r\n \"properties\": {\r\n \"creationData\"\ + : {\r\n \"createOption\": \"Empty\"\r\n },\r\n \"diskSizeGB\":\ + \ 1,\r\n \"provisioningState\": \"Updating\",\r\n \"isArmResource\"\ + : true\r\n },\r\n \"location\": \"eastus2\",\r\n \"tags\": {}\r\n}"} + headers: + azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus2/DiskOperations/9b2bd01f-acee-4ce2-a530-c4955e49cc48?api-version=2017-03-30'] + cache-control: [no-cache] + content-length: ['292'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:21 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus2/DiskOperations/9b2bd01f-acee-4ce2-a530-c4955e49cc48?monitor=true&api-version=2017-03-30'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1195'] + status: {code: 202, message: Accepted} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [disk create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus2/DiskOperations/9b2bd01f-acee-4ce2-a530-c4955e49cc48?api-version=2017-03-30 + response: + body: {string: "{\r\n \"startTime\": \"2017-09-19T23:00:21.674462+00:00\",\r\n\ + \ \"endTime\": \"2017-09-19T23:00:21.8776497+00:00\",\r\n \"status\": \"\ + Succeeded\",\r\n \"properties\": {\r\n \"output\": {\"zones\":[\"2\"],\"\ + sku\":{\"name\":\"Premium_LRS\",\"tier\":\"Premium\"},\"properties\":{\"creationData\"\ + :{\"createOption\":\"Empty\"},\"diskSizeGB\":1,\"timeCreated\":\"2017-09-19T23:00:21.674462+00:00\"\ + ,\"provisioningState\":\"Succeeded\",\"diskState\":\"Unattached\"},\"type\"\ + :\"Microsoft.Compute/disks\",\"location\":\"eastus2\",\"tags\":{},\"id\":\"\ + /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123\"\ + ,\"name\":\"disk123\"}\r\n },\r\n \"name\": \"9b2bd01f-acee-4ce2-a530-c4955e49cc48\"\ + \r\n}"} + headers: + cache-control: [no-cache] + content-length: ['734'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:51 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [disk create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123?api-version=2017-03-30 + response: + body: {string: "{\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n \"sku\": {\r\n \ + \ \"name\": \"Premium_LRS\",\r\n \"tier\": \"Premium\"\r\n },\r\n \"\ + properties\": {\r\n \"creationData\": {\r\n \"createOption\": \"Empty\"\ + \r\n },\r\n \"diskSizeGB\": 1,\r\n \"timeCreated\": \"2017-09-19T23:00:21.674462+00:00\"\ + ,\r\n \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Unattached\"\ + \r\n },\r\n \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"\ + eastus2\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123\"\ + ,\r\n \"name\": \"disk123\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['634'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:51 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [disk show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123?api-version=2017-03-30 + response: + body: {string: "{\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n \"sku\": {\r\n \ + \ \"name\": \"Premium_LRS\",\r\n \"tier\": \"Premium\"\r\n },\r\n \"\ + properties\": {\r\n \"creationData\": {\r\n \"createOption\": \"Empty\"\ + \r\n },\r\n \"diskSizeGB\": 1,\r\n \"timeCreated\": \"2017-09-19T23:00:21.674462+00:00\"\ + ,\r\n \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Unattached\"\ + \r\n },\r\n \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"\ + eastus2\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123\"\ + ,\r\n \"name\": \"disk123\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['634'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:52 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [disk show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123?api-version=2017-03-30 + response: + body: {string: "{\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n \"sku\": {\r\n \ + \ \"name\": \"Premium_LRS\",\r\n \"tier\": \"Premium\"\r\n },\r\n \"\ + properties\": {\r\n \"creationData\": {\r\n \"createOption\": \"Empty\"\ + \r\n },\r\n \"diskSizeGB\": 1,\r\n \"timeCreated\": \"2017-09-19T23:00:21.674462+00:00\"\ + ,\r\n \"provisioningState\": \"Succeeded\",\r\n \"diskState\": \"Unattached\"\ + \r\n },\r\n \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"\ + eastus2\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123\"\ + ,\r\n \"name\": \"disk123\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['634'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:53 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [disk list] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks?api-version=2017-03-30 + response: + body: {string: "{\r\n \"value\": [\r\n {\r\n \"zones\": [\r\n \ + \ \"2\"\r\n ],\r\n \"sku\": {\r\n \"name\": \"Premium_LRS\"\ + ,\r\n \"tier\": \"Premium\"\r\n },\r\n \"properties\": {\r\ + \n \"creationData\": {\r\n \"createOption\": \"Empty\"\r\n\ + \ },\r\n \"diskSizeGB\": 1,\r\n \"timeCreated\": \"2017-09-19T23:00:21.674462+00:00\"\ + ,\r\n \"provisioningState\": \"Succeeded\",\r\n \"diskState\"\ + : \"Unattached\"\r\n },\r\n \"type\": \"Microsoft.Compute/disks\"\ + ,\r\n \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"id\"\ + : \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/disk123\"\ + ,\r\n \"name\": \"disk123\"\r\n }\r\n ]\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['751'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:54 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 19 Sep 2017 23:00:56 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdGRkJJTlBBQTJIREQ3TzVUTFZBRFVKVUZENDdCVVlPVUpXWHwzODY2NTlENTVDN0ZERUVDLUVBU1RVUzIiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czIifQ?api-version=2017-05-10'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1198'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_vm_create_zones.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_vm_create_zones.yaml new file mode 100644 index 00000000000..dc045426ee6 --- /dev/null +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_vm_create_zones.yaml @@ -0,0 +1,771 @@ +interactions: +- request: + body: '{"location": "eastus2", "tags": {"use": "az-test"}}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['51'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['329'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:01:00 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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['329'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:01:00 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: + Connection: [close] + Host: [raw.githubusercontent.com] + User-Agent: [Python-urllib/3.5] + method: GET + uri: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json + response: + body: {string: "{\n \"$schema\":\"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json\"\ + ,\n \"contentVersion\":\"1.0.0.0\",\n \"parameters\":{},\n \"variables\"\ + :{},\n \"resources\":[],\n\n \"outputs\":{\n \"aliases\":{\n \"\ + type\":\"object\",\n \"value\":{\n\n \"Linux\":{\n \"\ + CentOS\":{\n \"publisher\":\"OpenLogic\",\n \"offer\"\ + :\"CentOS\",\n \"sku\":\"7.3\",\n \"version\":\"latest\"\ + \n },\n \"CoreOS\":{\n \"publisher\":\"CoreOS\"\ + ,\n \"offer\":\"CoreOS\",\n \"sku\":\"Stable\",\n \ + \ \"version\":\"latest\"\n },\n \"Debian\":{\n\ + \ \"publisher\":\"credativ\",\n \"offer\":\"Debian\"\ + ,\n \"sku\":\"8\",\n \"version\":\"latest\"\n \ + \ },\n \"openSUSE-Leap\": {\n \"publisher\":\"SUSE\"\ + ,\n \"offer\":\"openSUSE-Leap\",\n \"sku\":\"42.2\"\ + ,\n \"version\": \"latest\"\n },\n \"RHEL\":{\n\ + \ \"publisher\":\"RedHat\",\n \"offer\":\"RHEL\",\n\ + \ \"sku\":\"7.3\",\n \"version\":\"latest\"\n \ + \ },\n \"SLES\":{\n \"publisher\":\"SUSE\",\n \ + \ \"offer\":\"SLES\",\n \"sku\":\"12-SP2\",\n \ + \ \"version\":\"latest\"\n },\n \"UbuntuLTS\":{\n \ + \ \"publisher\":\"Canonical\",\n \"offer\":\"UbuntuServer\"\ + ,\n \"sku\":\"16.04-LTS\",\n \"version\":\"latest\"\n\ + \ }\n },\n\n \"Windows\":{\n \"Win2016Datacenter\"\ + :{\n \"publisher\":\"MicrosoftWindowsServer\",\n \"\ + offer\":\"WindowsServer\",\n \"sku\":\"2016-Datacenter\",\n \ + \ \"version\":\"latest\"\n },\n \"Win2012R2Datacenter\"\ + :{\n \"publisher\":\"MicrosoftWindowsServer\",\n \"\ + offer\":\"WindowsServer\",\n \"sku\":\"2012-R2-Datacenter\",\n\ + \ \"version\":\"latest\"\n },\n \"Win2012Datacenter\"\ + :{\n \"publisher\":\"MicrosoftWindowsServer\",\n \"\ + offer\":\"WindowsServer\",\n \"sku\":\"2012-Datacenter\",\n \ + \ \"version\":\"latest\"\n },\n \"Win2008R2SP1\"\ + :{\n \"publisher\":\"MicrosoftWindowsServer\",\n \"\ + offer\":\"WindowsServer\",\n \"sku\":\"2008-R2-SP1\",\n \ + \ \"version\":\"latest\"\n }\n }\n }\n }\n }\n\ + }\n"} + headers: + accept-ranges: [bytes] + access-control-allow-origin: ['*'] + cache-control: [max-age=300] + connection: [close] + content-length: ['2235'] + content-security-policy: [default-src 'none'; style-src 'unsafe-inline'] + content-type: [text/plain; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:01:01 GMT'] + etag: ['"d6824855d13e27c5258a680eb60f635d088fd05e"'] + expires: ['Tue, 19 Sep 2017 23:06:01 GMT'] + source-age: ['202'] + strict-transport-security: [max-age=31536000] + vary: ['Authorization,Accept-Encoding'] + via: [1.1 varnish] + x-cache: [HIT] + x-cache-hits: ['1'] + x-content-type-options: [nosniff] + x-fastly-request-id: [4688aa8463ef9d00eb8c19686fd7eff5774e5149] + x-frame-options: [deny] + x-geo-block-list: [''] + x-github-request-id: ['EF22:28E1F:36BB17D:3A1BC06:59C1A0E2'] + x-served-by: [cache-dfw18632-DFW] + x-timer: ['S1505862061.385397,VS0,VE1'] + x-xss-protection: [1; mode=block] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks?api-version=2017-09-01 + response: + body: {string: '{"value":[]}'} + headers: + cache-control: [no-cache] + content-length: ['12'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:01:01 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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network","namespace":"Microsoft.Network","authorizations":[{"applicationId":"2cf9eb86-36b5-49dc-86ae-9a63135dfa8c","roleDefinitionId":"13ba9ab4-19f0-4804-adc4-14ece36cc7a1"},{"applicationId":"7c33bfcb-8d33-48d6-8e60-dc6404003489","roleDefinitionId":"ad6261e4-fa9a-4642-aa5f-104f1b67e9e3"},{"applicationId":"1e3e4475-288f-4018-a376-df66fd7fac5f","roleDefinitionId":"1d538b69-3d87-4e56-8ff8-25786fd48261"}],"resourceTypes":[{"resourceType":"virtualNetworks","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"publicIPAddresses","locations":["West + US","East US","East Asia","Southeast Asia","North Central US","South Central + US","Japan East","Japan West","Brazil South","Australia East","Australia Southeast","Central + India","South India","West India","Canada Central","Canada East","West Central + US","West US 2","UK West","UK South","Korea Central","Korea South","North + Europe","West Europe","Central US","East US 2","Central US EUAP","East US + 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"zoneMappings":[{"location":"East + US 2","zones":["1","2","3"]},{"location":"Central US","zones":["1","2","3"]},{"location":"West + Europe","zones":["1","2","3"]},{"location":"East US 2 EUAP","zones":["1","2","3"]},{"location":"Central + US EUAP","zones":["1","2"]}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"networkInterfaces","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"loadBalancers","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"networkSecurityGroups","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"routeTables","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"networkWatchers","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"networkWatchers/connectionMonitors","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01"]},{"resourceType":"virtualNetworkGateways","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"localNetworkGateways","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"connections","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"applicationGateways","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"capabilities":"SystemAssignedResourceIdentity"},{"resourceType":"locations","locations":[],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}]},{"resourceType":"locations/operations","locations":[],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}]},{"resourceType":"locations/operationResults","locations":[],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}]},{"resourceType":"locations/CheckDnsNameAvailability","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"]},{"resourceType":"locations/usages","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2015-06-15"}]},{"resourceType":"locations/virtualNetworkAvailableEndpointServices","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01"]},{"resourceType":"operations","locations":[],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"]},{"resourceType":"dnszones","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"],"apiProfiles":[{"profileVersion":"2017-03-09-profile","apiVersion":"2016-04-01"}],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"dnsOperationResults","locations":["global"],"apiVersions":["2016-04-01"]},{"resourceType":"dnsOperationStatuses","locations":["global"],"apiVersions":["2016-04-01"]},{"resourceType":"dnszones/A","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"dnszones/AAAA","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"dnszones/CNAME","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"dnszones/PTR","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"dnszones/MX","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"dnszones/TXT","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"dnszones/SRV","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"dnszones/SOA","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"dnszones/NS","locations":["global"],"apiVersions":["2016-04-01","2015-05-04-preview"]},{"resourceType":"trafficmanagerprofiles","locations":["global"],"apiVersions":["2017-05-01","2017-03-01","2015-11-01","2015-04-28-preview"],"capabilities":"CrossResourceGroupResourceMove, + CrossSubscriptionResourceMove"},{"resourceType":"trafficmanagerprofiles/heatMaps","locations":["global"],"apiVersions":["2017-09-01-preview"]},{"resourceType":"checkTrafficManagerNameAvailability","locations":["global"],"apiVersions":["2017-05-01","2017-03-01","2015-11-01","2015-04-28-preview"]},{"resourceType":"trafficManagerUserMetricsKeys","locations":["global"],"apiVersions":["2017-09-01-preview"]},{"resourceType":"trafficManagerGeographicHierarchies","locations":["global"],"apiVersions":["2017-05-01","2017-03-01"]},{"resourceType":"expressRouteCircuits","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"],"capabilities":"None"},{"resourceType":"expressRouteServiceProviders","locations":[],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01","2016-11-01","2016-10-01","2016-09-01","2016-08-01","2016-07-01","2016-06-01","2016-03-30","2015-06-15","2015-05-01-preview","2014-12-01-preview"]},{"resourceType":"applicationGatewayAvailableWafRuleSets","locations":[],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01"]},{"resourceType":"applicationGatewayAvailableSslOptions","locations":[],"apiVersions":["2017-09-01","2017-08-01","2017-06-01"]},{"resourceType":"routeFilters","locations":["West + US","East US","North Europe","West Europe","East Asia","Southeast Asia","North + Central US","South Central US","Central US","East US 2","Japan East","Japan + West","Brazil South","Australia East","Australia Southeast","Central India","South + India","West India","Canada Central","Canada East","West Central US","West + US 2","UK West","UK South","Korea Central","Korea South","Central US EUAP","East + US 2 EUAP"],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01"],"capabilities":"None"},{"resourceType":"bgpServiceCommunities","locations":[],"apiVersions":["2017-09-01","2017-08-01","2017-06-01","2017-04-01","2017-03-01","2016-12-01"]}],"registrationState":"Registered"}'} + headers: + cache-control: [no-cache] + content-length: ['18154'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:01:01 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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip?api-version=2017-09-01 + response: + body: {string: '{"error":{"code":"ResourceNotFound","message":"The Resource ''Microsoft.Network/publicIPAddresses/vm123ip'' + under resource group ''clitest.rg000001'' was not found."}}'} + headers: + cache-control: [no-cache] + content-length: ['222'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:01:02 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: 'b''{"properties": {"mode": "Incremental", "template": {"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "resources": [{"type": "Microsoft.Network/virtualNetworks", "apiVersion": "2015-06-15", + "properties": {"subnets": [{"name": "vm123Subnet", "properties": {"addressPrefix": + "10.0.0.0/24"}}], "addressSpace": {"addressPrefixes": ["10.0.0.0/16"]}}, "name": + "vm123VNET", "dependsOn": [], "location": "eastus2", "tags": {}}, {"type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2015-06-15", "properties": {"securityRules": [{"name": "default-allow-ssh", + "properties": {"sourcePortRange": "*", "destinationAddressPrefix": "*", "priority": + 1000, "sourceAddressPrefix": "*", "protocol": "Tcp", "access": "Allow", "destinationPortRange": + "22", "direction": "Inbound"}}]}, "name": "vm123NSG", "dependsOn": [], "location": + "eastus2", "tags": {}}, {"type": "Microsoft.Network/publicIPAddresses", "apiVersion": + "2017-09-01", "properties": {"publicIPAllocationMethod": "dynamic"}, "name": + "vm123ip", "dependsOn": [], "location": "eastus2", "tags": {}, "zones": ["2"]}, + {"type": "Microsoft.Network/networkInterfaces", "apiVersion": "2015-06-15", + "properties": {"networkSecurityGroup": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkSecurityGroups/vm123NSG"}, + "ipConfigurations": [{"name": "ipconfigvm123", "properties": {"publicIPAddress": + {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip"}, + "privateIPAllocationMethod": "Dynamic", "subnet": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vm123VNET/subnets/vm123Subnet"}}}]}, + "name": "vm123VMNic", "dependsOn": ["Microsoft.Network/virtualNetworks/vm123VNET", + "Microsoft.Network/networkSecurityGroups/vm123NSG", "Microsoft.Network/publicIpAddresses/vm123ip"], + "location": "eastus2", "tags": {}}, {"type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2017-03-30", "properties": {"osProfile": {"adminUsername": "clitester", + "computerName": "vm123", "adminPassword": "PasswordPassword1!"}, "hardwareProfile": + {"vmSize": "Standard_DS1_v2"}, "storageProfile": {"osDisk": {"caching": null, + "name": null, "createOption": "fromImage", "managedDisk": {"storageAccountType": + null}}, "imageReference": {"sku": "8", "publisher": "credativ", "version": "latest", + "offer": "Debian"}}, "networkProfile": {"networkInterfaces": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic"}]}}, + "name": "vm123", "dependsOn": ["Microsoft.Network/networkInterfaces/vm123VMNic"], + "location": "eastus2", "tags": {}, "zones": ["2"]}], "parameters": {}, "outputs": + {}, "variables": {}, "contentVersion": "1.0.0.0"}, "parameters": {}}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Length: ['3201'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Resources/deployments/vm_deploy_YfWXpgKsT5Ea9rxxI0gEavI9855rrlbz","name":"vm_deploy_YfWXpgKsT5Ea9rxxI0gEavI9855rrlbz","properties":{"templateHash":"4791482796418219748","parameters":{},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2017-09-19T23:01:05.2088096Z","duration":"PT1.1223605S","correlationId":"695668e5-a145-49d3-a0c6-8812cc9e0635","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus2"]},{"resourceType":"networkSecurityGroups","locations":["eastus2"]},{"resourceType":"publicIPAddresses","locations":["eastus2"]},{"resourceType":"networkInterfaces","locations":["eastus2"]}]},{"namespace":"Microsoft.Compute","resourceTypes":[{"resourceType":"virtualMachines","locations":["eastus2"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vm123VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"vm123VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkSecurityGroups/vm123NSG","resourceType":"Microsoft.Network/networkSecurityGroups","resourceName":"vm123NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"vm123ip"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"vm123VMNic"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"vm123VMNic"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachines/vm123","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"vm123"}]}}'} + headers: + azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/vm_deploy_YfWXpgKsT5Ea9rxxI0gEavI9855rrlbz/operationStatuses/08586957448213911813?api-version=2017-05-10'] + cache-control: [no-cache] + content-length: ['2718'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:01: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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957448213911813?api-version=2017-05-10 + response: + body: {string: '{"status":"Running"}'} + headers: + cache-control: [no-cache] + content-length: ['20'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:01: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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957448213911813?api-version=2017-05-10 + response: + body: {string: '{"status":"Running"}'} + headers: + cache-control: [no-cache] + content-length: ['20'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:02: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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957448213911813?api-version=2017-05-10 + response: + body: {string: '{"status":"Running"}'} + headers: + cache-control: [no-cache] + content-length: ['20'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:02: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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957448213911813?api-version=2017-05-10 + response: + body: {string: '{"status":"Succeeded"}'} + headers: + cache-control: [no-cache] + content-length: ['22'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:03: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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Resources/deployments/vm_deploy_YfWXpgKsT5Ea9rxxI0gEavI9855rrlbz","name":"vm_deploy_YfWXpgKsT5Ea9rxxI0gEavI9855rrlbz","properties":{"templateHash":"4791482796418219748","parameters":{},"mode":"Incremental","provisioningState":"Succeeded","timestamp":"2017-09-19T23:02:51.7858005Z","duration":"PT1M47.6993514S","correlationId":"695668e5-a145-49d3-a0c6-8812cc9e0635","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus2"]},{"resourceType":"networkSecurityGroups","locations":["eastus2"]},{"resourceType":"publicIPAddresses","locations":["eastus2"]},{"resourceType":"networkInterfaces","locations":["eastus2"]}]},{"namespace":"Microsoft.Compute","resourceTypes":[{"resourceType":"virtualMachines","locations":["eastus2"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vm123VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"vm123VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkSecurityGroups/vm123NSG","resourceType":"Microsoft.Network/networkSecurityGroups","resourceName":"vm123NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"vm123ip"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"vm123VMNic"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic","resourceType":"Microsoft.Network/networkInterfaces","resourceName":"vm123VMNic"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachines/vm123","resourceType":"Microsoft.Compute/virtualMachines","resourceName":"vm123"}],"outputs":{},"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachines/vm123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkSecurityGroups/vm123NSG"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vm123VNET"}]}}'} + headers: + cache-control: [no-cache] + content-length: ['3789'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:03:09 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'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachines/vm123?api-version=2017-03-30&$expand=instanceView + response: + body: {string: "{\r\n \"properties\": {\r\n \"vmId\": \"cb6ec6d8-db7e-495e-ac79-2758967f64a8\"\ + ,\r\n \"hardwareProfile\": {\r\n \"vmSize\": \"Standard_DS1_v2\"\r\ + \n },\r\n \"storageProfile\": {\r\n \"imageReference\": {\r\n \ + \ \"publisher\": \"credativ\",\r\n \"offer\": \"Debian\",\r\n\ + \ \"sku\": \"8\",\r\n \"version\": \"latest\"\r\n },\r\n\ + \ \"osDisk\": {\r\n \"osType\": \"Linux\",\r\n \"name\"\ + : \"vm123_OsDisk_1_531bfc1c04d64b41bbe1b4a0d42b7295\",\r\n \"createOption\"\ + : \"FromImage\",\r\n \"caching\": \"ReadWrite\",\r\n \"managedDisk\"\ + : {\r\n \"storageAccountType\": \"Premium_LRS\",\r\n \"\ + id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/vm123_OsDisk_1_531bfc1c04d64b41bbe1b4a0d42b7295\"\ + \r\n },\r\n \"diskSizeGB\": 30\r\n },\r\n \"dataDisks\"\ + : []\r\n },\r\n \"osProfile\": {\r\n \"computerName\": \"vm123\"\ + ,\r\n \"adminUsername\": \"clitester\",\r\n \"linuxConfiguration\"\ + : {\r\n \"disablePasswordAuthentication\": false\r\n },\r\n \ + \ \"secrets\": []\r\n },\r\n \"networkProfile\": {\"networkInterfaces\"\ + :[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic\"\ + }]},\r\n \"provisioningState\": \"Succeeded\",\r\n \"instanceView\"\ + : {\r\n \"vmAgent\": {\r\n \"vmAgentVersion\": \"Unknown\",\r\n\ + \ \"statuses\": [\r\n {\r\n \"code\": \"ProvisioningState/Unavailable\"\ + ,\r\n \"level\": \"Warning\",\r\n \"displayStatus\"\ + : \"Not Ready\",\r\n \"message\": \"VM status blob is found but\ + \ not yet populated.\",\r\n \"time\": \"2017-09-19T23:03:12+00:00\"\ + \r\n }\r\n ]\r\n },\r\n \"disks\": [\r\n \ + \ {\r\n \"name\": \"vm123_OsDisk_1_531bfc1c04d64b41bbe1b4a0d42b7295\"\ + ,\r\n \"statuses\": [\r\n {\r\n \"code\"\ + : \"ProvisioningState/succeeded\",\r\n \"level\": \"Info\",\r\ + \n \"displayStatus\": \"Provisioning succeeded\",\r\n \ + \ \"time\": \"2017-09-19T23:01:28.4139235+00:00\"\r\n }\r\ + \n ]\r\n }\r\n ],\r\n \"statuses\": [\r\n \ + \ {\r\n \"code\": \"ProvisioningState/succeeded\",\r\n \ + \ \"level\": \"Info\",\r\n \"displayStatus\": \"Provisioning succeeded\"\ + ,\r\n \"time\": \"2017-09-19T23:02:38.8844897+00:00\"\r\n \ + \ },\r\n {\r\n \"code\": \"PowerState/running\",\r\n \ + \ \"level\": \"Info\",\r\n \"displayStatus\": \"VM running\"\r\ + \n }\r\n ]\r\n }\r\n },\r\n \"zones\": [\r\n \"2\"\r\n\ + \ ],\r\n \"type\": \"Microsoft.Compute/virtualMachines\",\r\n \"location\"\ + : \"eastus2\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachines/vm123\"\ + ,\r\n \"name\": \"vm123\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['2927'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:03:14 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"vm123VMNic\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic\"\ + ,\r\n \"etag\": \"W/\\\"121b4506-2431-415a-84bf-68317cd9bf16\\\"\",\r\n \ + \ \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"properties\": {\r\n\ + \ \"provisioningState\": \"Succeeded\",\r\n \"resourceGuid\": \"1d71f042-74de-4cc3-978e-5a0344bc55b4\"\ + ,\r\n \"ipConfigurations\": [\r\n {\r\n \"name\": \"ipconfigvm123\"\ + ,\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic/ipConfigurations/ipconfigvm123\"\ + ,\r\n \"etag\": \"W/\\\"121b4506-2431-415a-84bf-68317cd9bf16\\\"\"\ + ,\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"privateIPAddress\": \"10.0.0.4\",\r\n \"privateIPAllocationMethod\"\ + : \"Dynamic\",\r\n \"publicIPAddress\": {\r\n \"id\":\ + \ \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip\"\ + \r\n },\r\n \"subnet\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vm123VNET/subnets/vm123Subnet\"\ + \r\n },\r\n \"primary\": true,\r\n \"privateIPAddressVersion\"\ + : \"IPv4\"\r\n }\r\n }\r\n ],\r\n \"dnsSettings\": {\r\n\ + \ \"dnsServers\": [],\r\n \"appliedDnsServers\": [],\r\n \"\ + internalDomainNameSuffix\": \"jsgl5recjs1uvjrduchaottyvc.cx.internal.cloudapp.net\"\ + \r\n },\r\n \"macAddress\": \"00-0D-3A-04-3C-45\",\r\n \"enableAcceleratedNetworking\"\ + : false,\r\n \"enableIPForwarding\": false,\r\n \"networkSecurityGroup\"\ + : {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkSecurityGroups/vm123NSG\"\ + \r\n },\r\n \"primary\": true,\r\n \"virtualMachine\": {\r\n \ + \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachines/vm123\"\ + \r\n }\r\n },\r\n \"type\": \"Microsoft.Network/networkInterfaces\"\r\ + \n}"} + headers: + cache-control: [no-cache] + content-length: ['2510'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:03:14 GMT'] + etag: [W/"121b4506-2431-415a-84bf-68317cd9bf16"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vm create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"vm123ip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip\"\ + ,\r\n \"etag\": \"W/\\\"ea21dd01-0d32-4591-b93d-062bbfff2398\\\"\",\r\n \ + \ \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"zones\": [\r\n \"\ + 2\"\r\n ],\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"resourceGuid\": \"8cd9ae67-76d2-40e9-8549-5aecca1f5bb8\",\r\n \ + \ \"ipAddress\": \"40.84.51.169\",\r\n \"publicIPAddressVersion\": \"\ + IPv4\",\r\n \"publicIPAllocationMethod\": \"Dynamic\",\r\n \"idleTimeoutInMinutes\"\ + : 4,\r\n \"ipConfiguration\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic/ipConfigurations/ipconfigvm123\"\ + \r\n }\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\ + \n \"sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['1003'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:03:15 GMT'] + etag: [W/"ea21dd01-0d32-4591-b93d-062bbfff2398"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [network public-ip show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip?api-version=2017-09-01 + response: + body: {string: "{\r\n \"name\": \"vm123ip\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vm123ip\"\ + ,\r\n \"etag\": \"W/\\\"ea21dd01-0d32-4591-b93d-062bbfff2398\\\"\",\r\n \ + \ \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"zones\": [\r\n \"\ + 2\"\r\n ],\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\ + ,\r\n \"resourceGuid\": \"8cd9ae67-76d2-40e9-8549-5aecca1f5bb8\",\r\n \ + \ \"ipAddress\": \"40.84.51.169\",\r\n \"publicIPAddressVersion\": \"\ + IPv4\",\r\n \"publicIPAllocationMethod\": \"Dynamic\",\r\n \"idleTimeoutInMinutes\"\ + : 4,\r\n \"ipConfiguration\": {\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic/ipConfigurations/ipconfigvm123\"\ + \r\n }\r\n },\r\n \"type\": \"Microsoft.Network/publicIPAddresses\",\r\ + \n \"sku\": {\r\n \"name\": \"Basic\"\r\n }\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['1003'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:03:15 GMT'] + etag: [W/"ea21dd01-0d32-4591-b93d-062bbfff2398"] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vm show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachines/vm123?api-version=2017-03-30 + response: + body: {string: "{\r\n \"properties\": {\r\n \"vmId\": \"cb6ec6d8-db7e-495e-ac79-2758967f64a8\"\ + ,\r\n \"hardwareProfile\": {\r\n \"vmSize\": \"Standard_DS1_v2\"\r\ + \n },\r\n \"storageProfile\": {\r\n \"imageReference\": {\r\n \ + \ \"publisher\": \"credativ\",\r\n \"offer\": \"Debian\",\r\n\ + \ \"sku\": \"8\",\r\n \"version\": \"latest\"\r\n },\r\n\ + \ \"osDisk\": {\r\n \"osType\": \"Linux\",\r\n \"name\"\ + : \"vm123_OsDisk_1_531bfc1c04d64b41bbe1b4a0d42b7295\",\r\n \"createOption\"\ + : \"FromImage\",\r\n \"caching\": \"ReadWrite\",\r\n \"managedDisk\"\ + : {\r\n \"storageAccountType\": \"Premium_LRS\",\r\n \"\ + id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/disks/vm123_OsDisk_1_531bfc1c04d64b41bbe1b4a0d42b7295\"\ + \r\n },\r\n \"diskSizeGB\": 30\r\n },\r\n \"dataDisks\"\ + : []\r\n },\r\n \"osProfile\": {\r\n \"computerName\": \"vm123\"\ + ,\r\n \"adminUsername\": \"clitester\",\r\n \"linuxConfiguration\"\ + : {\r\n \"disablePasswordAuthentication\": false\r\n },\r\n \ + \ \"secrets\": []\r\n },\r\n \"networkProfile\": {\"networkInterfaces\"\ + :[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/networkInterfaces/vm123VMNic\"\ + }]},\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"zones\": [\r\ + \n \"2\"\r\n ],\r\n \"type\": \"Microsoft.Compute/virtualMachines\",\r\ + \n \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachines/vm123\"\ + ,\r\n \"name\": \"vm123\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['1752'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:03:16 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 19 Sep 2017 23:03:17 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkdLNFhCRkVHUlk0R0ozNDZNUERWTURFVTZWN1BBTkZFRlZSNXw1NzA0MEQyMDZBMjIwNEJDLUVBU1RVUzIiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czIifQ?api-version=2017-05-10'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_vmss_create_zones.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_vmss_create_zones.yaml new file mode 100644 index 00000000000..cde28fbee7d --- /dev/null +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/latest/test_vmss_create_zones.yaml @@ -0,0 +1,529 @@ +interactions: +- request: + body: '{"tags": {"use": "az-test"}, "location": "eastus2"}' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group create] + Connection: [keep-alive] + Content-Length: ['51'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['329'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:55 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'] + CommandName: [vmss create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001","name":"clitest.rg000001","location":"eastus2","tags":{"use":"az-test"},"properties":{"provisioningState":"Succeeded"}}'} + headers: + cache-control: [no-cache] + content-length: ['329'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:56 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: + Connection: [close] + Host: [raw.githubusercontent.com] + User-Agent: [Python-urllib/3.5] + method: GET + uri: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json + response: + body: {string: "{\n \"$schema\":\"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json\"\ + ,\n \"contentVersion\":\"1.0.0.0\",\n \"parameters\":{},\n \"variables\"\ + :{},\n \"resources\":[],\n\n \"outputs\":{\n \"aliases\":{\n \"\ + type\":\"object\",\n \"value\":{\n\n \"Linux\":{\n \"\ + CentOS\":{\n \"publisher\":\"OpenLogic\",\n \"offer\"\ + :\"CentOS\",\n \"sku\":\"7.3\",\n \"version\":\"latest\"\ + \n },\n \"CoreOS\":{\n \"publisher\":\"CoreOS\"\ + ,\n \"offer\":\"CoreOS\",\n \"sku\":\"Stable\",\n \ + \ \"version\":\"latest\"\n },\n \"Debian\":{\n\ + \ \"publisher\":\"credativ\",\n \"offer\":\"Debian\"\ + ,\n \"sku\":\"8\",\n \"version\":\"latest\"\n \ + \ },\n \"openSUSE-Leap\": {\n \"publisher\":\"SUSE\"\ + ,\n \"offer\":\"openSUSE-Leap\",\n \"sku\":\"42.2\"\ + ,\n \"version\": \"latest\"\n },\n \"RHEL\":{\n\ + \ \"publisher\":\"RedHat\",\n \"offer\":\"RHEL\",\n\ + \ \"sku\":\"7.3\",\n \"version\":\"latest\"\n \ + \ },\n \"SLES\":{\n \"publisher\":\"SUSE\",\n \ + \ \"offer\":\"SLES\",\n \"sku\":\"12-SP2\",\n \ + \ \"version\":\"latest\"\n },\n \"UbuntuLTS\":{\n \ + \ \"publisher\":\"Canonical\",\n \"offer\":\"UbuntuServer\"\ + ,\n \"sku\":\"16.04-LTS\",\n \"version\":\"latest\"\n\ + \ }\n },\n\n \"Windows\":{\n \"Win2016Datacenter\"\ + :{\n \"publisher\":\"MicrosoftWindowsServer\",\n \"\ + offer\":\"WindowsServer\",\n \"sku\":\"2016-Datacenter\",\n \ + \ \"version\":\"latest\"\n },\n \"Win2012R2Datacenter\"\ + :{\n \"publisher\":\"MicrosoftWindowsServer\",\n \"\ + offer\":\"WindowsServer\",\n \"sku\":\"2012-R2-Datacenter\",\n\ + \ \"version\":\"latest\"\n },\n \"Win2012Datacenter\"\ + :{\n \"publisher\":\"MicrosoftWindowsServer\",\n \"\ + offer\":\"WindowsServer\",\n \"sku\":\"2012-Datacenter\",\n \ + \ \"version\":\"latest\"\n },\n \"Win2008R2SP1\"\ + :{\n \"publisher\":\"MicrosoftWindowsServer\",\n \"\ + offer\":\"WindowsServer\",\n \"sku\":\"2008-R2-SP1\",\n \ + \ \"version\":\"latest\"\n }\n }\n }\n }\n }\n\ + }\n"} + headers: + accept-ranges: [bytes] + access-control-allow-origin: ['*'] + cache-control: [max-age=300] + connection: [close] + content-length: ['2235'] + content-security-policy: [default-src 'none'; style-src 'unsafe-inline'] + content-type: [text/plain; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:56 GMT'] + etag: ['"d6824855d13e27c5258a680eb60f635d088fd05e"'] + expires: ['Tue, 19 Sep 2017 23:02:56 GMT'] + source-age: ['206'] + strict-transport-security: [max-age=31536000] + vary: ['Authorization,Accept-Encoding'] + via: [1.1 varnish] + x-cache: [HIT] + x-cache-hits: ['1'] + x-content-type-options: [nosniff] + x-fastly-request-id: [4449ff292107e08c83b58201353647eb1ef7c809] + x-frame-options: [deny] + x-geo-block-list: [''] + x-github-request-id: ['371C:2F967:3A0F304:3E564E6:59C1A026'] + x-served-by: [cache-sea1045-SEA] + x-timer: ['S1505861877.891917,VS0,VE0'] + x-xss-protection: [1; mode=block] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vmss create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 networkmanagementclient/1.5.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks?api-version=2017-09-01 + response: + body: {string: '{"value":[]}'} + headers: + cache-control: [no-cache] + content-length: ['12'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:56 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: 'b''{"properties": {"parameters": {}, "mode": "Incremental", "template": + {"parameters": {}, "variables": {}, "outputs": {"VMSS": {"type": "object", "value": + "[reference(resourceId(\''Microsoft.Compute/virtualMachineScaleSets\'', \''vmss123\''),providers(\''Microsoft.Compute\'', + \''virtualMachineScaleSets\'').apiVersions[0])]"}}, "resources": [{"name": "vmss123VNET", + "properties": {"addressSpace": {"addressPrefixes": ["10.0.0.0/16"]}, "subnets": + [{"name": "vmss123Subnet", "properties": {"addressPrefix": "10.0.0.0/24"}}]}, + "apiVersion": "2015-06-15", "type": "Microsoft.Network/virtualNetworks", "tags": + {}, "dependsOn": [], "location": "eastus2"}, {"type": "Microsoft.Network/publicIPAddresses", + "zones": ["2"], "properties": {"publicIPAllocationMethod": "Dynamic"}, "apiVersion": + "2017-09-01", "name": "vmss123LBPublicIP", "sku": {"name": "Basic"}, "tags": + {}, "dependsOn": [], "location": "eastus2"}, {"apiVersion": "2017-09-01", "type": + "Microsoft.Network/loadBalancers", "properties": {"frontendIPConfigurations": + [{"name": "loadBalancerFrontEnd", "properties": {"publicIPAddress": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vmss123LBPublicIP"}}}], + "backendAddressPools": [{"name": "vmss123LBBEPool"}], "inboundNatPools": [{"name": + "vmss123LBNatPool", "properties": {"frontendPortRangeStart": "50000", "frontendIPConfiguration": + {"id": "[concat(resourceId(\''Microsoft.Network/loadBalancers\'', \''vmss123LB\''), + \''/frontendIPConfigurations/\'', \''loadBalancerFrontEnd\'')]"}, "backendPort": + 22, "frontendPortRangeEnd": "50119", "protocol": "tcp"}}]}, "sku": {"name": + "Basic"}, "name": "vmss123LB", "tags": {}, "dependsOn": ["Microsoft.Network/virtualNetworks/vmss123VNET", + "Microsoft.Network/publicIpAddresses/vmss123LBPublicIP"], "location": "eastus2"}, + {"type": "Microsoft.Compute/virtualMachineScaleSets", "zones": ["2"], "properties": + {"upgradePolicy": {"mode": "Manual"}, "virtualMachineProfile": {"osProfile": + {"adminPassword": "PasswordPassword1!", "adminUsername": "clitester", "computerNamePrefix": + "vmss10ee4"}, "networkProfile": {"networkInterfaceConfigurations": [{"name": + "vmss10ee4Nic", "properties": {"ipConfigurations": [{"name": "vmss10ee4IPConfig", + "properties": {"subnet": {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET/subnets/vmss123Subnet"}, + "loadBalancerBackendAddressPools": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/backendAddressPools/vmss123LBBEPool"}], + "loadBalancerInboundNatPools": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/inboundNatPools/vmss123LBNatPool"}]}}], + "primary": "true"}}]}, "storageProfile": {"osDisk": {"caching": "ReadWrite", + "managedDisk": {"storageAccountType": null}, "createOption": "FromImage"}, "imageReference": + {"offer": "Debian", "version": "latest", "publisher": "credativ", "sku": "8"}}}, + "singlePlacementGroup": true, "overprovision": true}, "apiVersion": "2017-03-30", + "name": "vmss123", "sku": {"name": "Standard_D1_v2", "capacity": 2, "tier": + "Standard"}, "tags": {}, "dependsOn": ["Microsoft.Network/virtualNetworks/vmss123VNET", + "Microsoft.Network/loadBalancers/vmss123LB"], "location": "eastus2"}], "contentVersion": + "1.0.0.0", "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#"}}}''' + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vmss create] + Connection: [keep-alive] + Content-Length: ['3800'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Resources/deployments/vmss_deploy_r1vZNFk3aC7q41d1Wpv4iADgStZkGi6m","name":"vmss_deploy_r1vZNFk3aC7q41d1Wpv4iADgStZkGi6m","properties":{"templateHash":"1324712038490039065","parameters":{},"mode":"Incremental","provisioningState":"Accepted","timestamp":"2017-09-19T22:58:00.0903577Z","duration":"PT1.5733898S","correlationId":"002e9c5c-412c-4289-aae6-a2faa4a30b3f","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus2"]},{"resourceType":"publicIPAddresses","locations":["eastus2"]},{"resourceType":"loadBalancers","locations":["eastus2"]}]},{"namespace":"Microsoft.Compute","resourceTypes":[{"resourceType":"virtualMachineScaleSets","locations":["eastus2"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"vmss123VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vmss123LBPublicIP","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"vmss123LBPublicIP"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB","resourceType":"Microsoft.Network/loadBalancers","resourceName":"vmss123LB"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"vmss123VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB","resourceType":"Microsoft.Network/loadBalancers","resourceName":"vmss123LB"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets/vmss123","resourceType":"Microsoft.Compute/virtualMachineScaleSets","resourceName":"vmss123"}]}}'} + headers: + azure-asyncoperation: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/vmss_deploy_r1vZNFk3aC7q41d1Wpv4iADgStZkGi6m/operationStatuses/08586957450069606548?api-version=2017-05-10'] + cache-control: [no-cache] + content-length: ['2679'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:57:59 GMT'] + expires: ['-1'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1195'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vmss create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957450069606548?api-version=2017-05-10 + response: + body: {string: '{"status":"Running"}'} + headers: + cache-control: [no-cache] + content-length: ['20'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:58: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'] + CommandName: [vmss create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957450069606548?api-version=2017-05-10 + response: + body: {string: '{"status":"Running"}'} + headers: + cache-control: [no-cache] + content-length: ['20'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:59: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'] + CommandName: [vmss create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957450069606548?api-version=2017-05-10 + response: + body: {string: '{"status":"Running"}'} + headers: + cache-control: [no-cache] + content-length: ['20'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 22:59: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'] + CommandName: [vmss create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment/operationStatuses/08586957450069606548?api-version=2017-05-10 + response: + body: {string: '{"status":"Succeeded"}'} + headers: + cache-control: [no-cache] + content-length: ['22'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00: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'] + CommandName: [vmss create] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001/providers/Microsoft.Resources/deployments/mock-deployment?api-version=2017-05-10 + response: + body: {string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Resources/deployments/vmss_deploy_r1vZNFk3aC7q41d1Wpv4iADgStZkGi6m","name":"vmss_deploy_r1vZNFk3aC7q41d1Wpv4iADgStZkGi6m","properties":{"templateHash":"1324712038490039065","parameters":{},"mode":"Incremental","provisioningState":"Succeeded","timestamp":"2017-09-19T22:59:41.1977182Z","duration":"PT1M42.6807503S","correlationId":"002e9c5c-412c-4289-aae6-a2faa4a30b3f","providers":[{"namespace":"Microsoft.Network","resourceTypes":[{"resourceType":"virtualNetworks","locations":["eastus2"]},{"resourceType":"publicIPAddresses","locations":["eastus2"]},{"resourceType":"loadBalancers","locations":["eastus2"]}]},{"namespace":"Microsoft.Compute","resourceTypes":[{"resourceType":"virtualMachineScaleSets","locations":["eastus2"]}]}],"dependencies":[{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"vmss123VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vmss123LBPublicIP","resourceType":"Microsoft.Network/publicIPAddresses","resourceName":"vmss123LBPublicIP"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB","resourceType":"Microsoft.Network/loadBalancers","resourceName":"vmss123LB"},{"dependsOn":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET","resourceType":"Microsoft.Network/virtualNetworks","resourceName":"vmss123VNET"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB","resourceType":"Microsoft.Network/loadBalancers","resourceName":"vmss123LB"}],"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets/vmss123","resourceType":"Microsoft.Compute/virtualMachineScaleSets","resourceName":"vmss123"}],"outputs":{"vmss":{"type":"Object","value":{"singlePlacementGroup":true,"upgradePolicy":{"mode":"Manual"},"virtualMachineProfile":{"osProfile":{"computerNamePrefix":"vmss10ee4","adminUsername":"clitester","linuxConfiguration":{"disablePasswordAuthentication":false},"secrets":[]},"storageProfile":{"osDisk":{"createOption":"FromImage","caching":"ReadWrite","managedDisk":{"storageAccountType":"Standard_LRS"}},"imageReference":{"publisher":"credativ","offer":"Debian","sku":"8","version":"latest"}},"networkProfile":{"networkInterfaceConfigurations":[{"name":"vmss10ee4Nic","properties":{"primary":true,"enableAcceleratedNetworking":false,"dnsSettings":{"dnsServers":[]},"ipConfigurations":[{"name":"vmss10ee4IPConfig","properties":{"subnet":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET/subnets/vmss123Subnet"},"privateIPAddressVersion":"IPv4","loadBalancerBackendAddressPools":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/backendAddressPools/vmss123LBBEPool"}],"loadBalancerInboundNatPools":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/inboundNatPools/vmss123LBNatPool"}]}}]}}]}},"provisioningState":"Succeeded","overprovision":true,"uniqueId":"fbc4d267-5927-45d8-b4c8-572cb6e29fcf"}}},"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets/vmss123"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/publicIPAddresses/vmss123LBPublicIP"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET"}]}}'} + headers: + cache-control: [no-cache] + content-length: ['5207'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:11 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'] + CommandName: [vmss show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets/vmss123?api-version=2017-03-30 + response: + body: {string: "{\r\n \"sku\": {\r\n \"name\": \"Standard_D1_v2\",\r\n \ + \ \"tier\": \"Standard\",\r\n \"capacity\": 2\r\n },\r\n \"properties\"\ + : {\r\n \"singlePlacementGroup\": true,\r\n \"upgradePolicy\": {\r\n\ + \ \"mode\": \"Manual\"\r\n },\r\n \"virtualMachineProfile\": {\r\ + \n \"osProfile\": {\r\n \"computerNamePrefix\": \"vmss10ee4\"\ + ,\r\n \"adminUsername\": \"clitester\",\r\n \"linuxConfiguration\"\ + : {\r\n \"disablePasswordAuthentication\": false\r\n },\r\n\ + \ \"secrets\": []\r\n },\r\n \"storageProfile\": {\r\n \ + \ \"osDisk\": {\r\n \"createOption\": \"FromImage\",\r\n \ + \ \"caching\": \"ReadWrite\",\r\n \"managedDisk\": {\r\n \ + \ \"storageAccountType\": \"Standard_LRS\"\r\n }\r\n \ + \ },\r\n \"imageReference\": {\r\n \"publisher\": \"credativ\"\ + ,\r\n \"offer\": \"Debian\",\r\n \"sku\": \"8\",\r\n \ + \ \"version\": \"latest\"\r\n }\r\n },\r\n \"networkProfile\"\ + : {\"networkInterfaceConfigurations\":[{\"name\":\"vmss10ee4Nic\",\"properties\"\ + :{\"primary\":true,\"enableAcceleratedNetworking\":false,\"dnsSettings\":{\"\ + dnsServers\":[]},\"ipConfigurations\":[{\"name\":\"vmss10ee4IPConfig\",\"\ + properties\":{\"subnet\":{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET/subnets/vmss123Subnet\"\ + },\"privateIPAddressVersion\":\"IPv4\",\"loadBalancerBackendAddressPools\"\ + :[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/backendAddressPools/vmss123LBBEPool\"\ + }],\"loadBalancerInboundNatPools\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/inboundNatPools/vmss123LBNatPool\"\ + }]}}]}}]}\r\n },\r\n \"provisioningState\": \"Succeeded\",\r\n \"\ + overprovision\": true,\r\n \"uniqueId\": \"fbc4d267-5927-45d8-b4c8-572cb6e29fcf\"\ + \r\n },\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n \"type\": \"Microsoft.Compute/virtualMachineScaleSets\"\ + ,\r\n \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets/vmss123\"\ + ,\r\n \"name\": \"vmss123\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['2433'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:12 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vmss show] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets/vmss123?api-version=2017-03-30 + response: + body: {string: "{\r\n \"sku\": {\r\n \"name\": \"Standard_D1_v2\",\r\n \ + \ \"tier\": \"Standard\",\r\n \"capacity\": 2\r\n },\r\n \"properties\"\ + : {\r\n \"singlePlacementGroup\": true,\r\n \"upgradePolicy\": {\r\n\ + \ \"mode\": \"Manual\"\r\n },\r\n \"virtualMachineProfile\": {\r\ + \n \"osProfile\": {\r\n \"computerNamePrefix\": \"vmss10ee4\"\ + ,\r\n \"adminUsername\": \"clitester\",\r\n \"linuxConfiguration\"\ + : {\r\n \"disablePasswordAuthentication\": false\r\n },\r\n\ + \ \"secrets\": []\r\n },\r\n \"storageProfile\": {\r\n \ + \ \"osDisk\": {\r\n \"createOption\": \"FromImage\",\r\n \ + \ \"caching\": \"ReadWrite\",\r\n \"managedDisk\": {\r\n \ + \ \"storageAccountType\": \"Standard_LRS\"\r\n }\r\n \ + \ },\r\n \"imageReference\": {\r\n \"publisher\": \"credativ\"\ + ,\r\n \"offer\": \"Debian\",\r\n \"sku\": \"8\",\r\n \ + \ \"version\": \"latest\"\r\n }\r\n },\r\n \"networkProfile\"\ + : {\"networkInterfaceConfigurations\":[{\"name\":\"vmss10ee4Nic\",\"properties\"\ + :{\"primary\":true,\"enableAcceleratedNetworking\":false,\"dnsSettings\":{\"\ + dnsServers\":[]},\"ipConfigurations\":[{\"name\":\"vmss10ee4IPConfig\",\"\ + properties\":{\"subnet\":{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET/subnets/vmss123Subnet\"\ + },\"privateIPAddressVersion\":\"IPv4\",\"loadBalancerBackendAddressPools\"\ + :[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/backendAddressPools/vmss123LBBEPool\"\ + }],\"loadBalancerInboundNatPools\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/inboundNatPools/vmss123LBNatPool\"\ + }]}}]}}]}\r\n },\r\n \"provisioningState\": \"Succeeded\",\r\n \"\ + overprovision\": true,\r\n \"uniqueId\": \"fbc4d267-5927-45d8-b4c8-572cb6e29fcf\"\ + \r\n },\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n \"type\": \"Microsoft.Compute/virtualMachineScaleSets\"\ + ,\r\n \"location\": \"eastus2\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets/vmss123\"\ + ,\r\n \"name\": \"vmss123\"\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['2433'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [vmss list] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 computemanagementclient/3.0.0 Azure-SDK-For-Python AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets?api-version=2017-03-30 + response: + body: {string: "{\r\n \"value\": [\r\n {\r\n \"sku\": {\r\n \"\ + name\": \"Standard_D1_v2\",\r\n \"tier\": \"Standard\",\r\n \ + \ \"capacity\": 2\r\n },\r\n \"properties\": {\r\n \"singlePlacementGroup\"\ + : true,\r\n \"upgradePolicy\": {\r\n \"mode\": \"Manual\"\r\ + \n },\r\n \"virtualMachineProfile\": {\r\n \"osProfile\"\ + : {\r\n \"computerNamePrefix\": \"vmss10ee4\",\r\n \"\ + adminUsername\": \"clitester\",\r\n \"linuxConfiguration\": {\r\ + \n \"disablePasswordAuthentication\": false\r\n },\r\ + \n \"secrets\": []\r\n },\r\n \"storageProfile\"\ + : {\r\n \"osDisk\": {\r\n \"createOption\": \"FromImage\"\ + ,\r\n \"caching\": \"ReadWrite\",\r\n \"managedDisk\"\ + : {\r\n \"storageAccountType\": \"Standard_LRS\"\r\n \ + \ }\r\n },\r\n \"imageReference\": {\r\n \ + \ \"publisher\": \"credativ\",\r\n \"offer\": \"Debian\"\ + ,\r\n \"sku\": \"8\",\r\n \"version\": \"latest\"\ + \r\n }\r\n },\r\n \"networkProfile\": {\"networkInterfaceConfigurations\"\ + :[{\"name\":\"vmss10ee4Nic\",\"properties\":{\"primary\":true,\"enableAcceleratedNetworking\"\ + :false,\"dnsSettings\":{\"dnsServers\":[]},\"ipConfigurations\":[{\"name\"\ + :\"vmss10ee4IPConfig\",\"properties\":{\"subnet\":{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/virtualNetworks/vmss123VNET/subnets/vmss123Subnet\"\ + },\"privateIPAddressVersion\":\"IPv4\",\"loadBalancerBackendAddressPools\"\ + :[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/backendAddressPools/vmss123LBBEPool\"\ + }],\"loadBalancerInboundNatPools\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Network/loadBalancers/vmss123LB/inboundNatPools/vmss123LBNatPool\"\ + }]}}]}}]}\r\n },\r\n \"provisioningState\": \"Succeeded\",\r\ + \n \"overprovision\": true,\r\n \"uniqueId\": \"fbc4d267-5927-45d8-b4c8-572cb6e29fcf\"\ + \r\n },\r\n \"zones\": [\r\n \"2\"\r\n ],\r\n \"\ + type\": \"Microsoft.Compute/virtualMachineScaleSets\",\r\n \"location\"\ + : \"eastus2\",\r\n \"tags\": {},\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.Compute/virtualMachineScaleSets/vmss123\"\ + ,\r\n \"name\": \"vmss123\"\r\n }\r\n ]\r\n}"} + headers: + cache-control: [no-cache] + content-length: ['2658'] + content-type: [application/json; charset=utf-8] + date: ['Tue, 19 Sep 2017 23:00:13 GMT'] + expires: ['-1'] + pragma: [no-cache] + server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + strict-transport-security: [max-age=31536000; includeSubDomains] + transfer-encoding: [chunked] + vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + CommandName: [group delete] + Connection: [keep-alive] + Content-Length: ['0'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.3 (Windows-10-10.0.15063-SP0) requests/2.9.1 msrest/0.4.13 + msrest_azure/0.4.11 resourcemanagementclient/1.2.0rc2 Azure-SDK-For-Python + AZURECLI/2.0.16+dev] + accept-language: [en-US] + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/clitest.rg000001?api-version=2017-05-10 + response: + body: {string: ''} + headers: + cache-control: [no-cache] + content-length: ['0'] + date: ['Tue, 19 Sep 2017 23:00:15 GMT'] + expires: ['-1'] + location: ['https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1DTElURVNUOjJFUkc2S0NXUlhVTlNWUFc1NFM3WEtHRDdWSFE0M09JVTVGTTJQVnw4NjgwMDY1OEFERTBBMjRDLUVBU1RVUzIiLCJqb2JMb2NhdGlvbiI6ImVhc3R1czIifQ?api-version=2017-05-10'] + pragma: [no-cache] + strict-transport-security: [max-age=31536000; includeSubDomains] + x-ms-ratelimit-remaining-subscription-writes: ['1199'] + status: {code: 202, message: Accepted} +version: 1 diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_custom_vm_commands.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_custom_vm_commands.py index 0e2ebc46b45..33120ac156b 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_custom_vm_commands.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_custom_vm_commands.py @@ -16,15 +16,21 @@ _get_extension_instance_name) from azure.cli.command_modules.vm.custom import \ (attach_unmanaged_data_disk, detach_data_disk, get_vmss_instance_view) + + from azure.cli.command_modules.vm.disk_encryption import (encrypt_vm, decrypt_vm, _check_encrypt_is_supported, encrypt_vmss, decrypt_vmss) -from azure.mgmt.compute.models import (NetworkProfile, StorageProfile, DataDisk, OSDisk, - OperatingSystemTypes, InstanceViewStatus, - VirtualMachineExtensionInstanceView, - VirtualMachineExtension, ImageReference, - DiskCreateOptionTypes, CachingTypes, - VirtualMachineScaleSetVMProfile, VirtualMachineScaleSetOSProfile, - LinuxConfiguration) +from azure.cli.core.profiles import get_sdk, ResourceType + +NetworkProfile, StorageProfile, DataDisk, OSDisk, OperatingSystemTypes, InstanceViewStatus, \ + VirtualMachineExtensionInstanceView, VirtualMachineExtension, ImageReference, DiskCreateOptionTypes, \ + VirtualMachineScaleSetVMProfile, VirtualMachineScaleSetOSProfile, LinuxConfiguration, \ + CachingTypes = get_sdk(ResourceType.MGMT_COMPUTE, 'NetworkProfile', 'StorageProfile', 'DataDisk', 'OSDisk', + 'OperatingSystemTypes', 'InstanceViewStatus', 'VirtualMachineExtensionInstanceView', + 'VirtualMachineExtension', 'ImageReference', 'DiskCreateOptionTypes', + 'VirtualMachineScaleSetVMProfile', 'VirtualMachineScaleSetOSProfile', 'LinuxConfiguration', + 'CachingTypes', + mod='models') class Test_Vm_Custom(unittest.TestCase): diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_vm_commands.py b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_vm_commands.py index 1588ddae1bc..804bda55741 100644 --- a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_vm_commands.py +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/test_vm_commands.py @@ -16,6 +16,7 @@ import six from azure.cli.core.profiles import ResourceType from azure.cli.core.util import CLIError +from azure.cli.core.profiles import ResourceType from azure.cli.testsdk.vcr_test_base import (VCRTestBase, ResourceGroupVCRTestBase, JMESPathCheck, @@ -2147,6 +2148,58 @@ def test_vm_create_progress(self, resource_group): self.assertTrue('Succeeded: {} (Microsoft.Compute/virtualMachines)'.format(vm_name) in lines) +@api_version_constraint(ResourceType.MGMT_COMPUTE, min_api='2017-03-30') +class VMZoneScenarioTest(ScenarioTest): + + @ResourceGroupPreparer(location='eastus2') + def test_vm_create_zones(self, resource_group, resource_group_location): + zones = '2' + vm_name = 'vm123' + ip_name = 'vm123ip' + self.cmd('vm create -g {} -n {} --admin-username clitester --admin-password PasswordPassword1! --image debian --zone {} --public-ip-address {}'.format(resource_group, vm_name, zones, ip_name), checks=[ + JMESPathCheckV2('zones', zones) + ]) + self.cmd('network public-ip show -g {} -n {}'.format(resource_group, ip_name), + checks=JMESPathCheckV2('zones[0]', zones)) + # Test VM's specific table output + result = self.cmd('vm show -g {} -n {} -otable'.format(resource_group, vm_name)) + table_output = set(result.output.splitlines()[2].split()) + self.assertTrue(set([resource_group_location, zones]).issubset(table_output)) + + @ResourceGroupPreparer(location='eastus2') + def test_vmss_create_zones(self, resource_group, resource_group_location): + zones = '2' + vmss_name = 'vmss123' + self.cmd('vmss create -g {} -n {} --admin-username clitester --admin-password PasswordPassword1! --image debian --zones {}'.format(resource_group, vmss_name, zones)) + self.cmd('vmss show -g {} -n {}'.format(resource_group, vmss_name), checks=[ + JMESPathCheckV2('zones[0]', zones) + ]) + result = self.cmd('vmss show -g {} -n {} -otable'.format(resource_group, vmss_name)) + table_output = set(result.output.splitlines()[2].split()) + self.assertTrue(set([resource_group_location, vmss_name, zones]).issubset(table_output)) + result = self.cmd('vmss list -g {} -otable'.format(resource_group, vmss_name)) + table_output = set(result.output.splitlines()[2].split()) + self.assertTrue(set([resource_group_location, vmss_name, zones]).issubset(table_output)) + + @ResourceGroupPreparer(location='eastus2') + def test_disk_create_zones(self, resource_group, resource_group_location): + zones = '2' + disk_name = 'disk123' + size = 1 + self.cmd('disk create -g {} -n {} --size-gb {} --zone {}'.format(resource_group, disk_name, size, zones), checks=[ + JMESPathCheckV2('zones[0]', zones) + ]) + self.cmd('disk show -g {} -n {}'.format(resource_group, disk_name), checks=[ + JMESPathCheckV2('zones[0]', zones) + ]) + result = self.cmd('disk show -g {} -n {} -otable'.format(resource_group, disk_name)) + table_output = set(result.output.splitlines()[2].split()) + self.assertTrue(set([resource_group, resource_group_location, disk_name, zones, str(size), 'Premium_LRS']).issubset(table_output)) + result = self.cmd('disk list -g {} -otable'.format(resource_group)) + table_output = set(result.output.splitlines()[2].split()) + self.assertTrue(set([resource_group, resource_group_location, disk_name, zones]).issubset(table_output)) + + class VMRunCommandScenarioTest(ScenarioTest): @ResourceGroupPreparer() def test_run_command_e2e(self, resource_group, resource_group_location): diff --git a/src/command_modules/azure-cli-vm/setup.py b/src/command_modules/azure-cli-vm/setup.py index 66ddee92081..fb1b6165ed4 100644 --- a/src/command_modules/azure-cli-vm/setup.py +++ b/src/command_modules/azure-cli-vm/setup.py @@ -32,10 +32,10 @@ DEPENDENCIES = [ 'azure-mgmt-authorization==0.30.0', - 'azure-mgmt-compute==2.1.0', + 'azure-mgmt-compute==3.0.0rc1', 'azure-mgmt-keyvault==0.40.0', 'azure-keyvault==0.3.6', - 'azure-mgmt-network==1.5.0rc1', + 'azure-mgmt-network==1.5.0rc3', 'azure-mgmt-resource==1.2.0rc2', 'azure-multiapi-storage==0.1.4', 'azure-cli-core'