Skip to content

{Compute} migrate vmss extension to aaz#32707

Open
huiii99 wants to merge 5 commits intoAzure:devfrom
huiii99:vmss-extension-migration
Open

{Compute} migrate vmss extension to aaz#32707
huiii99 wants to merge 5 commits intoAzure:devfrom
huiii99:vmss-extension-migration

Conversation

@huiii99
Copy link
Member

@huiii99 huiii99 commented Jan 27, 2026

Related command
az vmss extension list
az vmss extension show
az vmss extension delete
az vmss extension set
az vmss extension upgrade

Description
Migrate az vmss extension commands from hand written sdk to aaz.
aaz: Azure/aaz#932

Testing Guide

History Notes


This checklist is used to make sure that common guidelines for a pull request are followed.

@huiii99 huiii99 requested a review from zhoxing-ms as a code owner January 27, 2026 06:10
Copilot AI review requested due to automatic review settings January 27, 2026 06:10
@azure-client-tools-bot-prd
Copy link

azure-client-tools-bot-prd bot commented Jan 27, 2026

❌AzureCLI-FullTest
️✔️acr
️✔️latest
️✔️3.12
️✔️3.13
️✔️acs
️✔️latest
️✔️3.12
️✔️3.13
️✔️advisor
️✔️latest
️✔️3.12
️✔️3.13
️✔️ams
️✔️latest
️✔️3.12
️✔️3.13
️✔️apim
️✔️latest
️✔️3.12
️✔️3.13
️✔️appconfig
️✔️latest
️✔️3.12
️✔️3.13
️✔️appservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️aro
️✔️latest
️✔️3.12
️✔️3.13
️✔️backup
️✔️latest
️✔️3.12
️✔️3.13
️✔️batch
️✔️latest
️✔️3.12
️✔️3.13
️✔️batchai
️✔️latest
️✔️3.12
️✔️3.13
️✔️billing
️✔️latest
️✔️3.12
️✔️3.13
️✔️botservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️cdn
️✔️latest
️✔️3.12
️✔️3.13
️✔️cloud
️✔️latest
️✔️3.12
️✔️3.13
️✔️cognitiveservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️compute_recommender
️✔️latest
️✔️3.12
️✔️3.13
️✔️computefleet
️✔️latest
️✔️3.12
️✔️3.13
️✔️config
️✔️latest
️✔️3.12
️✔️3.13
️✔️configure
️✔️latest
️✔️3.12
️✔️3.13
️✔️consumption
️✔️latest
️✔️3.12
️✔️3.13
️✔️container
️✔️latest
️✔️3.12
️✔️3.13
️✔️containerapp
️✔️latest
️✔️3.12
️✔️3.13
️✔️core
️✔️latest
️✔️3.12
️✔️3.13
️✔️cosmosdb
️✔️latest
️✔️3.12
️✔️3.13
️✔️databoxedge
️✔️latest
️✔️3.12
️✔️3.13
️✔️dls
️✔️latest
️✔️3.12
️✔️3.13
️✔️dms
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventgrid
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventhubs
️✔️latest
️✔️3.12
️✔️3.13
️✔️feedback
️✔️latest
️✔️3.12
️✔️3.13
️✔️find
️✔️latest
️✔️3.12
️✔️3.13
️✔️hdinsight
️✔️latest
️✔️3.12
️✔️3.13
️✔️identity
️✔️latest
️✔️3.12
️✔️3.13
️✔️iot
️✔️latest
️✔️3.12
️✔️3.13
️✔️keyvault
️✔️latest
️✔️3.12
️✔️3.13
️✔️lab
️✔️latest
️✔️3.12
️✔️3.13
️✔️managedservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️maps
️✔️latest
️✔️3.12
️✔️3.13
️✔️marketplaceordering
️✔️latest
️✔️3.12
️✔️3.13
️✔️monitor
️✔️latest
️✔️3.12
️✔️3.13
️✔️mysql
️✔️latest
️✔️3.12
️✔️3.13
️✔️netappfiles
️✔️latest
️✔️3.12
️✔️3.13
️✔️network
️✔️latest
️✔️3.12
️✔️3.13
️✔️policyinsights
️✔️latest
️✔️3.12
️✔️3.13
️✔️postgresql
️✔️latest
️✔️3.12
️✔️3.13
️✔️privatedns
️✔️latest
️✔️3.12
️✔️3.13
️✔️profile
️✔️latest
️✔️3.12
️✔️3.13
️✔️rdbms
️✔️latest
️✔️3.12
️✔️3.13
️✔️redis
️✔️latest
️✔️3.12
️✔️3.13
️✔️relay
️✔️latest
️✔️3.12
️✔️3.13
️✔️resource
️✔️latest
️✔️3.12
️✔️3.13
️✔️role
️✔️latest
️✔️3.12
️✔️3.13
️✔️search
️✔️latest
️✔️3.12
️✔️3.13
️✔️security
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicebus
️✔️latest
️✔️3.12
️✔️3.13
️✔️serviceconnector
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicefabric
️✔️latest
️✔️3.12
️✔️3.13
️✔️signalr
️✔️latest
️✔️3.12
️✔️3.13
️✔️sql
️✔️latest
️✔️3.12
️✔️3.13
️✔️sqlvm
️✔️latest
️✔️3.12
️✔️3.13
️✔️storage
️✔️latest
️✔️3.12
️✔️3.13
️✔️synapse
️✔️latest
️✔️3.12
️✔️3.13
️✔️telemetry
️✔️latest
️✔️3.12
️✔️3.13
️✔️util
️✔️latest
️✔️3.12
️✔️3.13
❌vm
❌latest
❌3.12
Type Test Case Error Message Line
Failed test_vmss_extension self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f0b01acd730>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f0b08779a30>
command = 'vmss extension set -n NetworkWatcherAgentLinux --publisher Microsoft.Azure.NetworkWatcher --version 1.4  --vmss-name ...group cli_test_vmss_extension000001 --protected-settings "/tmp/tmpsccy82pw" --force-update --enable-auto-upgrade false'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/azure-cli-testsdk/azure/cli/testsdk/base.py:303: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:141: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = InvalidArgumentValueError('InvalidArgumentValue: Missing required field: --resource-group')
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception InvalidArgumentValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <latest.test_vm_commands.VMSSExtensionInstallTest testMethod=test_vmss_extension>

    @AllowLargeResponse()
    @ResourceGroupPreparer(name_prefix='cli_test_vmss_extension')
    def test_vmss_extension(self):
    
        username = 'myadmin'
        config_file = write_config_file(username)
    
        self.kwargs.update({
            'vmss': 'vmss1',
            'net-pub': 'Microsoft.Azure.NetworkWatcher', 'script-pub': 'Microsoft.Azure.Extensions', 'access-pub': 'Microsoft.OSTCExtensions',
            'code-pub': 'Microsoft.Azure.Security.WindowsCodeIntegrity',
            'net-ext': 'NetworkWatcherAgentLinux', 'script-ext': 'customScript', 'access-ext': 'VMAccessForLinux',
            'code-ext': 'CodeIntegrityAgent',
            'username': username,
            'config_file': config_file
        })
    
        self.cmd('vmss create -n {vmss} -g {rg} --image OpenLogic:CentOS:7.5:latest --authentication-type password --admin-username admin123 '
                 '--admin-password testPassword0 --vm-sku Standard_B2ms --instance-count 1 --orchestration-mode Uniform --lb-sku Standard --no-wait')
        self.cmd('vmss wait --created -n {vmss} -g {rg}')
    
