@@ -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