Skip to content

Commit 409a0e7

Browse files
authored
[AKS] az aks create/update: Update recording rule group create logic for managed prometheus addon (#30857)
1 parent 26ee3d1 commit 409a0e7

File tree

1 file changed

+17
-8
lines changed
  • src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules

1 file changed

+17
-8
lines changed

src/azure-cli/azure/cli/command_modules/acs/azuremonitormetrics/recordingrules/create.py

+17-8
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,18 @@ def get_recording_rules_template(cmd, azure_monitor_workspace_resource_id):
1616
url = f"{armendpoint}{azure_monitor_workspace_resource_id}/providers/microsoft.alertsManagement/alertRuleRecommendations?api-version={ALERTS_API}"
1717
r = send_raw_request(cmd.cli_ctx, "GET", url, headers=headers)
1818
data = json.loads(r.text)
19-
return data['value']
19+
20+
filtered_templates = [
21+
template for template in data.get('value', [])
22+
if template.get("properties", {}).get("alertRuleType", "").lower() == "microsoft.alertsmanagement/prometheusrulegroups" and isinstance(template.get("properties", {}).get("rulesArmTemplate", {}).get("resources"), list) and all(
23+
isinstance(rule, dict) and "record" in rule and "expression" in rule
24+
for resource in template["properties"]["rulesArmTemplate"]["resources"]
25+
if resource.get("type", "").lower() == "microsoft.alertsmanagement/prometheusrulegroups"
26+
for rule in resource.get("properties", {}).get("rules", [])
27+
)
28+
]
29+
30+
return filtered_templates
2031

2132

2233
# pylint: disable=line-too-long
@@ -45,9 +56,7 @@ def put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, c
4556
body=body, headers=headers)
4657
break
4758
except CLIError as e:
48-
error = e
49-
else:
50-
raise error # pylint: disable=used-before-assignment
59+
raise e
5160

5261

5362
# pylint: disable=line-too-long
@@ -56,7 +65,7 @@ def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
5665
# with urllib.request.urlopen("https://defaultrulessc.blob.core.windows.net/defaultrules/ManagedPrometheusDefaultRecordingRules.json") as url:
5766
# default_rules_template = json.loads(url.read().decode())
5867
default_rules_template = get_recording_rules_template(cmd, azure_monitor_workspace_resource_id)
59-
default_rule_group_name = truncate_rule_group_name("NodeRecordingRulesRuleGroup-{0}".format(cluster_name))
68+
default_rule_group_name = truncate_rule_group_name("{0}-{1}".format(default_rules_template[0]["name"], cluster_name))
6069
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format(
6170
cluster_subscription,
6271
cluster_resource_group_name,
@@ -75,7 +84,7 @@ def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
7584
)
7685
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)
7786

78-
default_rule_group_name = truncate_rule_group_name("KubernetesRecordingRulesRuleGroup-{0}".format(cluster_name))
87+
default_rule_group_name = truncate_rule_group_name("{0}-{1}".format(default_rules_template[1]["name"], cluster_name))
7988
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format(
8089
cluster_subscription,
8190
cluster_resource_group_name,
@@ -93,7 +102,7 @@ def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
93102
if enable_windows_recording_rules is not True:
94103
enable_windows_recording_rules = False
95104

96-
default_rule_group_name = truncate_rule_group_name("NodeRecordingRulesRuleGroup-Win-{0}".format(cluster_name))
105+
default_rule_group_name = truncate_rule_group_name("{0}-{1}".format(default_rules_template[2]["name"], cluster_name))
97106
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format(
98107
cluster_subscription,
99108
cluster_resource_group_name,
@@ -106,7 +115,7 @@ def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
106115
)
107116
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)
108117

109-
default_rule_group_name = truncate_rule_group_name("NodeAndKubernetesRecordingRulesRuleGroup-Win-{0}".format(cluster_name))
118+
default_rule_group_name = truncate_rule_group_name("{0}-{1}".format(default_rules_template[3]["name"], cluster_name))
110119
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format(
111120
cluster_subscription,
112121
cluster_resource_group_name,

0 commit comments

Comments
 (0)