>       self.cmd('vmss extension set -n {net-ext} --publisher {net-pub} --version 1.4  --vmss-name {vmss} --resource-group {rg} --protected-settings "{config_file}" --force-update --enable-auto-upgrade false')

src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3237: 
 
 
                                      
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-testsdk/azure/cli/testsdk/base.py:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:669: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:737: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:706: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/custom.py:5240: in set_vmss_extension
    return VMSSCreate(cli_ctx=cmd.cli_ctx)(command_args=vmss)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/aaz/command.py:155: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__cmds.py:9203: in handler
    super().handler(command_args)
src/azure-cli-core/azure/cli/core/aaz/command.py:165: in handler
    self.ctx.format_args()
 
 
 
 
 
 
 
 
 
 
 
                             

self = <azure.cli.core.aaz._command_ctx.AAZCommandCtx object at 0x7f0b01494d10>

    def format_args(self):
        try:
            self.args._schema._fmt(ctx=self, value=self.args)
        except AAZInvalidArgValueError as err:
>           raise InvalidArgumentValueError(str(err))
E           azure.cli.core.azclierror.InvalidArgumentValueError: InvalidArgumentValue: Missing required field: --resource-group

src/azure-cli-core/azure/cli/core/aaz/_command_ctx.py:55: InvalidArgumentValueError
azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3215
Failed test_vmss_extension_debian self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f0b01694f80>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f0b086aa210>
command = 'vmss extension set -n NetworkWatcherAgentLinux --publisher Microsoft.Azure.NetworkWatcher --version 1.4  --vmss-name ...li_test_vmss_extension_debian000001 --protected-settings "/tmp/tmpmd3qrp9j" --force-update --enable-auto-upgrade false'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/azure-cli-testsdk/azure/cli/testsdk/base.py:303: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:141: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = InvalidArgumentValueError('InvalidArgumentValue: Missing required field: --resource-group')
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception InvalidArgumentValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <latest.test_vm_commands.VMSSExtensionInstallTest testMethod=test_vmss_extension_debian>

    @ResourceGroupPreparer(name_prefix='cli_test_vmss_extension_debian')
    def test_vmss_extension_debian(self):
    
        username = 'myadmin'
        config_file = write_config_file(username)
    
        self.kwargs.update({
            'vmss': 'vmss1',
            'net-pub': 'Microsoft.Azure.NetworkWatcher', 'script-pub': 'Microsoft.Azure.Extensions', 'access-pub': 'Microsoft.OSTCExtensions',
            'net-ext': 'NetworkWatcherAgentLinux', 'script-ext': 'customScript', 'access-ext': 'VMAccessForLinux',
            'username': username,
            'config_file': config_file
        })
    
        self.cmd('vmss create -g {rg} -n {vmss} --image OpenLogic:CentOS:7.5:latest --admin-username azureuser '
                 '--vm-sku Standard_B2ms --orchestration-mode Uniform --lb-sku Standard')
        self.cmd('vmss wait --created -n {vmss} -g {rg}')
    
