Open benjamin-crew opened 10 months ago
Thank you for opening this issue, we will look into it.
@benjamin-crew Escaping issue with --filter-tags
, should be {tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}
.
@benjamin-crew Escaping issue with
--filter-tags
, should be{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}
.
This also fails:
benjamin_crew [ ~ ]$ az maintenance assignment create-or-update-subscription --config-id "/subscriptions/REDACTED/resourcegroups/REDACTED-uks-mgt-updates-rg-01/providers/Microsoft.Maintenance/maintenanceConfigurations/bc-test-delete-me" --configuration-assignment-name "REDACTED - Production" --subscription "REDACTED - Production" --filter-locations uksouth --filter-os-types windows linux --filter-tags {updateRing:[1],updateReboot:[never]} --filter-tags-operator All
Failed to parse '--filter-tags' argument: Shorthand Syntax Error: Redundant tail:
updateRing:[1]
^^^^
benjamin_crew [ ~ ]$ az maintenance assignment create-or-update-subscription --config-id "/subscriptions/REDACTED/resourcegroups/REDACTED-uks-mgt-updates-rg-01/providers/Microsoft.Maintenance/maintenanceConfigurations/bc-test-delete-me" --configuration-assignment-name "REDACTED - Production" --subscription "REDACTED - Production" --filter-locations uksouth --filter-os-types windows linux --filter-tags {tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]} --filter-tags-operator All
Failed to parse '--filter-tags' argument: Shorthand Syntax Error: Redundant tail:
tagKey1:[tagKey1Val1
^^^^^^^^^^^^^
Typing the following in the terminal:
--filter-tags "{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}"
Typing the following in the terminal:
--filter-tags "{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}"
Still struggling to get this working.
benjamin_crew [ ~ ]$ az maintenance assignment create-or-update-subscription --config-id "/subscriptions/REDACTED/resourcegroups/REDACTED-uks-mgt-updates-rg-01/providers/Microsoft.Maintenance/maintenanceConfigurations/bc-test-delete-me" --configuration-assignment-name "REDACTED- Production" --subscription "REDACTED- Production" --filter-locations uksouth --filter-os-types windows linux --filter-tags --filter-tags "{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}" --filter-tags-operator All
argument --filter-tags: expected at least one argument
Sad. @KalpeshChavan12 the real owner, may could help on the invalid example.
Sad. @KalpeshChavan12 the real owner, may could help on the invalid example.
My apologies, I was wrong. Your latest suggestion worked and i've managed to create the maintenance assignment.
Thank you for your help!
Describe the bug
I am trying to create a maintenance assignment using the example from the documentation as the template, but when I specify the example tags, the command outputs an error.
Related command
The example is as follows:
az maintenance assignment create-or-update-subscription --maintenance-configuration-id "/subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/exmaplerg2/providers/Microsoft. Maintenance/maintenanceConfigurations/config1" --name assignmentname --filter-locations eastus2euap centraluseuap --filter-os-types windows linux --filter-tags "{{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}}" --filter-tags-operator All
I have attempted the following:
az maintenance assignment create-or-update-subscription --config-id "/subscriptions/redacted/resourcegroups/redacted-rg-01/providers/Microsoft.Maintenance/maintenanceConfigurations/bc-test-delete-me" --configuration-assignment-name "REDACTED - Production" --subscription "REDACTED - Production" --filter-locations uksouth --filter-os-types windows linux --filter-tags "{{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}}" --filter-tags-operator All
Errors
Failed to parse '--filter-tags' argument: Shorthand Syntax Error: Redundant tail: {{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}}
Issue script & Debug output
redacted [ ~ ]$ az maintenance assignment create-or-update-subscription --config-id "/subscriptions/REDACTED/resourcegroups/REDACTED-uks-mgt-updates-rg-01/providers/Microsoft.Maintenance/maintenanceConfigurations/bc-test-delete-me" --configuration-assignment-name "REDACTED - Production" --subscription "REDACTED - Production" --filter-locations uksouth --filter-os-types windows linux --filter-tags "{{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}}" --filter-tags-operator All --debug cli.knack.cli: Command arguments: ['maintenance', 'assignment', 'create-or-update-subscription', '--config-id', '/subscriptions/REDACTED/resourcegroups/REDACTED-uks-mgt-updates-rg-01/providers/Microsoft.Maintenance/maintenanceConfigurations/bc-test-delete-me', '--configuration-assignment-name', 'REDACTED - Production', '--subscription', 'REDACTED - Production', '--filter-locations', 'uksouth', '--filter-os-types', 'windows', 'linux', '--filter-tags', '{{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}}', '--filter-tags-operator', 'All', '--debug'] cli.knack.cli: init debug log: Enable color in terminal. cli.knack.cli: Event: Cli.PreExecute [] cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x7f748fd701f0>, <function OutputProducer.on_global_arguments at 0x7f748fc8ad30>, <function CLIQuery.on_global_arguments at 0x7f748fc22310>] cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate [] cli.azure.cli.core: Modules found from index for 'maintenance': ['azext_maintenance'] cli.azure.cli.core: Loading command modules: cli.azure.cli.core: Name Load Time Groups Commands cli.azure.cli.core: Total (0) 0.000 0 0 cli.azure.cli.core: These extensions are not installed and will be skipped: ['azext_next'] cli.azure.cli.core: Loading extensions: cli.azure.cli.core: Name Load Time Groups Commands Directory cli.azure.cli.core: ai-examples 0.113 1 1 /usr/lib/python3.9/site-packages/azure-cli-extensions/ai-examples cli.azure.cli.core: maintenance 0.053 6 23 /home/benjamin_crew/.azure/cliextensions/maintenance cli.azure.cli.core: Total (2) 0.166 7 24.add_subscription_parameter at 0x7f748f08ddc0>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument..add_ids_arguments at 0x7f748f0a60d0>, <function register_cache_arguments..add_cache_arguments at 0x7f748f02fee0>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.azure.cli.core.util: malformed node or string: <ast.Name object at 0x7f748e5c3ee0>
cli.azure.cli.core.aaz._arg_action: Failed to parse string as JSON:
{{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}}
Error detail: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/util.py", line 576, in shell_safe_json_parse
return json.loads(json_or_dict_string, object_pairs_hook=OrderedDict, strict=strict)
File "/usr/lib/python3.9/json/init.py", line 359, in loads
return cls(**kw).decode(s)
File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.9/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
cli.azure.cli.core: Loaded 7 groups, 24 commands. cli.azure.cli.core: Found a match in the command table. cli.azure.cli.core: Raw command : maintenance assignment create-or-update-subscription cli.azure.cli.core: Command table: maintenance assignment create cli.azure.cli.core: remaining : or-update-subscription cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x7f748f0c73a0>] cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/benjamin_crew/.azure/commands/2023-11-22.14-30-49.maintenance_assignment_create-or-update-subscription.1555.log'. az_command_data_logger: command args: maintenance assignment create-or-update-subscription --config-id {} --configuration-assignment-name {} --subscription {} --filter-locations {} --filter-os-types {} {} --filter-tags {} --filter-tags-operator {} --debug cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument.
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_arg_action.py", line 263, in _decode_value v = shell_safe_json_parse(value, True) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/util.py", line 600, in shell_safe_json_parse raise InvalidArgumentValueError(msg, recommendation=recommendation) from json_ex azure.cli.core.azclierror.InvalidArgumentValueError: Failed to parse string as JSON: {{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}} Error detail: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_arg_action.py", line 89, in call self.setup_operations(dest_ops, values) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_arg_action.py", line 184, in setupoperations for , key_parts, value in cls.decode_values(values): File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_arg_action.py", line 199, in decode_values v = cls._decode_value(schema, v) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_arg_action.py", line 266, in _decode_value raise shorthand_ex # raise shorthand syntax exception File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_arg_action.py", line 260, in _decode_value v = cls._str_parser(value) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_utils.py", line 50, in call raise AAZInvalidShorthandSyntaxError(data, length, len(data) - length, "Redundant tail") azure.cli.core.aaz.exceptions.AAZInvalidShorthandSyntaxError: Shorthand Syntax Error: Redundant tail: {{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}} ^
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "/usr/lib64/az/lib/python3.9/site-packages/knack/cli.py", line 233, in invoke cmd_result = self.invocation.execute(args) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/init.py", line 588, in execute parsed_args = self.parser.parse_args(args) File "/usr/lib64/az/lib/python3.9/site-packages/knack/parser.py", line 261, in parse_args return super().parse_args(args) File "/usr/lib/python3.9/argparse.py", line 1825, in parse_args args, argv = self.parse_known_args(args, namespace) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/parser.py", line 281, in parse_known_args self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace) File "/usr/lib/python3.9/argparse.py", line 1858, in parse_known_args namespace, args = self._parse_known_args(args, namespace) File "/usr/lib/python3.9/argparse.py", line 2049, in _parse_known_args positionals_end_index = consume_positionals(start_index) File "/usr/lib/python3.9/argparse.py", line 2026, in consume_positionals take_action(action, args) File "/usr/lib/python3.9/argparse.py", line 1935, in take_action action(self, namespace, argument_values, option_string) File "/usr/lib/python3.9/argparse.py", line 1214, in call subnamespace, arg_strings = parser.parse_known_args(arg_strings, None) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/parser.py", line 281, in parse_known_args self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace) File "/usr/lib/python3.9/argparse.py", line 1858, in parse_known_args namespace, args = self._parse_known_args(args, namespace) File "/usr/lib/python3.9/argparse.py", line 2049, in _parse_known_args positionals_end_index = consume_positionals(start_index) File "/usr/lib/python3.9/argparse.py", line 2026, in consume_positionals take_action(action, args) File "/usr/lib/python3.9/argparse.py", line 1935, in take_action action(self, namespace, argument_values, option_string) File "/usr/lib/python3.9/argparse.py", line 1214, in call subnamespace, arg_strings = parser.parse_known_args(arg_strings, None) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/parser.py", line 281, in parse_known_args self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace) File "/usr/lib/python3.9/argparse.py", line 1858, in parse_known_args namespace, args = self._parse_known_args(args, namespace) File "/usr/lib/python3.9/argparse.py", line 2049, in _parse_known_args positionals_end_index = consume_positionals(start_index) File "/usr/lib/python3.9/argparse.py", line 2026, in consume_positionals take_action(action, args) File "/usr/lib/python3.9/argparse.py", line 1935, in take_action action(self, namespace, argument_values, option_string) File "/usr/lib/python3.9/argparse.py", line 1214, in call subnamespace, arg_strings = parser.parse_known_args(arg_strings, None) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/parser.py", line 281, in parse_known_args self._namespace, self._raw_arguments = super().parse_known_args(args=args, namespace=namespace) File "/usr/lib/python3.9/argparse.py", line 1858, in parse_known_args namespace, args = self._parse_known_args(args, namespace) File "/usr/lib/python3.9/argparse.py", line 2067, in _parse_known_args start_index = consume_optional(start_index) File "/usr/lib/python3.9/argparse.py", line 2007, in consume_optional take_action(action, args, option_string) File "/usr/lib/python3.9/argparse.py", line 1935, in take_action action(self, namespace, argument_values, option_string) File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/aaz/_arg_action.py", line 95, in call raise azclierror.InvalidArgumentValueError(f"Failed to parse '{option_string}' argument: {ex}") from ex azure.cli.core.azclierror.InvalidArgumentValueError: Failed to parse '--filter-tags' argument: Shorthand Syntax Error: Redundant tail: {{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}} ^
cli.azure.cli.core.azclierror: Failed to parse '--filter-tags' argument: Shorthand Syntax Error: Redundant tail: {{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}} ^ az_command_data_logger: Failed to parse '--filter-tags' argument: Shorthand Syntax Error: Redundant tail: {{tagKey1:[tagKey1Val1,tagKey1Val2],tagKey2:[tagKey2Val1,tagKey2Val2]}} ^ cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x7f748f0c75e0>] az_command_data_logger: exit code: 1 cli.main: Command ran in 0.372 seconds (init: 0.119, invoke: 0.253) 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 3738 in cache telemetry.main: Begin creating telemetry upload process. telemetry.process: Creating upload process: "/usr/bin/python3.9 /usr/lib/az/lib/python3.9/site-packages/azure/cli/telemetry/init.py /home/benjamin_crew/.azure" telemetry.process: Return from creating process telemetry.main: Finish creating telemetry upload process.
Expected behavior
I would expect the tags to be added to the dynamic scope of the maintenance configuration.
Environment Summary
azure-cli 2.54.0
core 2.54.0 telemetry 1.1.0
Extensions: ai-examples 0.2.5 maintenance 1.5.0 ml 2.21.1 ssh 2.0.2
Dependencies: msal 1.24.0b2 azure-mgmt-resource 23.1.0b2
Python location '/usr/bin/python3.9' Extensions directory '/home/benjamin_crew/.azure/cliextensions' Extensions system directory '/usr/lib/python3.9/site-packages/azure-cli-extensions'
Python (Linux) 3.9.14 (main, Oct 12 2023, 19:48:32) [GCC 11.2.0]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
Additional context
I have also tried a few other syntaxes for the --filter-tags switch:
--filter-tags "{updateRing:[1]}" --filter-tags "{updateRing:1}" --filter-tags "updateRing:1" --filter-tags updateRing:1 --filter-tags updateRing:[1] --filter-tags "{updateRing:[1],updateReboot:[never]}" --filter-tags "{updateRing:1,updateReboot:never}" --filter-tags "{{updateRing:[1],updateReboot:[never]}}"
None of theses efforts worked.