'az maintenance assignment create-or-update-subscription' example does not work
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 3.5k
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 60
Description
### 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 [, , ]
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
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 []
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 [.add_subscription_parameter at 0x7f748f08ddc0>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [.add_ids_arguments at 0x7f748f0a60d0>, .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:
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)
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 setup_operations
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 []
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.
Contributor guide
Assessment
This issue has not been assessed yet.