>       self.cmd('vmss extension set -n {net-ext} --publisher {net-pub} --version 1.4  --vmss-name {vmss} --resource-group {rg} --protected-settings "{config_file}" --force-update --enable-auto-upgrade false')

src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3303: 
 
 
                                      
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-testsdk/azure/cli/testsdk/base.py:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:669: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:737: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:706: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/custom.py:5240: in set_vmss_extension
    return VMSSCreate(cli_ctx=cmd.cli_ctx)(command_args=vmss)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/aaz/command.py:155: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__cmds.py:9203: in handler
    super().handler(command_args)
src/azure-cli-core/azure/cli/core/aaz/command.py:165: in handler
    self.ctx.format_args()
 
 
 
 
 
 
 
 
 
 
 
                             

self = <azure.cli.core.aaz._command_ctx.AAZCommandCtx object at 0x7f0b0136d220>

    def format_args(self):
        try:
            self.args._schema._fmt(ctx=self, value=self.args)
        except AAZInvalidArgValueError as err:
>           raise InvalidArgumentValueError(str(err))
E           azure.cli.core.azclierror.InvalidArgumentValueError: InvalidArgumentValue: Missing required field: --resource-group

src/azure-cli-core/azure/cli/core/aaz/_command_ctx.py:55: InvalidArgumentValueError
azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3284
Failed test_vmss_extension_instance_name self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f0b02708140>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f0b086b9040>
command = 'vmss extension set -n NetworkWatcherAgentLinux --publisher Microsoft.Azure.NetworkWatcher --version 1.4  --vmss-name ...oup cli_test_vmss_extension_2000001 --protected-settings "/tmp/tmp_3qh7ee9" --extension-instance-name MyNetworkWatcher'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/azure-cli-testsdk/azure/cli/testsdk/base.py:303: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:141: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = InvalidArgumentValueError('InvalidArgumentValue: Missing required field: --resource-group')
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception InvalidArgumentValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <latest.test_vm_commands.VMSSExtensionInstallTest testMethod=test_vmss_extension_instance_name>

    @ResourceGroupPreparer(name_prefix='cli_test_vmss_extension_2')
    def test_vmss_extension_instance_name(self):
        username = 'myadmin'
        config_file = write_config_file(username)
    
        self.kwargs.update({
            'vmss': 'vmss1',
            'pub': 'Microsoft.Azure.NetworkWatcher',
            'ext_type': 'NetworkWatcherAgentLinux',
            'username': username,
            'config_file': config_file,
            'ext_name': 'MyNetworkWatcher'
        })
    
        self.cmd('vmss create -n {vmss} -g {rg} --image OpenLogic:CentOS:7.5:latest --authentication-type password '
                 '--admin-username admin123 --admin-password testPassword0 --vm-sku Standard_B2ms -l eastus2')
