Skip to content

Commit 0ba8c45

Browse files
bavneetsingh16Bavneet Singhmayankagg9722bragi92
authored
[k8s-extension] Update extension CLI to v1.6.5 (#8814)
* add pester tests for k8s-extension * Adding CLI Configuration for DisableInformerCache Flag (#2) This is required for our helm charts where customers can opt to change the caching behaviour during restore. * fix testcases for nodepool image issues (#5) * update readme and version release notes (#6) * fix: simplify logic and enable correct recording rule groups for managed prom extension (#7) * remove test cases specific to fork repo --------- Co-authored-by: Bavneet Singh <[email protected]> Co-authored-by: Mayank Aggarwal <[email protected]> Co-authored-by: bragi92 <[email protected]>
1 parent 1ebd501 commit 0ba8c45

File tree

5 files changed

+56
-29
lines changed

5 files changed

+56
-29
lines changed

src/k8s-extension/HISTORY.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
Release History
44
===============
55

6+
1.6.5
7+
++++++++++++++++++
8+
* microsoft.dataprotection.kubernetes: Add support for 'DisableInformerCache' configuration.
9+
* microsoft.azuremonitor.containers.metrics: Simplify logic and enable correct recording rule groups for managed prom extension
10+
611
1.6.4
712
++++++++++++++++++
813
* microsoft.azuremonitor.containers.metrics: Update default region for azure monitor metrics extension in mooncake.

src/k8s-extension/azext_k8s_extension/partner_extensions/DataProtectionKubernetes.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ def __init__(self):
2222
- Backup storage location (required)
2323
- Resource Requests (optional)
2424
- Resource Limits (optional)
25+
- Disable Informer Cache (optional)
2526
"""
2627
self.TENANT_ID = "credentials.tenantId"
2728
self.BACKUP_STORAGE_ACCOUNT_CONTAINER = "configuration.backupStorageLocation.bucket"
@@ -34,6 +35,7 @@ def __init__(self):
3435
self.RESOURCE_LIMIT_MEMORY = "resources.limits.memory"
3536
self.BACKUP_STORAGE_ACCOUNT_USE_AAD = "configuration.backupStorageLocation.config.useAAD"
3637
self.BACKUP_STORAGE_ACCOUNT_STORAGE_ACCOUNT_URI = "configuration.backupStorageLocation.config.storageAccountURI"
38+
self.DISABLE_INFORMER_CACHE = "configuration.disableInformerCache"
3739

3840
self.blob_container = "blobContainer"
3941
self.storage_account = "storageAccount"
@@ -45,6 +47,7 @@ def __init__(self):
4547
self.memory_limit = "memoryLimit"
4648
self.use_aad = "useAAD"
4749
self.storage_account_uri = "storageAccountURI"
50+
self.disable_informer_cache = "disableInformerCache"
4851

4952
self.configuration_mapping = {
5053
self.blob_container.lower(): self.BACKUP_STORAGE_ACCOUNT_CONTAINER,
@@ -56,7 +59,8 @@ def __init__(self):
5659
self.cpu_limit.lower(): self.RESOURCE_LIMIT_CPU,
5760
self.memory_limit.lower(): self.RESOURCE_LIMIT_MEMORY,
5861
self.use_aad.lower(): self.BACKUP_STORAGE_ACCOUNT_USE_AAD,
59-
self.storage_account_uri.lower(): self.BACKUP_STORAGE_ACCOUNT_STORAGE_ACCOUNT_URI
62+
self.storage_account_uri.lower(): self.BACKUP_STORAGE_ACCOUNT_STORAGE_ACCOUNT_URI,
63+
self.disable_informer_cache.lower(): self.DISABLE_INFORMER_CACHE
6064
}
6165

6266
self.bsl_configuration_settings = [

src/k8s-extension/azext_k8s_extension/partner_extensions/azuremonitormetrics/recordingrules/create.py

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,19 @@ def get_recording_rules_template(cmd, azure_monitor_workspace_resource_id):
1515
url = f"{armendpoint}{azure_monitor_workspace_resource_id}/providers/microsoft.alertsManagement/alertRuleRecommendations?api-version={ALERTS_API}"
1616
r = send_raw_request(cmd.cli_ctx, "GET", url, headers=headers)
1717
data = json.loads(r.text)
18-
return data['value']
18+
19+
filtered_templates = [
20+
template for template in data.get('value', [])
21+
# pylint: disable=line-too-long
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
1931

2032

2133
# pylint: disable=line-too-long
@@ -39,8 +51,7 @@ def put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, a
3951
for _ in range(3):
4052
try:
4153
headers = ['User-Agent=arc-azuremonitormetrics.put_rules.' + default_rule_group_name]
42-
send_raw_request(cmd.cli_ctx, "PUT", url,
43-
body=body, headers=headers)
54+
send_raw_request(cmd.cli_ctx, "PUT", url, body=body, headers=headers)
4455
break
4556
except CLIError as e:
4657
error = e
@@ -51,28 +62,28 @@ def put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, a
5162
# pylint: disable=line-too-long
5263
def create_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster_name, azure_monitor_workspace_resource_id, mac_region):
5364
default_rules_template = get_recording_rules_template(cmd, azure_monitor_workspace_resource_id)
54-
default_rule_group_name = "NodeRecordingRulesRuleGroup-{0}".format(cluster_name)
55-
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format(
56-
cluster_subscription,
57-
cluster_resource_group_name,
58-
default_rule_group_name
59-
)
60-
url = "{0}{1}?api-version={2}".format(
61-
cmd.cli_ctx.cloud.endpoints.resource_manager,
62-
default_rule_group_id,
63-
RULES_API
64-
)
65-
put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, azure_monitor_workspace_resource_id, cluster_name, default_rules_template, url, True, 0)
6665

67-
default_rule_group_name = "KubernetesRecordingRulesRuleGroup-{0}".format(cluster_name)
68-
default_rule_group_id = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{2}".format(
69-
cluster_subscription,
70-
cluster_resource_group_name,
71-
default_rule_group_name
72-
)
73-
url = "{0}{1}?api-version={2}".format(
74-
cmd.cli_ctx.cloud.endpoints.resource_manager,
75-
default_rule_group_id,
76-
RULES_API
77-
)
78-
put_rules(cmd, default_rule_group_id, default_rule_group_name, mac_region, azure_monitor_workspace_resource_id, cluster_name, default_rules_template, url, True, 1)
66+
for index, rule_template in enumerate(default_rules_template):
67+
rule_name = rule_template["name"]
68+
is_windows_rule = "win" in rule_name.lower()
69+
70+
# Skip any recording rules as ARC metrics extension doesn't have windows support
71+
if is_windows_rule:
72+
continue
73+
74+
rule_group_name = f"{rule_template['name']}-{cluster_name}"
75+
rule_group_id = f"/subscriptions/{cluster_subscription}/resourceGroups/{cluster_resource_group_name}/providers/Microsoft.AlertsManagement/prometheusRuleGroups/{rule_group_name}"
76+
url = f"{cmd.cli_ctx.cloud.endpoints.resource_manager}{rule_group_id}?api-version={RULES_API}"
77+
78+
put_rules(
79+
cmd,
80+
rule_group_id,
81+
rule_group_name,
82+
mac_region,
83+
azure_monitor_workspace_resource_id,
84+
cluster_name,
85+
default_rules_template,
86+
url,
87+
True,
88+
index
89+
)

src/k8s-extension/azext_k8s_extension/partner_extensions/azuremonitormetrics/recordingrules/delete.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,10 @@ def delete_rules(cmd, cluster_subscription, cluster_resource_group_name, cluster
3535
cluster_resource_group_name,
3636
"KubernetesRecordingRulesRuleGroup-{0}".format(cluster_name)
3737
)
38+
delete_rule(
39+
cmd,
40+
cluster_subscription,
41+
cluster_resource_group_name,
42+
"UXRecordingRulesRuleGroup - {0}".format(cluster_name)
43+
)
44+

src/k8s-extension/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
# TODO: Add any additional SDK dependencies here
3434
DEPENDENCIES = []
3535

36-
VERSION = "1.6.4"
36+
VERSION = "1.6.5"
3737

3838
with open("README.rst", "r", encoding="utf-8") as f:
3939
README = f.read()

0 commit comments

Comments
 (0)