Skip to content

Commit e5ce693

Browse files
committed
Fix update workflow
1 parent ec65c5d commit e5ce693

File tree

5 files changed

+232
-0
lines changed

5 files changed

+232
-0
lines changed

src/azure-cli/azure/cli/command_modules/acs/_help.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,9 @@
11061106
type: string
11071107
short-summary: Set transit encryption type for ACNS security.
11081108
long-summary: Configures pod-to-pod encryption for Cilium-based clusters. Once enabled, all traffic between Cilium managed pods will be encrypted when it leaves the node boundary. Valid values are "WireGuard" and "None". When creating a cluster, this option must be used together with "--enable-acns"; when updating a cluster, it can be used on its own to modify the transit encryption type for an existing ACNS-enabled cluster.
1109+
- name: --enable-high-log-scale-mode
1110+
type: bool
1111+
short-summary: Enable High Log Scale Mode for Container Logs. Auto-enabled when --enable-container-network-logs is specified.
11091112
- name: --nrg-lockdown-restriction-level
11101113
type: string
11111114
short-summary: Restriction level on the managed node resource group.

src/azure-cli/azure/cli/command_modules/acs/_params.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,8 @@ def load_arguments(self, _):
673673
c.argument('enable_container_network_logs', action='store_true')
674674
c.argument('disable_container_network_logs', action='store_true')
675675
c.argument('acns_transit_encryption_type', arg_type=get_enum_type(transit_encryption_types))
676+
# monitoring addons
677+
c.argument('enable_high_log_scale_mode', arg_type=get_three_state_flag())
676678
# private cluster parameters
677679
c.argument('enable_apiserver_vnet_integration', action='store_true')
678680
c.argument('apiserver_subnet_id', validator=validate_apiserver_subnet_id)

src/azure-cli/azure/cli/command_modules/acs/custom.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,6 +1167,8 @@ def aks_update(
11671167
enable_container_network_logs=None,
11681168
disable_container_network_logs=None,
11691169
acns_transit_encryption_type=None,
1170+
# monitoring addons
1171+
enable_high_log_scale_mode=None,
11701172
# network isoalted cluster
11711173
bootstrap_artifact_source=None,
11721174
bootstrap_container_registry_resource_id=None,

src/azure-cli/azure/cli/command_modules/acs/tests/latest/test_aks_commands.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13206,6 +13206,42 @@ def test_aks_create_acns_with_flow_logs(
1320613206
],
1320713207
)
1320813208

13209+
# update: disable container network logs
13210+
disable_cnl_cmd = (
13211+
"aks update --resource-group={resource_group} --name={name} "
13212+
"--disable-container-network-logs "
13213+
)
13214+
self.cmd(
13215+
disable_cnl_cmd,
13216+
checks=[
13217+
self.check("provisioningState", "Succeeded"),
13218+
],
13219+
)
13220+
13221+
# update: enable high log scale mode independently via aks update
13222+
enable_hlsm_cmd = (
13223+
"aks update --resource-group={resource_group} --name={name} "
13224+
"--enable-high-log-scale-mode "
13225+
)
13226+
self.cmd(
13227+
enable_hlsm_cmd,
13228+
checks=[
13229+
self.check("provisioningState", "Succeeded"),
13230+
],
13231+
)
13232+
13233+
# update: re-enable container network logs (should auto-enable HLSM)
13234+
enable_cnl_cmd = (
13235+
"aks update --resource-group={resource_group} --name={name} "
13236+
"--enable-container-network-logs "
13237+
)
13238+
self.cmd(
13239+
enable_cnl_cmd,
13240+
checks=[
13241+
self.check("provisioningState", "Succeeded"),
13242+
],
13243+
)
13244+
1320913245
# delete
1321013246
self.cmd(
1321113247
"aks delete -g {resource_group} -n {name} --yes --no-wait",

src/azure-cli/azure/cli/command_modules/acs/tests/latest/test_managed_cluster_decorator.py

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14623,6 +14623,195 @@ def test_enable_container_network_logs(self):
1462314623
):
1462414624
dec_8.set_up_addon_profiles(mc_8)
1462514625