>       self.cmd('vmss extension set -n {ext_type} --publisher {pub} --version 1.4  --vmss-name {vmss} --resource-group {rg} '
                 '--protected-settings "{config_file}" --extension-instance-name {ext_name}')

src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3359: 
 
 
                                      
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-testsdk/azure/cli/testsdk/base.py:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:669: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:737: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:706: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/custom.py:5240: in set_vmss_extension
    return VMSSCreate(cli_ctx=cmd.cli_ctx)(command_args=vmss)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/aaz/command.py:155: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__cmds.py:9203: in handler
    super().handler(command_args)
src/azure-cli-core/azure/cli/core/aaz/command.py:165: in handler
    self.ctx.format_args()
 
 
 
 
 
 
 
 
 
 
 
                             

self = <azure.cli.core.aaz._command_ctx.AAZCommandCtx object at 0x7f0b0153cbc0>

    def format_args(self):
        try:
            self.args._schema._fmt(ctx=self, value=self.args)
        except AAZInvalidArgValueError as err:
>           raise InvalidArgumentValueError(str(err))
E           azure.cli.core.azclierror.InvalidArgumentValueError: InvalidArgumentValue: Missing required field: --resource-group

src/azure-cli-core/azure/cli/core/aaz/_command_ctx.py:55: InvalidArgumentValueError
azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3342
Failed test_diagnostics_extension_install The error message is too long, please check the pipeline log for details. azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3409
Failed test_vmss_update_automatic_repairs_with_health_extension The error message is too long, please check the pipeline log for details. azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:10977
Failed test_vmss_linux_patch_mode self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f0b01b1ab10>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f0b03018170>
command = 'vmss extension set --name ApplicationHealthLinux --publisher Microsoft.ManagedServices --version 1.0 --resource-group...vmss000002 --settings /mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/vm/tests/latest/health_extension.json'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/azure-cli-testsdk/azure/cli/testsdk/base.py:303: 
 
                                       
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:141: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = InvalidArgumentValueError('InvalidArgumentValue: Missing required field: --resource-group')
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception InvalidArgumentValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <latest.test_vm_commands.VMSSPatchModeScenarioTest testMethod=test_vmss_linux_patch_mode>
resource_group = 'cli_test_vmss_linux_patch_mode_000001'

    @ResourceGroupPreparer(name_prefix='cli_test_vmss_linux_patch_mode
', location='eastus2euap')
    def test_vmss_linux_patch_mode(self, resource_group):
        self.kwargs.update({
            'vmss': self.create_random_name('clitestvmss', 20),
            'rg': resource_group
        })
    
        self.cmd('vmss create -g {rg} -n {vmss} --image OpenLogic:CentOS:7.5:latest --enable-agent '
                 '--patch-mode ImageDefault --generate-ssh-keys --instance-count 0 '
                 '--admin-username vmtest --vm-sku Standard_B2ms')
    
        curr_dir = os.path.dirname(os.path.realpath(file))
        health_extension_file = os.path.join(curr_dir, 'health_extension.json').replace('\', '\\')
        self.kwargs['extension_file'] = health_extension_file
    
        # Health extension is required for the patch mode "AutomaticByPlatform".
>       self.cmd('vmss extension set --name ApplicationHealthLinux --publisher Microsoft.ManagedServices --version 1.0 --resource-group {rg} --vmss-name {vmss} --settings {extension_file}')

src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:11731: 
                                        
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-testsdk/azure/cli/testsdk/base.py:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:669: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:737: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:706: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/custom.py:5240: in set_vmss_extension
    return VMSSCreate(cli_ctx=cmd.cli_ctx)(command_args=vmss)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/aaz/command.py:155: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__cmds.py:9203: in handler
    super().handler(command_args)
src/azure-cli-core/azure/cli/core/aaz/command.py:165: in handler
    self.ctx.format_args()
 
 
 
 
 
 
 
 
 
 
                             _ 

self = <azure.cli.core.aaz._command_ctx.AAZCommandCtx object at 0x7f0b01619850>

    def format_args(self):
        try:
            self.args._schema._fmt(ctx=self, value=self.args)
        except AAZInvalidArgValueError as err:
>           raise InvalidArgumentValueError(str(err))
E           azure.cli.core.azclierror.InvalidArgumentValueError: InvalidArgumentValue: Missing required field: --resource-group

src/azure-cli-core/azure/cli/core/aaz/_command_ctx.py:55: InvalidArgumentValueError
azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:11714
❌3.13
Type Test Case Error Message Line
Failed test_vmss_extension self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f94de7f4050>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f94e56b5810>
command = 'vmss extension set -n NetworkWatcherAgentLinux --publisher Microsoft.Azure.NetworkWatcher --version 1.4  --vmss-name ...group cli_test_vmss_extension000001 --protected-settings "/tmp/tmpkkgurwrs" --force-update --enable-auto-upgrade false'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/azure-cli-testsdk/azure/cli/testsdk/base.py:303: 
                                        
env/lib/python3.13/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:141: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = InvalidArgumentValueError('InvalidArgumentValue: Missing required field: --resource-group')
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception InvalidArgumentValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <latest.test_vm_commands.VMSSExtensionInstallTest testMethod=test_vmss_extension>

    @AllowLargeResponse()
    @ResourceGroupPreparer(name_prefix='cli_test_vmss_extension')
    def test_vmss_extension(self):
    
        username = 'myadmin'
        config_file = write_config_file(username)
    
        self.kwargs.update({
            'vmss': 'vmss1',
            'net-pub': 'Microsoft.Azure.NetworkWatcher', 'script-pub': 'Microsoft.Azure.Extensions', 'access-pub': 'Microsoft.OSTCExtensions',
            'code-pub': 'Microsoft.Azure.Security.WindowsCodeIntegrity',
            'net-ext': 'NetworkWatcherAgentLinux', 'script-ext': 'customScript', 'access-ext': 'VMAccessForLinux',
            'code-ext': 'CodeIntegrityAgent',
            'username': username,
            'config_file': config_file
        })
    
        self.cmd('vmss create -n {vmss} -g {rg} --image OpenLogic:CentOS:7.5:latest --authentication-type password --admin-username admin123 '
                 '--admin-password testPassword0 --vm-sku Standard_B2ms --instance-count 1 --orchestration-mode Uniform --lb-sku Standard --no-wait')
        self.cmd('vmss wait --created -n {vmss} -g {rg}')
    
>       self.cmd('vmss extension set -n {net-ext} --publisher {net-pub} --version 1.4  --vmss-name {vmss} --resource-group {rg} --protected-settings "{config_file}" --force-update --enable-auto-upgrade false')

src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3237: 
 
 
                                      
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-testsdk/azure/cli/testsdk/base.py:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.13/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:669: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:737: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:706: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/custom.py:5240: in set_vmss_extension
    return VMSSCreate(cli_ctx=cmd.cli_ctx)(command_args=vmss)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/aaz/command.py:155: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__cmds.py:12118: in handler
    super().handler(command_args)
src/azure-cli-core/azure/cli/core/aaz/command.py:165: in handler
    self.ctx.format_args()
 
 
 
 
 
 
 
 
 
 
 
                             

self = <azure.cli.core.aaz._command_ctx.AAZCommandCtx object at 0x7f94de4f91d0>

    def format_args(self):
        try:
            self.args._schema._fmt(ctx=self, value=self.args)
        except AAZInvalidArgValueError as err:
>           raise InvalidArgumentValueError(str(err))
E           azure.cli.core.azclierror.InvalidArgumentValueError: InvalidArgumentValue: Missing required field: --resource-group

src/azure-cli-core/azure/cli/core/aaz/_command_ctx.py:55: InvalidArgumentValueError
azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3215
Failed test_vmss_extension_debian self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f94de571bd0>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f94e56b60d0>
command = 'vmss extension set -n NetworkWatcherAgentLinux --publisher Microsoft.Azure.NetworkWatcher --version 1.4  --vmss-name ...li_test_vmss_extension_debian000001 --protected-settings "/tmp/tmph4u1w269" --force-update --enable-auto-upgrade false'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/azure-cli-testsdk/azure/cli/testsdk/base.py:303: 
                                        
env/lib/python3.13/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:141: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = InvalidArgumentValueError('InvalidArgumentValue: Missing required field: --resource-group')
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception InvalidArgumentValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <latest.test_vm_commands.VMSSExtensionInstallTest testMethod=test_vmss_extension_debian>

    @ResourceGroupPreparer(name_prefix='cli_test_vmss_extension_debian')
    def test_vmss_extension_debian(self):
    
        username = 'myadmin'
        config_file = write_config_file(username)
    
        self.kwargs.update({
            'vmss': 'vmss1',
            'net-pub': 'Microsoft.Azure.NetworkWatcher', 'script-pub': 'Microsoft.Azure.Extensions', 'access-pub': 'Microsoft.OSTCExtensions',
            'net-ext': 'NetworkWatcherAgentLinux', 'script-ext': 'customScript', 'access-ext': 'VMAccessForLinux',
            'username': username,
            'config_file': config_file
        })
    
        self.cmd('vmss create -g {rg} -n {vmss} --image OpenLogic:CentOS:7.5:latest --admin-username azureuser '
                 '--vm-sku Standard_B2ms --orchestration-mode Uniform --lb-sku Standard')
        self.cmd('vmss wait --created -n {vmss} -g {rg}')
    
>       self.cmd('vmss extension set -n {net-ext} --publisher {net-pub} --version 1.4  --vmss-name {vmss} --resource-group {rg} --protected-settings "{config_file}" --force-update --enable-auto-upgrade false')

src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3303: 
 
 
                                      
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-testsdk/azure/cli/testsdk/base.py:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.13/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:669: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:737: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:706: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/custom.py:5240: in set_vmss_extension
    return VMSSCreate(cli_ctx=cmd.cli_ctx)(command_args=vmss)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/aaz/command.py:155: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__cmds.py:12118: in handler
    super().handler(command_args)
src/azure-cli-core/azure/cli/core/aaz/command.py:165: in handler
    self.ctx.format_args()
 
 
 
 
 
 
 
 
 
 
 
                             

self = <azure.cli.core.aaz._command_ctx.AAZCommandCtx object at 0x7f94de209450>

    def format_args(self):
        try:
            self.args._schema._fmt(ctx=self, value=self.args)
        except AAZInvalidArgValueError as err:
>           raise InvalidArgumentValueError(str(err))
E           azure.cli.core.azclierror.InvalidArgumentValueError: InvalidArgumentValue: Missing required field: --resource-group

src/azure-cli-core/azure/cli/core/aaz/_command_ctx.py:55: InvalidArgumentValueError
azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3284
Failed test_vmss_extension_instance_name self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f94dea57610>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f94e56b6990>
command = 'vmss extension set -n NetworkWatcherAgentLinux --publisher Microsoft.Azure.NetworkWatcher --version 1.4  --vmss-name ...oup cli_test_vmss_extension_2000001 --protected-settings "/tmp/tmptndkzohh" --extension-instance-name MyNetworkWatcher'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/azure-cli-testsdk/azure/cli/testsdk/base.py:303: 
                                        
env/lib/python3.13/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:141: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = InvalidArgumentValueError('InvalidArgumentValue: Missing required field: --resource-group')
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception InvalidArgumentValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <latest.test_vm_commands.VMSSExtensionInstallTest testMethod=test_vmss_extension_instance_name>

    @ResourceGroupPreparer(name_prefix='cli_test_vmss_extension_2')
    def test_vmss_extension_instance_name(self):
        username = 'myadmin'
        config_file = write_config_file(username)
    
        self.kwargs.update({
            'vmss': 'vmss1',
            'pub': 'Microsoft.Azure.NetworkWatcher',
            'ext_type': 'NetworkWatcherAgentLinux',
            'username': username,
            'config_file': config_file,
            'ext_name': 'MyNetworkWatcher'
        })
    
        self.cmd('vmss create -n {vmss} -g {rg} --image OpenLogic:CentOS:7.5:latest --authentication-type password '
                 '--admin-username admin123 --admin-password testPassword0 --vm-sku Standard_B2ms -l eastus2')
>       self.cmd('vmss extension set -n {ext_type} --publisher {pub} --version 1.4  --vmss-name {vmss} --resource-group {rg} '
                 '--protected-settings "{config_file}" --extension-instance-name {ext_name}')

src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3359: 
 
 
                                      
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-testsdk/azure/cli/testsdk/base.py:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.13/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:669: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:737: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:706: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/custom.py:5240: in set_vmss_extension
    return VMSSCreate(cli_ctx=cmd.cli_ctx)(command_args=vmss)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/aaz/command.py:155: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__cmds.py:12118: in handler
    super().handler(command_args)
src/azure-cli-core/azure/cli/core/aaz/command.py:165: in handler
    self.ctx.format_args()
 
 
 
 
 
 
 
 
 
 
 
                             

self = <azure.cli.core.aaz._command_ctx.AAZCommandCtx object at 0x7f94de52a990>

    def format_args(self):
        try:
            self.args._schema._fmt(ctx=self, value=self.args)
        except AAZInvalidArgValueError as err:
>           raise InvalidArgumentValueError(str(err))
E           azure.cli.core.azclierror.InvalidArgumentValueError: InvalidArgumentValue: Missing required field: --resource-group

src/azure-cli-core/azure/cli/core/aaz/_command_ctx.py:55: InvalidArgumentValueError
azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3342
Failed test_diagnostics_extension_install The error message is too long, please check the pipeline log for details. azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:3409
Failed test_vmss_update_automatic_repairs_with_health_extension The error message is too long, please check the pipeline log for details. azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:10977
Failed test_vmss_linux_patch_mode self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f94de7e9a90>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f94dfe7b110>
command = 'vmss extension set --name ApplicationHealthLinux --publisher Microsoft.ManagedServices --version 1.0 --resource-group...vmss000002 --settings /mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/vm/tests/latest/health_extension.json'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/azure-cli-testsdk/azure/cli/testsdk/base.py:303: 
 
                                       
env/lib/python3.13/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:141: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = InvalidArgumentValueError('InvalidArgumentValue: Missing required field: --resource-group')
args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception InvalidArgumentValueError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <latest.test_vm_commands.VMSSPatchModeScenarioTest testMethod=test_vmss_linux_patch_mode>
resource_group = 'cli_test_vmss_linux_patch_mode_000001'

    @ResourceGroupPreparer(name_prefix='cli_test_vmss_linux_patch_mode
', location='eastus2euap')
    def test_vmss_linux_patch_mode(self, resource_group):
        self.kwargs.update({
            'vmss': self.create_random_name('clitestvmss', 20),
            'rg': resource_group
        })
    
        self.cmd('vmss create -g {rg} -n {vmss} --image OpenLogic:CentOS:7.5:latest --enable-agent '
                 '--patch-mode ImageDefault --generate-ssh-keys --instance-count 0 '
                 '--admin-username vmtest --vm-sku Standard_B2ms')
    
        curr_dir = os.path.dirname(os.path.realpath(file))
        health_extension_file = os.path.join(curr_dir, 'health_extension.json').replace('\', '\\')
        self.kwargs['extension_file'] = health_extension_file
    
        # Health extension is required for the patch mode "AutomaticByPlatform".
>       self.cmd('vmss extension set --name ApplicationHealthLinux --publisher Microsoft.ManagedServices --version 1.0 --resource-group {rg} --vmss-name {vmss} --settings {extension_file}')

src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:11731: 
                                        
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-testsdk/azure/cli/testsdk/base.py:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.13/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:669: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:737: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:706: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/custom.py:5240: in set_vmss_extension
    return VMSSCreate(cli_ctx=cmd.cli_ctx)(command_args=vmss)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/aaz/command.py:155: in call
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__cmds.py:12118: in handler
    super().handler(command_args)
src/azure-cli-core/azure/cli/core/aaz/command.py:165: in handler
    self.ctx.format_args()
 
 
 
 
 
 
 
 
 
 
                             _ 

self = <azure.cli.core.aaz._command_ctx.AAZCommandCtx object at 0x7f94de417890>

    def format_args(self):
        try:
            self.args._schema._fmt(ctx=self, value=self.args)
        except AAZInvalidArgValueError as err:
>           raise InvalidArgumentValueError(str(err))
E           azure.cli.core.azclierror.InvalidArgumentValueError: InvalidArgumentValue: Missing required field: --resource-group

src/azure-cli-core/azure/cli/core/aaz/_command_ctx.py:55: InvalidArgumentValueError
azure/cli/command_modules/vm/tests/latest/test_vm_commands.py:11714

@azure-client-tools-bot-prd
Copy link

azure-client-tools-bot-prd bot commented Jan 27, 2026

️✔️AzureCLI-BreakingChangeTest
️✔️Non Breaking Changes

@yonzhan
Copy link
Collaborator

yonzhan commented Jan 27, 2026

Thank you for your contribution! We will review the pull request and get back to you soon.

@github-actions
Copy link

The git hooks are available for azure-cli and azure-cli-extensions repos. They could help you run required checks before creating the PR.

Please sync the latest code with latest dev branch (for azure-cli) or main branch (for azure-cli-extensions).
After that please run the following commands to enable git hooks:

pip install azdev --upgrade
azdev setup -c <your azure-cli repo path> -r <your azure-cli-extensions repo path>

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates az vmss extension commands away from handwritten Compute SDK usage toward AAZ-based implementations.

Changes:

  • Reworked VMSS extension operations in custom.py to use AAZ VMSS update flow and an AAZ rolling-upgrade command wrapper.
  • Added generated AAZ command group/code for VMSS extension rolling upgrade.
  • Adjusted the VMSS extension scenario test VMSS create parameters (image + SKU) for the test run.

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py Updates the VMSS creation used by VMSS extension scenario tests.
src/azure-cli/azure/cli/command_modules/vm/custom.py Moves VMSS extension delete/show/list/set/upgrade logic toward AAZ-based flows.
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/compute/virtual_machine_scale_set/_extension_rolling_upgrade.py Adds generated AAZ command to start VMSS extension rolling upgrade.
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/compute/virtual_machine_scale_set/init.py Exposes the generated VMSS rolling-upgrade command module.
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/compute/virtual_machine_scale_set/__cmd_group.py Declares the generated AAZ command group for compute virtual machine scale set.
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/compute/init.py Adds generated AAZ compute package init for command group wiring.
src/azure-cli/azure/cli/command_modules/vm/aaz/latest/compute/__cmd_group.py Declares the generated AAZ top-level compute command group.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

dev

dev

dev

fix ci

dev

dev
@huiii99 huiii99 force-pushed the vmss-extension-migration branch from c3344e1 to 8504de7 Compare January 30, 2026 07:43
@huiii99
Copy link
Member Author

huiii99 commented Feb 3, 2026

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@yanzhudd
Copy link
Contributor

please note all the input to aaz class should be snake case

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Auto-Assign Auto assign by bot Compute az vm/vmss/image/disk/snapshot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants