diff --git a/src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/create.py b/src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/create.py index 3b2868b78ec..84793fc338c 100644 --- a/src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/create.py +++ b/src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/create.py @@ -61,69 +61,38 @@ def put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, c # pylint: disable=line-too-long def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster_name, azure_monitor_workspace_resource_id, mac_region, raw_parameters): - # limit rule group name to 260 characters - # with urllib.request.urlopen("https://defaultrulessc.blob.core.windows.net/defaultrules/ManagedPrometheusDefaultRecordingRules.json") as url: - # default_rules_template = json.loads(url.read().decode()) default_rules_template = get_recording_rules_template(cmd, azure_monitor_workspace_resource_id) - default_rule_group_name = truncate_rule_group_name("{0}-{1}".format(default_rules_template[0]["name"], cluster_name)) - default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format( - cluster_subscription, - cluster_resource_group_name, - default_rule_group_name - ) - cluster_resource_id = \ - "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.ContainerService/managedClusters/{2}".format( - cluster_subscription, - cluster_resource_group_name, - cluster_name - ) - url = "{0}{1}?api-version={2}".format( - cmd.cli_ctx.cloud.endpoints.resource_manager, - default_rule_group_id, - RULES_API - ) - put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, cluster_resource_id, azure_monitor_workspace_resource_id, cluster_name, default_rules_template, url, True, 0) - default_rule_group_name = truncate_rule_group_name("{0}-{1}".format(default_rules_template[1]["name"], cluster_name)) - default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format( - cluster_subscription, - cluster_resource_group_name, - default_rule_group_name + cluster_resource_id = ( + f"/subscriptions/{cluster_subscription}/resourceGroups/{cluster_resource_group_name}/providers/Microsoft.ContainerService/managedClusters/{cluster_name}" ) - url = "{0}{1}?api-version={2}".format( - cmd.cli_ctx.cloud.endpoints.resource_manager, - default_rule_group_id, - RULES_API - ) - put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, cluster_resource_id, azure_monitor_workspace_resource_id, cluster_name, default_rules_template, url, True, 1) - enable_windows_recording_rules = raw_parameters.get("enable_windows_recording_rules") + enable_windows_recording_rules = raw_parameters.get("enable_windows_recording_rules", False) - if enable_windows_recording_rules is not True: - enable_windows_recording_rules = False + for index, rule_template in enumerate(default_rules_template): + rule_name = rule_template["name"] + is_windows_rule = "win" in rule_name.lower() - default_rule_group_name = truncate_rule_group_name("{0}-{1}".format(default_rules_template[2]["name"], cluster_name)) - default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format( - cluster_subscription, - cluster_resource_group_name, - default_rule_group_name - ) - url = "{0}{1}?api-version={2}".format( - cmd.cli_ctx.cloud.endpoints.resource_manager, - default_rule_group_id, - RULES_API - ) - put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, cluster_resource_id, azure_monitor_workspace_resource_id, cluster_name, default_rules_template, url, enable_windows_recording_rules, 2) + # Determine whether the rule group should be enabled: + # - If the rule is a Windows rule AND windows recording rules are NOT enabled → disable the rule group (enable_rules = False) + # - If the rule is a Windows rule AND windows recording rules are enabled → enable the rule group (enable_rules = True) + # - If the rule is NOT a Windows rule (i.e., a Linux or general rule) → always enable the rule group (enable_rules = True) + enable_rules = not (is_windows_rule and not enable_windows_recording_rules) + + rule_group_name = truncate_rule_group_name(f"{rule_template['name']}-{cluster_name}") + rule_group_id = f"/subscriptions/{cluster_subscription}/resourceGroups/{cluster_resource_group_name}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{rule_group_name}" + url = f"{cmd.cli_ctx.cloud.endpoints.resource_manager}{rule_group_id}?api-version={RULES_API}" - default_rule_group_name = truncate_rule_group_name("{0}-{1}".format(default_rules_template[3]["name"], cluster_name)) - default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format( - cluster_subscription, - cluster_resource_group_name, - default_rule_group_name - ) - url = "{0}{1}?api-version={2}".format( - cmd.cli_ctx.cloud.endpoints.resource_manager, - default_rule_group_id, - RULES_API - ) - put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, cluster_resource_id, azure_monitor_workspace_resource_id, cluster_name, default_rules_template, url, enable_windows_recording_rules, 3) + put_rules( + cmd, + rule_group_id, + rule_group_name, + mac_region, + cluster_resource_id, + azure_monitor_workspace_resource_id, + cluster_name, + default_rules_template, + url, + enable_rules, + index + ) diff --git a/src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/delete.py b/src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/delete.py index d12ac5d5643..50e495f7f55 100644 --- a/src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/delete.py +++ b/src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/delete.py @@ -49,3 +49,15 @@ def delete_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster cluster_resource_group_name, truncate_rule_group_name("NodeAndKubernetesRecordingRulesRuleGroup-Win-{0}".format(cluster_name)) ) + delete_rule( + cmd, + cluster_subscription, + cluster_resource_group_name, + truncate_rule_group_name("UXRecordingRulesRuleGroup - {0}".format(cluster_name)) + ) + delete_rule( + cmd, + cluster_subscription, + cluster_resource_group_name, + truncate_rule_group_name("UXRecordingRulesRuleGroup-Win - {0}".format(cluster_name)) + )