Skip to content

Commit 08a5334

Browse files
committed
[AKS] Fix ACNS update to preserve existing advanced networking settings
The update_acns_in_network_profile method was creating a new AdvancedNetworking object on every update, discarding existing sub-properties (observability, security, transit encryption, performance) that the user didn't explicitly specify. This changes the method to modify the existing object in-place, only overwriting fields the user provided. Signed-off-by: Quang Nguyen <nguyenquang@microsoft.com>
1 parent 40354a4 commit 08a5334

4 files changed

Lines changed: 2768 additions & 24 deletions

File tree

src/aks-preview/azext_aks_preview/managed_cluster_decorator.py

Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5670,41 +5670,61 @@ def update_acns_in_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
56705670
"""
56715671
self._ensure_mc(mc)
56725672

5673-
acns = None
56745673
(acns_enabled, acns_observability_enabled, acns_security_enabled) = self.context.get_acns_enablement()
56755674
acns_advanced_networkpolicies = self.context.get_acns_advanced_networkpolicies()
56765675
acns_transit_encryption_type = self.context.get_acns_transit_encryption_type()
56775676
acns_datapath_acceleration_mode = self.context.get_acns_datapath_acceleration_mode()
56785677
if acns_enabled is not None:
5679-
acns = self.models.AdvancedNetworking(
5680-
enabled=acns_enabled,
5681-
)
5678+
# Preserve existing advanced_networking settings, only overwrite fields the user specified
5679+
if mc.network_profile.advanced_networking is None:
5680+
mc.network_profile.advanced_networking = self.models.AdvancedNetworking()
5681+
mc.network_profile.advanced_networking.enabled = acns_enabled
5682+
# When disabling ACNS, explicitly disable sub-features for a consistent payload
5683+
if not acns_enabled:
5684+
if mc.network_profile.advanced_networking.observability is not None:
5685+
mc.network_profile.advanced_networking.observability.enabled = False
5686+
if mc.network_profile.advanced_networking.security is not None:
5687+
mc.network_profile.advanced_networking.security.enabled = False
56825688
if acns_observability_enabled is not None:
5683-
acns.observability = self.models.AdvancedNetworkingObservability(
5684-
enabled=acns_observability_enabled,
5685-
)
5689+
if mc.network_profile.advanced_networking.observability is None:
5690+
mc.network_profile.advanced_networking.observability = (
5691+
self.models.AdvancedNetworkingObservability()
5692+
)
5693+
mc.network_profile.advanced_networking.observability.enabled = acns_observability_enabled
56865694
if acns_security_enabled is not None:
5687-
acns.security = self.models.AdvancedNetworkingSecurity(
5688-
enabled=acns_security_enabled,
5689-
)
5695+
if mc.network_profile.advanced_networking.security is None:
5696+
mc.network_profile.advanced_networking.security = (
5697+
self.models.AdvancedNetworkingSecurity()
5698+
)
5699+
mc.network_profile.advanced_networking.security.enabled = acns_security_enabled
56905700
if acns_advanced_networkpolicies is not None:
5691-
if acns.security is None:
5692-
acns.security = self.models.AdvancedNetworkingSecurity(
5693-
advanced_network_policies=acns_advanced_networkpolicies
5701+
if mc.network_profile.advanced_networking.security is None:
5702+
mc.network_profile.advanced_networking.security = (
5703+
self.models.AdvancedNetworkingSecurity()
56945704
)
5695-
else:
5696-
acns.security.advanced_network_policies = acns_advanced_networkpolicies
5705+
mc.network_profile.advanced_networking.security.advanced_network_policies = (
5706+
acns_advanced_networkpolicies
5707+
)
56975708
if acns_transit_encryption_type is not None:
5698-
if acns.security is None:
5699-
acns.security = self.models.AdvancedNetworkingSecurity()
5700-
if acns.security.transit_encryption is None:
5701-
acns.security.transit_encryption = self.models.AdvancedNetworkingSecurityTransitEncryption()
5702-
acns.security.transit_encryption.type = acns_transit_encryption_type
5709+
if mc.network_profile.advanced_networking.security is None:
5710+
mc.network_profile.advanced_networking.security = (
5711+
self.models.AdvancedNetworkingSecurity()
5712+
)
5713+
if mc.network_profile.advanced_networking.security.transit_encryption is None:
5714+
mc.network_profile.advanced_networking.security.transit_encryption = (
5715+
self.models.AdvancedNetworkingSecurityTransitEncryption()
5716+
)
5717+
mc.network_profile.advanced_networking.security.transit_encryption.type = (
5718+
acns_transit_encryption_type
5719+
)
57035720
if acns_datapath_acceleration_mode is not None:
5704-
if acns.performance is None:
5705-
acns.performance = self.models.AdvancedNetworkingPerformance()
5706-
acns.performance.acceleration_mode = acns_datapath_acceleration_mode
5707-
mc.network_profile.advanced_networking = acns
5721+
if mc.network_profile.advanced_networking.performance is None:
5722+
mc.network_profile.advanced_networking.performance = (
5723+
self.models.AdvancedNetworkingPerformance()
5724+
)
5725+
mc.network_profile.advanced_networking.performance.acceleration_mode = (
5726+
acns_datapath_acceleration_mode
5727+
)
57085728
return mc
57095729

57105730
def update_monitoring_profile_flow_logs(self, mc: ManagedCluster) -> ManagedCluster:

0 commit comments

Comments
 (0)