-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Description
Describe the bug
The az vm repair repair-button command fails when using Azure CLI versions 2.77.0 and above. The same command works correctly in Azure Cloud Shell(which has 2.77.0) and with CLI versions up to 2.76.0. This issue impacts automated repair workflows and SRE agent scenarios, especially for VMs with fstab issues.
Related command
az vm repair repair-button --button-command 'fstab' --verbose --resource-group --name
Errors
PS C:\Users\dpaladhi> az vm repair repair-button --button-command 'fstab' --resource-group nobootscenariosrg --name fstabnoboot
This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
The command failed with an unexpected error. Here is the traceback:
cannot remove local variables from FrameLocalsProxy
Traceback (most recent call last):
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 666, in execute
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 734, in _run_jobs_serially
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 703, in _run_job
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 336, in call
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 120, in handler
File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\custom.py", line 1031, in repair_button
command = command_helper(logger, cmd, 'vm repair repair-button')
File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 40, in init
self.command_params = _get_function_param_dict(inspect.getouterframes(inspect.currentframe())[1].frame)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\repair_utils.py", line 737, in _get_function_param_dict
del values['cmd']
~~~~~~^^^^^^^
ValueError: cannot remove local variables from FrameLocalsProxy
Issue script & Debug output
PS C:\Users\dpaladhi> az vm repair repair-button --button-command 'fstab' --resource-group nobootscenariosrg --name fstabnoboot --debug cli.knack.cli: Command arguments: ['vm', 'repair', 'repair-button', '--button-command', 'fstab', '--resource-group', 'nobootscenariosrg', '--name', 'fstabnoboot', '--debug'] cli.knack.cli: init debug log: Enable color in terminal. Enable VT mode. cli.knack.cli: Event: Cli.PreExecute [] cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x0000023685F944A0>, <function OutputProducer.on_global_arguments at 0x000002368652D800>, <function CLIQuery.on_global_arguments at 0x000002368657B740>] cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate [] cli.azure.cli.core: Modules found from index for 'vm': ['azure.cli.command_modules.vm', 'azext_vm_repair'] cli.azure.cli.core: Loading command modules: cli.azure.cli.core: Name Load Time Groups Commands cli.azure.cli.core: vm 4.180 60 280 cli.azure.cli.core: Total (1) 4.180 60 280 cli.azure.cli.core: These extensions are not installed and will be skipped: ['azext_ai_examples', 'azext_next'] cli.azure.cli.core: Loading extensions: cli.azure.cli.core: Name Load Time Groups Commands Directory cli.azure.cli.core: vm-repair 0.303 2 7 C:\Users\dpaladhi.azure\cliextensions\vm-repair cli.azure.cli.core: Total (1) 0.303 2 7 cli.azure.cli.core: Loaded 61 groups, 287 commands. cli.azure.cli.core: Found a match in the command table. cli.azure.cli.core: Raw command : vm repair repair-button cli.azure.cli.core: Command table: vm repair repair-button cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x000002368847D080>] cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to 'C:\Users\dpaladhi.azure\commands\2025-11-10.12-15-35.vm_repair_repair-button.47516.log'. az_command_data_logger: command args: vm repair repair-button --button-command {} --resource-group {} --name {} --debug cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument..add_subscription_parameter at 0x0000023688CFE5C0>] cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad [] cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument..add_ids_arguments at 0x0000023688D5C900>, <function register_cache_arguments..add_cache_arguments at 0x0000023688D5CAE0>, <function register_upcoming_breaking_change_info..update_breaking_change_info at 0x0000023688D5CB80>] cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded [] cli.knack.cli: Event: CommandInvoker.OnPreParseArgs [] cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x000002368652D8A0>, <function CLIQuery.handle_query_parameter at 0x000002368657B7E0>, <function register_ids_argument..parse_ids_arguments at 0x0000023688D5C9A0>] az_command_data_logger: extension name: vm-repair az_command_data_logger: extension version: 2.1.2 This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus cli.azure.cli.core.azclierror: Traceback (most recent call last): File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 666, in execute File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 734, in _run_jobs_serially File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 703, in _run_job File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 336, in call File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 120, in handler File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\custom.py", line 1031, in repair_button command = command_helper(logger, cmd, 'vm repair repair-button') File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 40, in init self.command_params = _get_function_param_dict(inspect.getouterframes(inspect.currentframe())[1].frame) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\repair_utils.py", line 737, in _get_function_param_dict del values['cmd'] ~~~~~~^^^^^^^ ValueError: cannot remove local variables from FrameLocalsProxy cli.azure.cli.core.azclierror: The command failed with an unexpected error. Here is the traceback: az_command_data_logger: The command failed with an unexpected error. Here is the traceback: cli.azure.cli.core.azclierror: cannot remove local variables from FrameLocalsProxy Traceback (most recent call last): File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 666, in execute File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 734, in _run_jobs_serially File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 703, in _run_job File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 336, in call File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 120, in handler File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\custom.py", line 1031, in repair_button command = command_helper(logger, cmd, 'vm repair repair-button') File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 40, in init self.command_params = _get_function_param_dict(inspect.getouterframes(inspect.currentframe())[1].frame) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\repair_utils.py", line 737, in _get_function_param_dict del values['cmd'] ~~~~~~^^^^^^^ ValueError: cannot remove local variables from FrameLocalsProxy az_command_data_logger: cannot remove local variables from FrameLocalsProxy Traceback (most recent call last): File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 666, in execute File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 734, in _run_jobs_serially File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 703, in _run_job File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 336, in call File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 120, in handler File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\custom.py", line 1031, in repair_button command = command_helper(logger, cmd, 'vm repair repair-button') File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 40, in init self.command_params = _get_function_param_dict(inspect.getouterframes(inspect.currentframe())[1].frame) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\repair_utils.py", line 737, in get_function_param_dict del values['cmd'] ~~~~~~^^^^^^^ ValueError: cannot remove local variables from FrameLocalsProxy To check existing issues, please visit: https://github.com/Azure/azure-cli/issues cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x000002368847D300>] az_command_data_logger: exit code: 1 cli.main: Command ran in 7.704 seconds (init: 1.858, invoke: 5.846) telemetry.main: Begin splitting cli events and extra events, total events: 1 telemetry.client: Accumulated 0 events. Flush the clients. telemetry.main: Finish splitting cli events and extra events, cli events: 1 telemetry.save: Save telemetry record of length 8044 in cache file under C:\Users\dpaladhi.azure\telemetry\20251110121536974 telemetry.main: Begin creating telemetry upload process. telemetry.process: Creating upload process: "C:\Program Files\Microsoft SDKs\Azure\CLI2\python.exe C:\Program Files\Microsoft SDKs\Azure\CLI2\Lib\site-packages\azure\cli\telemetry_init.pyc C:\Users\dpaladhi.azure C:\Users\dpaladhi.azure\telemetry\20251110121536974" telemetry.process: Return from creating process 20428 telemetry.main: Finish creating telemetry upload process. Exception ignored in: <function command_helper.del at 0x000002368ACEDD00> Traceback (most recent call last): File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 86, in del AttributeError: 'command_helper' object has no attribute 'is_verbose'
Expected behavior
The command should execute successfully and perform the repair steps without errors.
Environment Summary
PS C:\Users\dpaladhi> az --version azure-cli 2.79.0 core 2.79.0 telemetry 1.1.0 Extensions: azure-devops 0.26.0 vm-repair 2.1.2 Dependencies: msal 1.34.0b1 azure-mgmt-resource 23.3.0 Python location 'C:\Program Files\Microsoft SDKs\Azure\CLI2\python.exe' Config directory 'C:\Users\dpaladhi.azure' Extensions directory 'C:\Users\dpaladhi.azure\cliextensions' Python (Windows) 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:09:13) [MSC v.1944 64 bit (AMD64)] Legal docs and information: aka.ms/AzureCliLegal Your CLI is up-to-date.
Additional context
The error occurs at the beginning of the process, before the three-step ALAR workflow starts.
The issue seems related to parameter handling in vm-repair extension after CLI core changes.
Relevant code line:
repair_utils.py#L737
Possible workaround discussed: Downgrade CLI to 2.76.0 temporarily.
Impact: Blocks automated repair flows and demo scenarios for Ignite.