@@ -16,7 +16,18 @@ def get_recording_rules_template(cmd, azure_monitor_workspace_resource_id):
16
16
url = f"{ armendpoint } { azure_monitor_workspace_resource_id } /providers/microsoft.alertsManagement/alertRuleRecommendations?api-version={ ALERTS_API } "
17
17
r = send_raw_request (cmd .cli_ctx , "GET" , url , headers = headers )
18
18
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
20
31
21
32
22
33
# pylint: disable=line-too-long
@@ -45,9 +56,7 @@ def put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, c
45
56
body = body , headers = headers )
46
57
break
47
58
except CLIError as e :
48
- error = e
49
- else :
50
- raise error # pylint: disable=used-before-assignment
59
+ raise e
51
60
52
61
53
62
# pylint: disable=line-too-long
@@ -56,7 +65,7 @@ def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
56
65
# with urllib.request.urlopen("https://defaultrulessc.blob.core.windows.net/defaultrules/ManagedPrometheusDefaultRecordingRules.json") as url:
57
66
# default_rules_template = json.loads(url.read().decode())
58
67
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 ))
60
69
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}" .format (
61
70
cluster_subscription ,
62
71
cluster_resource_group_name ,
@@ -75,7 +84,7 @@ def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
75
84
)
76
85
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 )
77
86
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 ))
79
88
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}" .format (
80
89
cluster_subscription ,
81
90
cluster_resource_group_name ,
@@ -93,7 +102,7 @@ def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
93
102
if enable_windows_recording_rules is not True :
94
103
enable_windows_recording_rules = False
95
104
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 ))
97
106
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}" .format (
98
107
cluster_subscription ,
99
108
cluster_resource_group_name ,
@@ -106,7 +115,7 @@ def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
106
115
)
107
116
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 )
108
117
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 ))
110
119
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}" .format (
111
120
cluster_subscription ,
112
121
cluster_resource_group_name ,
0 commit comments