Azure / azure-cli-extensions

Public Repository for Extensions of Azure CLI.
https://docs.microsoft.com/en-us/cli/azure
MIT License
373 stars 1.16k forks source link

`az monitor data-collection rule update` fails updating stream declaration #7743

Open erikrok opened 1 week ago

erikrok commented 1 week ago

Describe the bug

Updating an existing data collection rule is not working.

az monitor data-collection rule update --resource-group my-rg --name my-dcr --stream-declarations "columns[{location:string}]"

error: argument: Model 'AAZObjectArg' has no field named 'location'

az monitor data-collection rule update --resource-group my-rg --name my-dcr --stream-declarations "columns=[{'location':'string'}]"

error: Failed to parse '--stream-declarations' argument: dict type value expected, got '[OrderedDict([('location', 'string')])]'(<class 'list '>)

Related command

az monitor data-collection rule update --resource-group my-rg --name my-dcr --stream-declarations "columns[{location:string}]"

Errors

Failed to parse '--stream-declarations' argument: dict type value expected, got '[OrderedDict([('location', 'string')])]'(<class 'list or argument: Model 'AAZObjectArg' has no field named 'location' `

Issue script & Debug output

cli.knack.cli: Command arguments: ['monitor', 'data-collection', 'rule', 'update', '--debug', '--resource-group', 'oat-rg-dev', '--nam
e', 'dcr-ghaction', '--stream-declarations', "columns=[{'location':'string'}]"]
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 0x0286EA78>, <function Output
Producer.on_global_arguments at 0x02B94B68>, <function CLIQuery.on_global_arguments at 0x02BB9938>]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'monitor': ['azure.cli.command_modules.monitor', 'azext_applicationinsights', 'azext_
amcs']
cli.azure.cli.core: Loading command modules:
cli.azure.cli.core: Name                  Load Time    Groups  Commands
cli.azure.cli.core: monitor                   0.659        22        65
cli.azure.cli.core: Total (1)                 0.659        22        65
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: application-insights      0.011        10        30  C:\Users\erik.rokland\.azure\cliextensions\application-insigh
ts
cli.azure.cli.core: monitor-control-service      0.041        10        30  C:\Users\erik.rokland\.azure\cliextensions\monitor-control
-service
cli.azure.cli.core: Total (2)                 0.052        20        60  
cli.azure.cli.core: Loaded 40 groups, 125 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command  : monitor data-collection rule update
cli.azure.cli.core: Command table: monitor data-collection rule update
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x03918258>]      
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to 'C:\Users\erik.rokland\.azure\commands\2024-06-25.13-28-
42.monitor_data-collection_rule_update.34000.log'.
az_command_data_logger: command args: monitor data-collection rule update --debug --resource-group {} --name {} --stream-declarations 
{}
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument.<locals>.add_subscription_para
meter at 0x0394C348>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument.<locals>.add_ids_arguments at 0x0394C43
8>, <function register_cache_arguments.<locals>.add_cache_arguments at 0x0395D618>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.azure.cli.core.azclierror: Traceback (most recent call last):
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/aaz/_arg_action.py", line 89, in __call__ 
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/aaz/_arg_action.py", line 189, in setup_op
erations
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/aaz/_arg_action.py", line 296, in format_d
ata
azure.cli.core.aaz.exceptions.AAZInvalidValueError: dict type value expected, got '[OrderedDict([('location', 'string')])]'(<class 'li
st'>)

The above exception was the direct cause of the following exception:

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 589, in execut
e
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/parser.py", line 261, in parse_args
  File "argparse.py", line 1869, in parse_args
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/parser.py", line 281, in parse_known_args 
  File "argparse.py", line 1902, in parse_known_args
  File "argparse.py", line 2096, in _parse_known_args
  File "argparse.py", line 2073, in consume_positionals
  File "argparse.py", line 1978, in take_action
  File "argparse.py", line 1241, in __call__
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/parser.py", line 281, in parse_known_args 
  File "argparse.py", line 1902, in parse_known_args
  File "argparse.py", line 2096, in _parse_known_args
  File "argparse.py", line 2073, in consume_positionals
  File "argparse.py", line 1978, in take_action
  File "argparse.py", line 1241, in __call__
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/parser.py", line 281, in parse_known_args 
  File "argparse.py", line 1902, in parse_known_args
  File "argparse.py", line 2096, in _parse_known_args
  File "argparse.py", line 2073, in consume_positionals
  File "argparse.py", line 1978, in take_action
  File "argparse.py", line 1241, in __call__
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/parser.py", line 281, in parse_known_args 
  File "argparse.py", line 1902, in parse_known_args
  File "argparse.py", line 2096, in _parse_known_args
  File "argparse.py", line 2073, in consume_positionals
  File "argparse.py", line 1978, in take_action
  File "argparse.py", line 1241, in __call__
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/parser.py", line 281, in parse_known_args 
  File "argparse.py", line 1902, in parse_known_args
  File "argparse.py", line 2114, in _parse_known_args
  File "argparse.py", line 2054, in consume_optional
  File "argparse.py", line 1978, in take_action
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/aaz/_arg_action.py", line 95, in __call__ 
azure.cli.core.azclierror.InvalidArgumentValueError: Failed to parse '--stream-declarations' argument: dict type value expected, got '
[OrderedDict([('location', 'string')])]'(<class 'list'>)

cli.azure.cli.core.azclierror: Failed to parse '--stream-declarations' argument: dict type value expected, got '[OrderedDict([('locati
on', 'string')])]'(<class 'list'>)
az_command_data_logger: Failed to parse '--stream-declarations' argument: dict type value expected, got '[OrderedDict([('location', 's
tring')])]'(<class 'list'>)
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x03918398>]
az_command_data_logger: exit code: 1
cli.__main__: Command ran in 1.457 seconds (init: 0.621, invoke: 0.837)

Expected behavior

  "resourceGroup": "my-rg",
  "streamDeclarations": {
    "Custom-mytable_CL": {
      "columns": [
        {
          "name": "TimeGenerated",
          "type": "datetime"
        },
        {
          "name": "location",
          "type": "string"
        },
        {
          "name": "properties",
          "type": "dynamic"
        }
      ]
    }
  },

Environment Summary

{
  "azure-cli": "2.61.0",
  "azure-cli-core": "2.61.0",
  "azure-cli-telemetry": "1.1.0",
  "extensions": {
    "account": "0.2.3",
    "application-insights": "0.1.19",
    "azure-devops": "0.26.0",
    "datafactory": "0.6.0",
    "kusto": "0.5.0",
    "monitor-control-service": "1.1.0"
  }
}

Additional context

No response

yonzhan commented 1 week ago

Thank you for opening this issue, we will look into it.

AllyW commented 2 days ago

@erikrok Custom-mytable_CL is needed ourside columns structure.

For now, you can put all your streamDeclarations data into rule-file arg, like below, and it'll take care of the obj parsing by default.

image