From 44f323d5e908726f716c2a8a061f36fbd840d261 Mon Sep 17 00:00:00 2001 From: yugangw-msft Date: Mon, 29 Aug 2016 17:44:48 -0700 Subject: [PATCH] vm: enable autoUpgradeMinorVersion by default --- .../azure/cli/command_modules/vm/_help.py | 2 +- .../azure/cli/command_modules/vm/_params.py | 4 +- .../azure/cli/command_modules/vm/custom.py | 17 +- .../test_vm_extension_autoupgrade.yaml | 255 ++++++++++++++++++ .../vm/tests/test_vm_commands.py | 27 ++ 5 files changed, 295 insertions(+), 10 deletions(-) create mode 100644 src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_extension_autoupgrade.yaml 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 ef40173f7b5..5b5470fb4ca 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 @@ -78,7 +78,7 @@ examples: - name: Add a new linux user text: - az vm extension set -n VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.4 --vm-name myvm --resource-group mygroup --private-config '{"username":"user1", "ssh_key":"ssh_rsa ..."}' + az vm extension set -n VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.4 --vm-name myvm --resource-group mygroup --protected-settings '{"username":"user1", "ssh_key":"ssh_rsa ..."}' """ helps['vm access set-linux-user'] = """ 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 da07989e6b6..100095a9ff7 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 @@ -100,7 +100,7 @@ def get_vm_size_completion_list(prefix, action, parsed_args, **kwargs):#pylint: register_cli_argument('vm extension', 'vm_extension_name', name_arg_type, completer=get_resource_name_completion_list('Microsoft.Compute/virtualMachines/extensions')) register_cli_argument('vm extension', 'vm_name', arg_type=existing_vm_name, options_list=('--vm-name',)) -register_cli_argument('vm extension', 'auto_upgrade_minor_version', action='store_true') +register_cli_argument('vm extension', 'no_auto_upgrade', action='store_true') register_cli_argument('vm extension image', 'image_location', options_list=('--location', '-l')) register_cli_argument('vm extension image', 'publisher_name', options_list=('--publisher',)) @@ -109,7 +109,7 @@ def get_vm_size_completion_list(prefix, action, parsed_args, **kwargs):#pylint: register_cli_argument('vmss extension', 'extension_name', name_arg_type, id_part='name', help='Name of extension') register_cli_argument('vmss extension', 'vmss_name', help='Scale set name') -register_cli_argument('vmss extension', 'auto_upgrade_minor_version', action='store_true') +register_cli_argument('vmss extension', 'no_auto_upgrade', action='store_true') register_cli_argument('vmss extension image', 'publisher_name', options_list=('--publisher',), help='Image publisher name') register_cli_argument('vmss extension image', 'type', options_list=('--name', '-n'), help='Extension name') 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 0d987555dbc..4259adfdc2e 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 @@ -503,7 +503,7 @@ def list_extensions(resource_group_name, vm_name): def set_extension( resource_group_name, vm_name, vm_extension_name, publisher, version=None, settings=None, - protected_settings=None, auto_upgrade_minor_version=False): + protected_settings=None, no_auto_upgrade=False): '''create/update extensions for a VM in a resource group. You can use 'extension image list' to get extension details :param vm_extension_name: the name of the extension @@ -511,8 +511,9 @@ def set_extension( :param version: the version of extension. :param settings: public settings or a file path with such contents :param protected_settings: protected settings or a file path with such contents - :param auto_upgrade_minor_version: pick the highest minor version for the specified version - number, and auto update to the latest build/revision number on any VM updates in future. + :param no_auto_upgrade: by doing this, extension system will not pick the highest minor version + for the specified version number, and will not auto update to the latest build/revision number + on any VM updates in future. ''' vm = _vm_get(resource_group_name, vm_name) client = _compute_client_factory() @@ -541,14 +542,14 @@ def set_extension( protected_settings=protected_settings, type_handler_version=version, settings=settings, - auto_upgrade_minor_version=auto_upgrade_minor_version) + auto_upgrade_minor_version=(not no_auto_upgrade)) return client.virtual_machine_extensions.create_or_update( resource_group_name, vm_name, vm_extension_name, ext) def set_vmss_extension( resource_group_name, vmss_name, extension_name, publisher, version=None, settings=None, - protected_settings=None, auto_upgrade_minor_version=False): + protected_settings=None, no_auto_upgrade=False): '''create/update extensions for a VMSS in a resource group. You can use 'extension image list' to get extension details :param vm_extension_name: the name of the extension @@ -556,7 +557,9 @@ def set_vmss_extension( :param version: the version of extension. :param settings: public settings or a file path with such contents :param protected_settings: protected settings or a file path with such contents - :param auto_upgrade_minor_version: auto upgrade to the newer version if available + :param no_auto_upgrade: by doing this, extension system will not pick the highest minor version + for the specified version number, and will not auto update to the latest build/revision number + on any scale set updates in future. ''' client = _compute_client_factory() vmss = client.virtual_machine_scale_sets.get(resource_group_name, @@ -586,7 +589,7 @@ def set_vmss_extension( protected_settings=protected_settings, type_handler_version=version, settings=settings, - auto_upgrade_minor_version=auto_upgrade_minor_version) + auto_upgrade_minor_version=(not no_auto_upgrade)) if not vmss.virtual_machine_profile.extension_profile: vmss.virtual_machine_profile.extension_profile = VirtualMachineScaleSetExtensionProfile([]) diff --git a/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_extension_autoupgrade.yaml b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_extension_autoupgrade.yaml new file mode 100644 index 00000000000..002a0e23975 --- /dev/null +++ b/src/command_modules/azure-cli-vm/azure/cli/command_modules/vm/tests/recordings/test_vm_extension_autoupgrade.yaml @@ -0,0 +1,255 @@ +interactions: +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Authorization: [Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDcyNTg1MDA4LCJuYmYiOjE0NzI1ODUwMDgsImV4cCI6MTQ3MjU4ODkwOCwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJlX2V4cCI6MTA4MDAsImZhbWlseV9uYW1lIjoic2RrIiwiZ2l2ZW5fbmFtZSI6ImFkbWluMyIsImdyb3VwcyI6WyJlNGJiMGI1Ni0xMDE0LTQwZjgtODhhYi0zZDhhOGNiMGUwODYiLCI2Yjk3NzYxYS1kN2QwLTQ4ZjYtYWQ1Ni1mMzhkMzI3Yzg1NTMiXSwiaXBhZGRyIjoiMTY3LjIyMC4wLjEzMCIsIm5hbWUiOiJhZG1pbjMiLCJvaWQiOiJlN2UxNThkMy03Y2RjLTQ3Y2QtODgyNS01ODU5ZDdhYjJiNTUiLCJwdWlkIjoiMTAwMzNGRkY5NUQ0NEU4NCIsInNjcCI6InVzZXJfaW1wZXJzb25hdGlvbiIsInN1YiI6ImhRenl3b3FTLUEtRzAySTl6ZE5TRmtGd3R2MGVwZ2lWY1Vsdm1PZEZHaFEiLCJ0aWQiOiI1NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEiLCJ1bmlxdWVfbmFtZSI6ImFkbWluM0BBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidXBuIjoiYWRtaW4zQEF6dXJlU0RLVGVhbS5vbm1pY3Jvc29mdC5jb20iLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.cAcfQxey7sMz_VGtbLTlCbQxIFxDSzAlDrO9lXKqVqvH89P_dTgBYrVtC3sDD-jG7Mltr5z93sXpsgAnLIgwXBiv38RosMAltB2MX2324jYNh4xhQlzQR5tmudMpGrUtMu6FSoVwYxKI3K_WuyfVAuJRDQaAwPc1KBbgGnzLyJM7RSYJSC1o4doAAANoY2m4NoqVpAh4i_124TUIlUC5mTWxvdmo6TY5vh4MlaPW8Cc-dfZoW8Oi7b5A7C_Bk6SwbGxxMFvDlzdk_Pp-H1jJTvj2xXJyjcTVnmm2LVLu6KCTfEuwglQZlYOuC-YGYso_spjG_tptxbeNZsRZDfb9Jg] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.0 (Windows-10.0.14393) requests/2.9.1 msrest/0.4.2 msrest_azure/0.4.1 + computemanagementclient/0.30.0rc5 Azure-SDK-For-Python AZURECLI/TEST/0.0.1.dev0] + accept-language: [en-US] + x-ms-client-request-id: [ca0eae08-6eeb-11e6-86c9-64510658e3b3] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest_upgrade_vmext/providers/Microsoft.Compute/virtualMachines/autoupgradevm1?api-version=2016-03-30 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk + 6UerulrldVvkzUePUv6IPrxcnM3oz4/OJ7v393b2su3Z7nRve392b3f7YTbNtx+eZ7uz3b3pg91s + 76ORvjTP6tlVVucv6+q8KHN6X8HRd5eL18UP8NFHr9tsOaOWv//T17sfyfe/xEBo2qrOLqIAigV9 + 8So/z+t8OQ2+oi9X60lZNPO8ps8/OsmW1bKYZqVBDM9H1Tm9iq+/mqyX7fp1Xl/S336L5u0a3+/u + j3f2x/vbz9+8Dr6m5k1RLdGkzNq8aRV5hz41qpqnRfOW2vjYVc2b6xVQ/uh5sVy/C6AuswV/UzUz + enF3/8He/QcPD/buB42mdU49frlqtf9ndbU4Az2CVpdzTJnXMX22rgv67KN5266aR3fvUhMlcXv/ + p/f2J6vF7NPJXj6elNVkPK3qfHxVLGfVVTNe5i23vttFbEyf2pH7Y6feptl0Xiwv0OOrPJt9ty7a + 3LZ1LT+aZW0GOoHjvvd9+dh8TZSITf+0WqzWbV6/UHpl67Zary7qbJZfLnYdHT7KZoti+VWT14ay + 1+uLbHlx5TUpMQsn1fK8uFjXmRLVdkUNaMTZpMxfZk1zVdWz43U7z5ctsZS2bet1bsFR+6aZ06ce + BPqMWXL6e+XXPEj/qzRsieejVdYCxEd359Uiv6so3x0T4Ls00nlVk/DMfv+3gOZ1LM9H9PFToije + pxe26yZLj+l5cu/FD7KT3evp3in9dfz0+CeOn9DPJ8c/cXJwtvz22cvnx+tPyy+mO7NP7l9W17/3 + Lyoufur8zf360/PjL3Y/efYTx8Uni7cvn87e7s1f/KLdJ5/vPLk6nx4cfL548ORscXXw5vUn7/Ym + y59azE8mP7n89uzTJy9Pnv4+D7JPpt8+ef2L6p/44rsHD08uP/3Jcn+df/5lfvzdb6++8+YnH568 + ef6TP9g/+3123+1/+8ns7fOzvfL3Ovt2XTz85AcPXpzNLp+9fVB8+faLn/z8Ov/B/W/vvns6ebbX + /OCrV+8upvtne3er+1fX09dXv/cnnx88rdvmyeV3ny+eXT78fY5fvvvkJ9+efvsnnv70q53vfjf/ + wZc/va5266fLT7/4ifPi9zr/Rcc//XJ9trx68eXF/eOzd7/38Zev8qYulnsvvyqP6xft7Om3d39Q + Xp7tv/qp4t6nn7Tf+fLBol3cm32n+L2a/dc//eDzTye7Jz999tWnWfbTew++WPxe1/ey+uzZyfz3 + yS4fXv8+X9w7e5PqtP2ei2JaV0113pJILX7fpZUAeX6J/6cyPx77uZEEmtkmJ9FvmYO0pfnyIxJQ + 4s23nqyYj86WJCfnpKXpve/94o8K0gof3W3Wk2ZaF6xCmrs7k93zT/cf7G7vTs53SK3Psu0sn97b + nk4e7j3YO995eP/hzt06b6p1Pc0/r0nSmrvTkqS5aX9/lbrf/3KRv2vvkvW4LGakGu9+YUf9QvC4 + 28MHvEyw+H2S2p/84kUx/eiXfN+OiYFByZISITNByoNY+vV6Os3zWS5aR9ryoEhafpijOhENdPey + qNt1Vn7Buq43JhFPq9ajX7ZqDW6Ere3Lymqej64I2bX5os0uaI7TX0ys80v+H8V6OzrNBwAA + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 30 Aug 2016 19:56:07 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +- request: + body: !!binary | + eyJsb2NhdGlvbiI6ICJ3ZXN0dXMiLCAicHJvcGVydGllcyI6IHsicHVibGlzaGVyIjogIk1pY3Jv + c29mdC5PU1RDRXh0ZW5zaW9ucyIsICJhdXRvVXBncmFkZU1pbm9yVmVyc2lvbiI6IHRydWUsICJ0 + eXBlSGFuZGxlclZlcnNpb24iOiAiMS4yIiwgInByb3RlY3RlZFNldHRpbmdzIjogeyJwYXNzd29y + ZCI6ICJUZXN0MTIzNDUiLCAidXNlcm5hbWUiOiAidXNlcjEifSwgInR5cGUiOiAiVk1BY2Nlc3NG + b3JMaW51eCJ9fQ== + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Authorization: [Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDcyNTg1MDA4LCJuYmYiOjE0NzI1ODUwMDgsImV4cCI6MTQ3MjU4ODkwOCwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJlX2V4cCI6MTA4MDAsImZhbWlseV9uYW1lIjoic2RrIiwiZ2l2ZW5fbmFtZSI6ImFkbWluMyIsImdyb3VwcyI6WyJlNGJiMGI1Ni0xMDE0LTQwZjgtODhhYi0zZDhhOGNiMGUwODYiLCI2Yjk3NzYxYS1kN2QwLTQ4ZjYtYWQ1Ni1mMzhkMzI3Yzg1NTMiXSwiaXBhZGRyIjoiMTY3LjIyMC4wLjEzMCIsIm5hbWUiOiJhZG1pbjMiLCJvaWQiOiJlN2UxNThkMy03Y2RjLTQ3Y2QtODgyNS01ODU5ZDdhYjJiNTUiLCJwdWlkIjoiMTAwMzNGRkY5NUQ0NEU4NCIsInNjcCI6InVzZXJfaW1wZXJzb25hdGlvbiIsInN1YiI6ImhRenl3b3FTLUEtRzAySTl6ZE5TRmtGd3R2MGVwZ2lWY1Vsdm1PZEZHaFEiLCJ0aWQiOiI1NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEiLCJ1bmlxdWVfbmFtZSI6ImFkbWluM0BBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidXBuIjoiYWRtaW4zQEF6dXJlU0RLVGVhbS5vbm1pY3Jvc29mdC5jb20iLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.cAcfQxey7sMz_VGtbLTlCbQxIFxDSzAlDrO9lXKqVqvH89P_dTgBYrVtC3sDD-jG7Mltr5z93sXpsgAnLIgwXBiv38RosMAltB2MX2324jYNh4xhQlzQR5tmudMpGrUtMu6FSoVwYxKI3K_WuyfVAuJRDQaAwPc1KBbgGnzLyJM7RSYJSC1o4doAAANoY2m4NoqVpAh4i_124TUIlUC5mTWxvdmo6TY5vh4MlaPW8Cc-dfZoW8Oi7b5A7C_Bk6SwbGxxMFvDlzdk_Pp-H1jJTvj2xXJyjcTVnmm2LVLu6KCTfEuwglQZlYOuC-YGYso_spjG_tptxbeNZsRZDfb9Jg] + Connection: [keep-alive] + Content-Length: ['238'] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.0 (Windows-10.0.14393) requests/2.9.1 msrest/0.4.2 msrest_azure/0.4.1 + computemanagementclient/0.30.0rc5 Azure-SDK-For-Python AZURECLI/TEST/0.0.1.dev0] + accept-language: [en-US] + x-ms-client-request-id: [ca8c5a58-6eeb-11e6-a1d0-64510658e3b3] + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest_upgrade_vmext/providers/Microsoft.Compute/virtualMachines/autoupgradevm1/extensions/VMAccessForLinux?api-version=2016-03-30 + response: + body: {string: "{\r\n \"properties\": {\r\n \"publisher\": \"Microsoft.OSTCExtensions\"\ + ,\r\n \"type\": \"VMAccessForLinux\",\r\n \"typeHandlerVersion\": \"\ + 1.2\",\r\n \"autoUpgradeMinorVersion\": true,\r\n \"provisioningState\"\ + : \"Creating\"\r\n },\r\n \"id\": \"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/clitest_upgrade_vmext/providers/Microsoft.Compute/virtualMachines/autoupgradevm1/extensions/VMAccessForLinux\"\ + ,\r\n \"name\": \"VMAccessForLinux\",\r\n \"type\": \"Microsoft.Compute/virtualMachines/extensions\"\ + ,\r\n \"location\": \"westus\"\r\n}"} + headers: + Azure-AsyncOperation: ['https://management.azure.com/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/providers/Microsoft.Compute/locations/westus/operations/6ab9edbd-60e4-4a19-93df-69a04fda2043?api-version=2016-03-30'] + Cache-Control: [no-cache] + Content-Length: ['519'] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 30 Aug 2016 19:56:07 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: ['1199'] + status: {code: 201, message: Created} +- request: + body: null + headers: + Accept: [application/json] + Accept-Encoding: ['gzip, deflate'] + Authorization: [Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDcyNTg1MDA4LCJuYmYiOjE0NzI1ODUwMDgsImV4cCI6MTQ3MjU4ODkwOCwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJlX2V4cCI6MTA4MDAsImZhbWlseV9uYW1lIjoic2RrIiwiZ2l2ZW5fbmFtZSI6ImFkbWluMyIsImdyb3VwcyI6WyJlNGJiMGI1Ni0xMDE0LTQwZjgtODhhYi0zZDhhOGNiMGUwODYiLCI2Yjk3NzYxYS1kN2QwLTQ4ZjYtYWQ1Ni1mMzhkMzI3Yzg1NTMiXSwiaXBhZGRyIjoiMTY3LjIyMC4wLjEzMCIsIm5hbWUiOiJhZG1pbjMiLCJvaWQiOiJlN2UxNThkMy03Y2RjLTQ3Y2QtODgyNS01ODU5ZDdhYjJiNTUiLCJwdWlkIjoiMTAwMzNGRkY5NUQ0NEU4NCIsInNjcCI6InVzZXJfaW1wZXJzb25hdGlvbiIsInN1YiI6ImhRenl3b3FTLUEtRzAySTl6ZE5TRmtGd3R2MGVwZ2lWY1Vsdm1PZEZHaFEiLCJ0aWQiOiI1NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEiLCJ1bmlxdWVfbmFtZSI6ImFkbWluM0BBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidXBuIjoiYWRtaW4zQEF6dXJlU0RLVGVhbS5vbm1pY3Jvc29mdC5jb20iLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.cAcfQxey7sMz_VGtbLTlCbQxIFxDSzAlDrO9lXKqVqvH89P_dTgBYrVtC3sDD-jG7Mltr5z93sXpsgAnLIgwXBiv38RosMAltB2MX2324jYNh4xhQlzQR5tmudMpGrUtMu6FSoVwYxKI3K_WuyfVAuJRDQaAwPc1KBbgGnzLyJM7RSYJSC1o4doAAANoY2m4NoqVpAh4i_124TUIlUC5mTWxvdmo6TY5vh4MlaPW8Cc-dfZoW8Oi7b5A7C_Bk6SwbGxxMFvDlzdk_Pp-H1jJTvj2xXJyjcTVnmm2LVLu6KCTfEuwglQZlYOuC-YGYso_spjG_tptxbeNZsRZDfb9Jg] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.0 (Windows-10.0.14393) requests/2.9.1 msrest/0.4.2 msrest_azure/0.4.1 + computemanagementclient/0.30.0rc5 Azure-SDK-For-Python AZURECLI/TEST/0.0.1.dev0] + accept-language: [en-US] + x-ms-client-request-id: [ca8c5a58-6eeb-11e6-a1d0-64510658e3b3] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/westus/operations/6ab9edbd-60e4-4a19-93df-69a04fda2043?api-version=2016-03-30 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk + 6UdNm9Xtm2KRf/Qo/WhvZ/fT7Z2D7Xs7b3YfPrr/6aOdT8cPdu9/ev/Th5/s7Dza2floZF5q1w3e + OFu+rKuLOm8a/WqZCahPs8nDfDaZbX+6k+9v72e7D7cf3pudb3/6MNvZP59lezv79z76jZNf8v8A + lg2Ty4YAAAA= + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 30 Aug 2016 19:56:38 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + 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'] + Authorization: [Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDcyNTg1MDA4LCJuYmYiOjE0NzI1ODUwMDgsImV4cCI6MTQ3MjU4ODkwOCwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJlX2V4cCI6MTA4MDAsImZhbWlseV9uYW1lIjoic2RrIiwiZ2l2ZW5fbmFtZSI6ImFkbWluMyIsImdyb3VwcyI6WyJlNGJiMGI1Ni0xMDE0LTQwZjgtODhhYi0zZDhhOGNiMGUwODYiLCI2Yjk3NzYxYS1kN2QwLTQ4ZjYtYWQ1Ni1mMzhkMzI3Yzg1NTMiXSwiaXBhZGRyIjoiMTY3LjIyMC4wLjEzMCIsIm5hbWUiOiJhZG1pbjMiLCJvaWQiOiJlN2UxNThkMy03Y2RjLTQ3Y2QtODgyNS01ODU5ZDdhYjJiNTUiLCJwdWlkIjoiMTAwMzNGRkY5NUQ0NEU4NCIsInNjcCI6InVzZXJfaW1wZXJzb25hdGlvbiIsInN1YiI6ImhRenl3b3FTLUEtRzAySTl6ZE5TRmtGd3R2MGVwZ2lWY1Vsdm1PZEZHaFEiLCJ0aWQiOiI1NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEiLCJ1bmlxdWVfbmFtZSI6ImFkbWluM0BBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidXBuIjoiYWRtaW4zQEF6dXJlU0RLVGVhbS5vbm1pY3Jvc29mdC5jb20iLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.cAcfQxey7sMz_VGtbLTlCbQxIFxDSzAlDrO9lXKqVqvH89P_dTgBYrVtC3sDD-jG7Mltr5z93sXpsgAnLIgwXBiv38RosMAltB2MX2324jYNh4xhQlzQR5tmudMpGrUtMu6FSoVwYxKI3K_WuyfVAuJRDQaAwPc1KBbgGnzLyJM7RSYJSC1o4doAAANoY2m4NoqVpAh4i_124TUIlUC5mTWxvdmo6TY5vh4MlaPW8Cc-dfZoW8Oi7b5A7C_Bk6SwbGxxMFvDlzdk_Pp-H1jJTvj2xXJyjcTVnmm2LVLu6KCTfEuwglQZlYOuC-YGYso_spjG_tptxbeNZsRZDfb9Jg] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.0 (Windows-10.0.14393) requests/2.9.1 msrest/0.4.2 msrest_azure/0.4.1 + computemanagementclient/0.30.0rc5 Azure-SDK-For-Python AZURECLI/TEST/0.0.1.dev0] + accept-language: [en-US] + x-ms-client-request-id: [ca8c5a58-6eeb-11e6-a1d0-64510658e3b3] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/westus/operations/6ab9edbd-60e4-4a19-93df-69a04fda2043?api-version=2016-03-30 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk + 6UdNm9Xtm2KRf/Qo/WhvZ/fT7Z2D7Xs7b3YfPrr/6aOdT8cPdu9/ev/Th5/s7Dza2floxC/ly9nA + Kw8e7dwb7+8ePLi/dy94hfpp1w3eeL2eTvN8ls/0m2UmkD7NJg/z2WS2/elOvr+9n+0+3H54b3a+ + /enDbGf/fJbt7ezf++g3Tn7J/wONLL9zuAAAAA== + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 30 Aug 2016 19:57:08 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + 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'] + Authorization: [Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDcyNTg1MDA4LCJuYmYiOjE0NzI1ODUwMDgsImV4cCI6MTQ3MjU4ODkwOCwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJlX2V4cCI6MTA4MDAsImZhbWlseV9uYW1lIjoic2RrIiwiZ2l2ZW5fbmFtZSI6ImFkbWluMyIsImdyb3VwcyI6WyJlNGJiMGI1Ni0xMDE0LTQwZjgtODhhYi0zZDhhOGNiMGUwODYiLCI2Yjk3NzYxYS1kN2QwLTQ4ZjYtYWQ1Ni1mMzhkMzI3Yzg1NTMiXSwiaXBhZGRyIjoiMTY3LjIyMC4wLjEzMCIsIm5hbWUiOiJhZG1pbjMiLCJvaWQiOiJlN2UxNThkMy03Y2RjLTQ3Y2QtODgyNS01ODU5ZDdhYjJiNTUiLCJwdWlkIjoiMTAwMzNGRkY5NUQ0NEU4NCIsInNjcCI6InVzZXJfaW1wZXJzb25hdGlvbiIsInN1YiI6ImhRenl3b3FTLUEtRzAySTl6ZE5TRmtGd3R2MGVwZ2lWY1Vsdm1PZEZHaFEiLCJ0aWQiOiI1NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEiLCJ1bmlxdWVfbmFtZSI6ImFkbWluM0BBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidXBuIjoiYWRtaW4zQEF6dXJlU0RLVGVhbS5vbm1pY3Jvc29mdC5jb20iLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.cAcfQxey7sMz_VGtbLTlCbQxIFxDSzAlDrO9lXKqVqvH89P_dTgBYrVtC3sDD-jG7Mltr5z93sXpsgAnLIgwXBiv38RosMAltB2MX2324jYNh4xhQlzQR5tmudMpGrUtMu6FSoVwYxKI3K_WuyfVAuJRDQaAwPc1KBbgGnzLyJM7RSYJSC1o4doAAANoY2m4NoqVpAh4i_124TUIlUC5mTWxvdmo6TY5vh4MlaPW8Cc-dfZoW8Oi7b5A7C_Bk6SwbGxxMFvDlzdk_Pp-H1jJTvj2xXJyjcTVnmm2LVLu6KCTfEuwglQZlYOuC-YGYso_spjG_tptxbeNZsRZDfb9Jg] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.0 (Windows-10.0.14393) requests/2.9.1 msrest/0.4.2 msrest_azure/0.4.1 + computemanagementclient/0.30.0rc5 Azure-SDK-For-Python AZURECLI/TEST/0.0.1.dev0] + accept-language: [en-US] + x-ms-client-request-id: [ca8c5a58-6eeb-11e6-a1d0-64510658e3b3] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest_upgrade_vmext/providers/Microsoft.Compute/virtualMachines/autoupgradevm1/extensions/VMAccessForLinux?api-version=2016-03-30 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk + 6UerulrldVvkzUePUv4IH64nZdHM85o+++iLYlpXTXXejr98/ebk9F2bL5uiWjYfjbR1e73K0fAn + vzieTvOmeVbVz4vl+l3Q4NvZclbm9U/mNV5G893xnm2Rrdvqq9VFnc3yL4pl5TVr63VuWhGulwU+ + L5YXr9us5V5fr6nTfJbPPkKrX8JtPypm+Opus54007pYtfROc3dnsnv+6f6D3e3dyfnO9v5slm1n + +fTe9nTycO/B3vnOw/sPd+7WeVOt62n+eV2tV83daVm0edP+/mtB7ve/XOTv2ruMyIxwvOuIc1It + Vus2v3tZ1O06K7/IpvNimTd3MTR9+3Kxe5deV/rdjdPro2W24IENfA1i4uube3Zd6atlNc1ACrx+ + RaNaN0SzX/L/ADKYGwYIAgAA + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 30 Aug 2016 19:57:09 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + 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'] + Authorization: [Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuY29yZS53aW5kb3dzLm5ldC8iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEvIiwiaWF0IjoxNDcyNTg1MDA4LCJuYmYiOjE0NzI1ODUwMDgsImV4cCI6MTQ3MjU4ODkwOCwiYWNyIjoiMSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiIwNGIwNzc5NS04ZGRiLTQ2MWEtYmJlZS0wMmY5ZTFiZjdiNDYiLCJhcHBpZGFjciI6IjAiLCJlX2V4cCI6MTA4MDAsImZhbWlseV9uYW1lIjoic2RrIiwiZ2l2ZW5fbmFtZSI6ImFkbWluMyIsImdyb3VwcyI6WyJlNGJiMGI1Ni0xMDE0LTQwZjgtODhhYi0zZDhhOGNiMGUwODYiLCI2Yjk3NzYxYS1kN2QwLTQ4ZjYtYWQ1Ni1mMzhkMzI3Yzg1NTMiXSwiaXBhZGRyIjoiMTY3LjIyMC4wLjEzMCIsIm5hbWUiOiJhZG1pbjMiLCJvaWQiOiJlN2UxNThkMy03Y2RjLTQ3Y2QtODgyNS01ODU5ZDdhYjJiNTUiLCJwdWlkIjoiMTAwMzNGRkY5NUQ0NEU4NCIsInNjcCI6InVzZXJfaW1wZXJzb25hdGlvbiIsInN1YiI6ImhRenl3b3FTLUEtRzAySTl6ZE5TRmtGd3R2MGVwZ2lWY1Vsdm1PZEZHaFEiLCJ0aWQiOiI1NDgyNmIyMi0zOGQ2LTRmYjItYmFkOS1iN2I5M2EzZTljNWEiLCJ1bmlxdWVfbmFtZSI6ImFkbWluM0BBenVyZVNES1RlYW0ub25taWNyb3NvZnQuY29tIiwidXBuIjoiYWRtaW4zQEF6dXJlU0RLVGVhbS5vbm1pY3Jvc29mdC5jb20iLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.cAcfQxey7sMz_VGtbLTlCbQxIFxDSzAlDrO9lXKqVqvH89P_dTgBYrVtC3sDD-jG7Mltr5z93sXpsgAnLIgwXBiv38RosMAltB2MX2324jYNh4xhQlzQR5tmudMpGrUtMu6FSoVwYxKI3K_WuyfVAuJRDQaAwPc1KBbgGnzLyJM7RSYJSC1o4doAAANoY2m4NoqVpAh4i_124TUIlUC5mTWxvdmo6TY5vh4MlaPW8Cc-dfZoW8Oi7b5A7C_Bk6SwbGxxMFvDlzdk_Pp-H1jJTvj2xXJyjcTVnmm2LVLu6KCTfEuwglQZlYOuC-YGYso_spjG_tptxbeNZsRZDfb9Jg] + Connection: [keep-alive] + Content-Type: [application/json; charset=utf-8] + User-Agent: [python/3.5.0 (Windows-10.0.14393) requests/2.9.1 msrest/0.4.2 msrest_azure/0.4.1 + computemanagementclient/0.30.0rc5 Azure-SDK-For-Python AZURECLI/TEST/0.0.1.dev0] + accept-language: [en-US] + x-ms-client-request-id: [f33b219e-6eeb-11e6-bd7f-64510658e3b3] + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest_upgrade_vmext/providers/Microsoft.Compute/virtualMachines/autoupgradevm1?$expand=instanceView&api-version=2016-03-30 + response: + body: + string: !!binary | + H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl + VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xb5yk + 6UerulrldVvkzUePUv6IPrxcnM3oz4/OJ7v393b2su3Z7nRve392b3f7YTbNtx+eZ7uz3b3pg91s + 76ORvjTP6tlVVucv6+q8KHN6X8HRd5eL18UP8NFHr9tsOaOWv//T17sfyfe/xEBo2qrOLqIAigV9 + 8So/z+t8OQ2+oi9X60lZNPO8ps8/OsmW1bKYZqVBDM9H1Tm9iq+/mqyX7fp1Xl/S336L5u0a3+/u + j3f2x/vbz9+8Dr6m5k1RLdGkzNq8aRV5hz41qpqnRfOW2vjYVc2b6xVQ/uh5sVy/C6AuswV/UzUz + enF3/8He/QcPD/buB42mdU49frlqtf9ndbU4Az2CVpdzTJnXMX22rgv67KN5266aR3fvUhMlcXv/ + p/f2J6vF7NPJXj6elNVkPK3qfHxVLGfVVTNe5i23vttFbEyf2pH7Y6feptl0Xiwv0OOrPJt9ty7a + 3LZ1LT+aZW0GOoHjvvd9+dh8TZSITf+0WqzWbV6/UHpl67Zary7qbJZfLnYdHT7KZoti+VWT14ay + 1+uLbHlx5TUpMQsn1fK8uFjXmRLVdkUNaMTZpMxfZk1zVdWz43U7z5ctsZS2bet1bsFR+6aZ06ce + BPqMWXL6e+XXPEj/qzRsieejVdYCxEd359Uiv6so3x0T4Ls00nlVk/DMfv+3gOZ1LM9H9PFToije + pxe26yZLj+l5cu/FD7KT3evp3in9dfz0+CeOn9DPJ8c/cXJwtvz22cvnx+tPyy+mO7NP7l9W17/3 + Lyoufur8zf360/PjL3Y/efYTx8Uni7cvn87e7s1f/KLdJ5/vPLk6nx4cfL548ORscXXw5vUn7/Ym + y59azE8mP7n89uzTJy9Pnv4+D7JPpt8+ef2L6p/44rsHD08uP/3Jcn+df/5lfvzdb6++8+YnH568 + ef6TP9g/+3123+1/+8ns7fOzvfL3Ovt2XTz85AcPXpzNLp+9fVB8+faLn/z8Ov/B/W/vvns6ebbX + /OCrV+8upvtne3er+1fX09dXv/cnnx88rdvmyeV3ny+eXT78fY5fvvvkJ9+efvsnnv70q53vfjf/ + wZc/va5266fLT7/4ifPi9zr/Rcc//XJ9trx68eXF/eOzd7/38Zev8qYulnsvvyqP6xft7Om3d39Q + Xp7tv/qp4t6nn7Tf+fLBol3cm32n+L2a/dc//eDzTye7Jz999tWnWfbTew++WPxe1/ey+uzZyfz3 + yS4fXv8+X9w7e5PqtP2ei2JaV0113pJILX7fpZUAeX6J/6cyPx77uZEEmtkmJ9FvmYO0pfnyIxJQ + 4s23nqyYj86WJCfnpKXpve/94o8K0gof3W3Wk2ZaF6xCmrs7k93zT/cf7G7vTs53SK3Psu0sn97b + nk4e7j3YO995eP/hzt06b6p1Pc0/r0nSmrvTkqS5aX9/lbrf/3KRv2vvkvW4LGakGu9+YUf9QvC4 + 28MHvEyw+H2S2p/84kUx/eiXfN+OiYFByZISITNByoNY+vV6Os3zWT4znP9RsWzIhkzznyzyK2ph + pYmMzPEFCar/mfv0JwlJAk1ffvTdY1bE/PH23nhnvPupAY6HzFDWrhvQL5RcDyoeUkozRpEmIcT7 + btNF2jwflfllXuKls+V51fuWNM+qzK4BZI3uP4Ieve41W+RNQ0ocDT5f06TwSNKiSev1EkikZGLT + jFCg+aa/lvlVOvX1XTPugWwLUZd7O7ufbu8cbN/bebP78NH9B4929j7Z2Xm0sxOwsWVWYmEP0kfE + EvkSlPg2YVASxQnkRhK2ahkd93z5+s3JqQHTjH/yi2MaR9M8q2qetD7iBEF786Z4d7w/3h3v9FrL + 1FKLDiL01deYTXpr43zS9wMzGrbzyBn8oUJPn1nAACiG03zSIeqtXApqJpToM3kHHJ4fFml88Okm + yAPM+umjnQfkvN17cP/hpxGmJTL6f1riep87ZnasDNQ8CgXUscTezKbMpGj2Ndmc378lk/9/emI9 + xXa6hA/mWo8/YC7jJAnI8f6k2ESGr0eCIb4mJXxvfO/+p3t7D/Z7fO1Uw+CIqqu8Bib5XbUPnW7f + ayA/+YWxMj4S5ledCP5bMPvI+BF4W6lv8YTJ70WfeMR/NiHdkNj4uLKMoPEmUeJGMUGyUSweji6+ + Ej/li2JZeU27rj/hb6cVNGIMnMtiWgop8LA/Ro7+D9MhO5Hg6e5lUbfrrPyCw7SeO3aXXle63h2m + 4S00HhMZTW7GwHXpvV5WNtL66IpGSHwn3zFXiVj/v5eMMhBLpuiXtyaQto9QRL5oswsWHKLML/l/ + AE6Z5lfPEQAA + headers: + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Type: [application/json; charset=utf-8] + Date: ['Tue, 30 Aug 2016 19:57:15 GMT'] + Expires: ['-1'] + Pragma: [no-cache] + Server: [Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0] + Strict-Transport-Security: [max-age=31536000; includeSubDomains] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +version: 1 diff --git a/src/command_modules/azure-cli-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 fa471b88407..4795c67e20b 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 @@ -410,6 +410,33 @@ def body(self): self.cmd('vm availability-set list --resource-group {}'.format( self.resource_group), checks=NoneCheck()) +class VMExtensionAutoUpgradeTest(ResourceGroupVCRTestBase): + + def __init__(self, test_method): + super(VMExtensionAutoUpgradeTest, self).__init__(__file__, test_method) + self.resource_group = 'clitest_upgrade_vmext' + self.vm_name = 'autoupgradevm1' + + def set_up(self): + self.cmd('vm create -n {} -g {} --image UbuntuLTS'.format(self.vm_name, self.resource_group)) + + def test_vm_extension_autoupgrade(self): + self.execute() + + def body(self): + _, protected_settings = tempfile.mkstemp() + with open(protected_settings, 'w') as settings: + settings.write(json.dumps({'username':'user1', 'password':'Test12345'})) + protected_settings = protected_settings.replace('\\', '\\\\') + + #install 1.2 and auto upgrade should install 1.4. Note the 'set' still returns 1.2 which appears a service bug + self.cmd('vm extension set -n VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --vm-name {} -g {} --protected-settings {}' + .format(self.vm_name, self.resource_group, protected_settings)) + self.cmd('vm get-instance-view -n {} -g {}'.format(self.vm_name, self.resource_group), checks=[ + JMESPathCheck('*.extensions[0].name', ['VMAccessForLinux']), + JMESPathCheck('*.extensions[0].typeHandlerVersion', ['1.4.1.0']), + ]) + class VMExtensionsScenarioTest(VCRTestBase): def __init__(self, test_method):