Skip to content

Commit e8ddb8e

Browse files
committed
{AKS} Fix ACNS update to preserve existing advanced networking settings
The update_network_profile_advanced_networking method was creating a new AdvancedNetworking object on every update, discarding existing sub-properties (observability, security, transit encryption) that the user didn't explicitly specify. This changes the method to modify the existing object in-place, only overwriting fields the user provided. When disabling ACNS, sub-features are explicitly set to disabled to ensure a consistent payload. Signed-off-by: Quang Nguyen <nguyenquang@microsoft.com>
1 parent dc9fdb3 commit e8ddb8e

File tree

6 files changed

+3831
-851
lines changed

6 files changed

+3831
-851
lines changed

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

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8316,31 +8316,46 @@ def update_network_profile_advanced_networking(self, mc: ManagedCluster) -> Mana
83168316
acns_advanced_networkpolicies = self.context.get_acns_advanced_networkpolicies()
83178317
acns_transit_encryption = self.context.get_acns_transit_encryption_type()
83188318
if acns_enabled is not None:
8319-
acns = self.models.AdvancedNetworking(
8320-
enabled=acns_enabled,
8321-
)
8319+
# Preserve existing advanced_networking settings, only overwrite fields the user specified
8320+
if mc.network_profile.advanced_networking is None:
8321+
mc.network_profile.advanced_networking = self.models.AdvancedNetworking()
8322+
mc.network_profile.advanced_networking.enabled = acns_enabled
8323+
# When disabling ACNS, explicitly disable sub-features for a consistent payload
8324+
if not acns_enabled:
8325+
if mc.network_profile.advanced_networking.observability is not None:
8326+
mc.network_profile.advanced_networking.observability.enabled = False
8327+
if mc.network_profile.advanced_networking.security is not None:
8328+
mc.network_profile.advanced_networking.security.enabled = False
83228329
if acns_observability is not None:
8323-
acns.observability = self.models.AdvancedNetworkingObservability(
8324-
enabled=acns_observability,
8325-
)
8330+
if mc.network_profile.advanced_networking.observability is None:
8331+
mc.network_profile.advanced_networking.observability = (
8332+
self.models.AdvancedNetworkingObservability()
8333+
)
8334+
mc.network_profile.advanced_networking.observability.enabled = acns_observability
83268335
if acns_security is not None:
8327-
acns.security = self.models.AdvancedNetworkingSecurity(
8328-
enabled=acns_security,
8329-
)
8336+
if mc.network_profile.advanced_networking.security is None:
8337+
mc.network_profile.advanced_networking.security = (
8338+
self.models.AdvancedNetworkingSecurity()
8339+
)
8340+
mc.network_profile.advanced_networking.security.enabled = acns_security
83308341
if acns_advanced_networkpolicies is not None:
8331-
if acns.security is None:
8332-
acns.security = self.models.AdvancedNetworkingSecurity(
8333-
advanced_network_policies=acns_advanced_networkpolicies
8342+
if mc.network_profile.advanced_networking.security is None:
8343+
mc.network_profile.advanced_networking.security = (
8344+
self.models.AdvancedNetworkingSecurity()
83348345
)
8335-
else:
8336-
acns.security.advanced_network_policies = acns_advanced_networkpolicies
8346+
mc.network_profile.advanced_networking.security.advanced_network_policies = (
8347+
acns_advanced_networkpolicies
8348+
)
83378349
if acns_transit_encryption is not None:
8338-
if acns.security is None:
8339-
acns.security = self.models.AdvancedNetworkingSecurity()
8340-
acns.security.transit_encryption = self.models.AdvancedNetworkingSecurityTransitEncryption(
8341-
type=acns_transit_encryption,
8350+
if mc.network_profile.advanced_networking.security is None:
8351+
mc.network_profile.advanced_networking.security = (
8352+
self.models.AdvancedNetworkingSecurity()
8353+
)
8354+
mc.network_profile.advanced_networking.security.transit_encryption = (
8355+
self.models.AdvancedNetworkingSecurityTransitEncryption(
8356+
type=acns_transit_encryption,
8357+
)
83428358
)
8343-
mc.network_profile.advanced_networking = acns
83448359
elif acns_transit_encryption is not None:
83458360
if (mc.network_profile.advanced_networking is None or
83468361
not mc.network_profile.advanced_networking.enabled):

0 commit comments

Comments
 (0)