14626+
# Case 9: UPDATE - enable HLSM only (no CNL), monitoring with MSI auth enabled
14627+
dec_9 = AKSManagedClusterUpdateDecorator(
14628+
self.cmd,
14629+
self.client,
14630+
{
14631+
"enable_high_log_scale_mode": True,
14632+
},
14633+
ResourceType.MGMT_CONTAINERSERVICE,
14634+
)
14635+
mc_9 = self.models.ManagedCluster(
14636+
location="test_location",
14637+
network_profile=self.models.ContainerServiceNetworkProfile(
14638+
network_plugin="azure",
14639+
network_plugin_mode="overlay",
14640+
network_dataplane="cilium",
14641+
advanced_networking=self.models.AdvancedNetworking(
14642+
enabled=True,
14643+
),
14644+
),
14645+
addon_profiles={
14646+
"omsagent": self.models.ManagedClusterAddonProfile(
14647+
enabled=True,
14648+
config={CONST_MONITORING_USING_AAD_MSI_AUTH: "true"},
14649+
)
14650+
},
14651+
)
14652+
dec_9.context.attach_mc(mc_9)
14653+
dec_mc_9 = dec_9.update_monitoring_profile_flow_logs(mc_9)
14654+
# HLSM should be enabled but CNL remains unset — no enableRetinaNetworkFlags change
14655+
# The monitoring_addon_postprocessing_required intermediate should be set
14656+
self.assertTrue(
14657+
dec_9.context.get_intermediate("monitoring_addon_postprocessing_required")
14658+
)
14659+
14660+
# Case 10: UPDATE - disable HLSM while CNL is active -> should ERROR
14661+
dec_10 = AKSManagedClusterUpdateDecorator(
14662+
self.cmd,
14663+
self.client,
14664+
{
14665+
"enable_high_log_scale_mode": False,
14666+
},
14667+
ResourceType.MGMT_CONTAINERSERVICE,
14668+
)
14669+
mc_10 = self.models.ManagedCluster(
14670+
location="test_location",
14671+
network_profile=self.models.ContainerServiceNetworkProfile(
14672+
network_plugin="azure",
14673+
network_plugin_mode="overlay",
14674+
network_dataplane="cilium",
14675+
advanced_networking=self.models.AdvancedNetworking(
14676+
enabled=True,
14677+
),
14678+
),
14679+
addon_profiles={
14680+
"omsagent": self.models.ManagedClusterAddonProfile(
14681+
enabled=True,
14682+
config={
14683+
CONST_MONITORING_USING_AAD_MSI_AUTH: "true",
14684+
"enableRetinaNetworkFlags": "True",
14685+
},
14686+
)
14687+
},
14688+
)
14689+
dec_10.context.attach_mc(mc_10)
14690+
with self.assertRaises(MutuallyExclusiveArgumentError):
14691+
dec_10.update_monitoring_profile_flow_logs(mc_10)
14692+
14693+
# Case 11: UPDATE - enable CNL + HLSM=true together
14694+
dec_11 = AKSManagedClusterUpdateDecorator(
14695+
self.cmd,
14696+
self.client,
14697+
{
14698+
"enable_container_network_logs": True,
14699+
"enable_high_log_scale_mode": True,
14700+
},
14701+
ResourceType.MGMT_CONTAINERSERVICE,
14702+
)
14703+
mc_11 = self.models.ManagedCluster(
14704+
location="test_location",
14705+
network_profile=self.models.ContainerServiceNetworkProfile(
14706+
network_plugin="azure",
14707+
network_plugin_mode="overlay",
14708+
network_dataplane="cilium",
14709+
advanced_networking=self.models.AdvancedNetworking(
14710+
enabled=True,
14711+
),
14712+
),
14713+
addon_profiles={
14714+
"omsagent": self.models.ManagedClusterAddonProfile(
14715+
enabled=True,
14716+
config={CONST_MONITORING_USING_AAD_MSI_AUTH: "true"},
14717+
)
14718+
},
14719+
)
14720+
dec_11.context.attach_mc(mc_11)
14721+
dec_mc_11 = dec_11.update_monitoring_profile_flow_logs(mc_11)
14722+
self.assertEqual(
14723+
dec_mc_11.addon_profiles["omsagent"].config["enableRetinaNetworkFlags"],
14724+
"True",
14725+
)
14726+
self.assertTrue(
14727+
dec_11.context.get_intermediate("monitoring_addon_postprocessing_required")
14728+
)
14729+
14730+
# Case 12: UPDATE - enable HLSM without monitoring addon -> should ERROR
14731+
dec_12 = AKSManagedClusterUpdateDecorator(
14732+
self.cmd,
14733+
self.client,
14734+
{
14735+
"enable_high_log_scale_mode": True,
14736+
},
14737+
ResourceType.MGMT_CONTAINERSERVICE,
14738+
)
14739+
mc_12 = self.models.ManagedCluster(
14740+
location="test_location",
14741+
network_profile=self.models.ContainerServiceNetworkProfile(
14742+
network_plugin="azure",
14743+
network_plugin_mode="overlay",
14744+
network_dataplane="cilium",
14745+
advanced_networking=self.models.AdvancedNetworking(
14746+
enabled=True,
14747+
),
14748+
),
14749+
)
14750+
dec_12.context.attach_mc(mc_12)
14751+
with self.assertRaises(RequiredArgumentMissingError):
14752+
dec_12.update_monitoring_profile_flow_logs(mc_12)
14753+
14754+
# Case 13: UPDATE - enable HLSM without MSI auth -> should ERROR
14755+
dec_13 = AKSManagedClusterUpdateDecorator(
14756+
self.cmd,
14757+
self.client,
14758+
{
14759+
"enable_high_log_scale_mode": True,
14760+
},
14761+
ResourceType.MGMT_CONTAINERSERVICE,
14762+
)
14763+
mc_13 = self.models.ManagedCluster(
14764+
location="test_location",
14765+
network_profile=self.models.ContainerServiceNetworkProfile(
14766+
network_plugin="azure",
14767+
network_plugin_mode="overlay",
14768+
network_dataplane="cilium",
14769+
advanced_networking=self.models.AdvancedNetworking(
14770+
enabled=True,
14771+
),
14772+
),
14773+
addon_profiles={
14774+
"omsagent": self.models.ManagedClusterAddonProfile(
14775+
enabled=True,
14776+
config={CONST_MONITORING_USING_AAD_MSI_AUTH: "false"},
14777+
)
14778+
},
14779+
)
14780+
dec_13.context.attach_mc(mc_13)
14781+
with self.assertRaises(RequiredArgumentMissingError):
14782+
dec_13.update_monitoring_profile_flow_logs(mc_13)
14783+
14784+
# Case 14: UPDATE - enable CNL + HLSM=false -> should ERROR
14785+
dec_14 = AKSManagedClusterUpdateDecorator(
14786+
self.cmd,
14787+
self.client,
14788+
{
14789+
"enable_container_network_logs": True,
14790+
"enable_high_log_scale_mode": False,
14791+
},
14792+
ResourceType.MGMT_CONTAINERSERVICE,
14793+
)
14794+
mc_14 = self.models.ManagedCluster(
14795+
location="test_location",
14796+
network_profile=self.models.ContainerServiceNetworkProfile(
14797+
network_plugin="azure",
14798+
network_plugin_mode="overlay",
14799+
network_dataplane="cilium",
14800+
advanced_networking=self.models.AdvancedNetworking(
14801+
enabled=True,
14802+
),
14803+
),
14804+
addon_profiles={
14805+
"omsagent": self.models.ManagedClusterAddonProfile(
14806+
enabled=True,
14807+
config={CONST_MONITORING_USING_AAD_MSI_AUTH: "true"},
14808+
)
14809+
},
14810+
)
14811+
dec_14.context.attach_mc(mc_14)
14812+
with self.assertRaises(MutuallyExclusiveArgumentError):
14813+
dec_14.update_monitoring_profile_flow_logs(mc_14)
14814+
1462614815

1462714816
if __name__ == "__main__":
1462814817
unittest.main()

0 commit comments

Comments
 (0)