@@ -241,65 +241,6 @@ def get_workload_runtime(self) -> Union[str, None]:
241241 # this parameter does not need validation
242242 return workload_runtime
243243
244- def _get_enable_custom_ca_trust (self , enable_validation : bool = False ) -> bool :
245- """Internal function to obtain the value of enable_custom_ca_trust.
246-
247- This function supports the option of enable_validation. When enabled, if both enable_custom_ca_trust and
248- disable_custom_ca_trust are specified, raise a MutuallyExclusiveArgumentError.
249-
250- :return: bool
251- """
252- # read the original value passed by the command
253- enable_custom_ca_trust = self .raw_param .get ("enable_custom_ca_trust" )
254- # In create mode, try to read the property value corresponding to the parameter from the `agentpool` object
255- if self .decorator_mode == DecoratorMode .CREATE :
256- if self .agentpool and self .agentpool .enable_custom_ca_trust is not None :
257- enable_custom_ca_trust = self .agentpool .enable_custom_ca_trust
258-
259- # this parameter does not need dynamic completion
260- # validation
261- if enable_validation :
262- if enable_custom_ca_trust and self ._get_disable_custom_ca_trust (enable_validation = False ):
263- raise MutuallyExclusiveArgumentError (
264- 'Cannot specify "--enable-custom-ca-trust" and "--disable-custom-ca-trust" at the same time'
265- )
266- return enable_custom_ca_trust
267-
268- def get_enable_custom_ca_trust (self ) -> bool :
269- """Obtain the value of enable_custom_ca_trust.
270-
271- :return: bool
272- """
273- return self ._get_enable_custom_ca_trust (enable_validation = True )
274-
275- def _get_disable_custom_ca_trust (self , enable_validation : bool = False ) -> bool :
276- """Internal function to obtain the value of disable_custom_ca_trust.
277-
278- This function supports the option of enable_validation. When enabled, if both enable_custom_ca_trust and
279- disable_custom_ca_trust are specified, raise a MutuallyExclusiveArgumentError.
280-
281- :return: bool
282- """
283- # read the original value passed by the command
284- disable_custom_ca_trust = self .raw_param .get ("disable_custom_ca_trust" )
285- # This option is not supported in create mode, so its value is not read from `agentpool`.
286-
287- # this parameter does not need dynamic completion
288- # validation
289- if enable_validation :
290- if disable_custom_ca_trust and self ._get_enable_custom_ca_trust (enable_validation = False ):
291- raise MutuallyExclusiveArgumentError (
292- 'Cannot specify "--enable-custom-ca-trust" and "--disable-custom-ca-trust" at the same time'
293- )
294- return disable_custom_ca_trust
295-
296- def get_disable_custom_ca_trust (self ) -> bool :
297- """Obtain the value of disable_custom_ca_trust.
298-
299- :return: bool
300- """
301- return self ._get_disable_custom_ca_trust (enable_validation = True )
302-
303244 def _get_disable_windows_outbound_nat (self ) -> bool :
304245 """Internal function to obtain the value of disable_windows_outbound_nat.
305246
@@ -940,6 +881,78 @@ def get_localdns_profile(self):
940881 return profile
941882 return None
942883
884+ def build_localdns_profile (self , agentpool : AgentPool ) -> AgentPool :
885+ """Build local DNS profile for the AgentPool object if provided via --localdns-config."""
886+ localdns_profile = self .get_localdns_profile ()
887+ kube_dns_overrides , vnet_dns_overrides = None , None
888+
889+ if localdns_profile is not None :
890+ def find_keys_case_insensitive (dictionary , target_keys ):
891+ """Find multiple keys case-insensitively and return a dict mapping target_key -> actual_key"""
892+ result = {}
893+ lowered_keys = {key .lower (): key for key in dictionary .keys ()}
894+ for target_key in target_keys :
895+ lowered_target = target_key .lower ()
896+ if lowered_target in lowered_keys :
897+ result [target_key ] = lowered_keys [lowered_target ]
898+ else :
899+ result [target_key ] = None
900+ return result
901+
902+ def build_override (override_dict ):
903+ if not isinstance (override_dict , dict ):
904+ raise InvalidArgumentValueError (
905+ f"Expected a dictionary for DNS override settings,"
906+ f" but got { type (override_dict ).__name__ } : { override_dict } "
907+ )
908+ camel_to_snake_case = {
909+ "queryLogging" : "query_logging" ,
910+ "protocol" : "protocol" ,
911+ "forwardDestination" : "forward_destination" ,
912+ "forwardPolicy" : "forward_policy" ,
913+ "maxConcurrent" : "max_concurrent" ,
914+ "cacheDurationInSeconds" : "cache_duration_in_seconds" ,
915+ "serveStaleDurationInSeconds" : "serve_stale_duration_in_seconds" ,
916+ "serveStale" : "serve_stale" ,
917+ }
918+ valid_keys = set (camel_to_snake_case .values ())
919+ filtered = {}
920+ for k , v in override_dict .items ():
921+ if k in camel_to_snake_case :
922+ filtered [camel_to_snake_case [k ]] = v
923+ elif k in valid_keys :
924+ filtered [k ] = v
925+ return self .models .LocalDNSOverride (** filtered )
926+
927+ # Build kubeDNSOverrides and vnetDNSOverrides from the localdns_profile
928+ key_mappings = find_keys_case_insensitive (localdns_profile , ["kubeDNSOverrides" , "vnetDNSOverrides" ])
929+ actual_kube_key = key_mappings ["kubeDNSOverrides" ]
930+ if actual_kube_key :
931+ logger .debug ("Found kubeDNSOverrides key as: %s" , actual_kube_key )
932+ kube_dns_overrides = {}
933+ process_dns_overrides (
934+ localdns_profile .get (actual_kube_key ),
935+ kube_dns_overrides ,
936+ build_override
937+ )
938+
939+ actual_vnet_key = key_mappings ["vnetDNSOverrides" ]
940+ if actual_vnet_key :
941+ logger .debug ("Found vnetDNSOverrides key as: %s" , actual_vnet_key )
942+ vnet_dns_overrides = {}
943+ process_dns_overrides (
944+ localdns_profile .get (actual_vnet_key ),
945+ vnet_dns_overrides ,
946+ build_override
947+ )
948+
949+ agentpool .local_dns_profile = self .models .LocalDNSProfile (
950+ mode = localdns_profile .get ("mode" ),
951+ kube_dns_overrides = kube_dns_overrides ,
952+ vnet_dns_overrides = vnet_dns_overrides ,
953+ )
954+ return agentpool
955+
943956 def get_node_count_and_enable_cluster_autoscaler_min_max_count_vms (
944957 self ,
945958 ) -> Tuple [int , bool , Union [int , None ], Union [int , None ]]:
@@ -1195,16 +1208,6 @@ def set_up_gpu_properties(self, agentpool: AgentPool) -> AgentPool:
11951208 agentpool .workload_runtime = self .context .get_workload_runtime ()
11961209 return agentpool
11971210
1198- def set_up_custom_ca_trust (self , agentpool : AgentPool ) -> AgentPool :
1199- """Set up custom ca trust property for the AgentPool object.
1200-
1201- :return: the AgentPool object
1202- """
1203- self ._ensure_agentpool (agentpool )
1204-
1205- agentpool .enable_custom_ca_trust = self .context .get_enable_custom_ca_trust ()
1206- return agentpool
1207-
12081211 def set_up_agentpool_windows_profile (self , agentpool : AgentPool ) -> AgentPool :
12091212 """Set up windows profile for the AgentPool object.
12101213
@@ -1452,49 +1455,7 @@ def set_up_managed_system_mode(self, agentpool: AgentPool) -> AgentPool:
14521455 def set_up_localdns_profile (self , agentpool : AgentPool ) -> AgentPool :
14531456 """Set up local DNS profile for the AgentPool object if provided via --localdns-config."""
14541457 self ._ensure_agentpool (agentpool )
1455- localdns_profile = self .context .get_localdns_profile ()
1456- if localdns_profile is not None :
1457- kube_dns_overrides = {}
1458- vnet_dns_overrides = {}
1459-
1460- def build_override (override_dict ):
1461- camel_to_snake_case = {
1462- "queryLogging" : "query_logging" ,
1463- "protocol" : "protocol" ,
1464- "forwardDestination" : "forward_destination" ,
1465- "forwardPolicy" : "forward_policy" ,
1466- "maxConcurrent" : "max_concurrent" ,
1467- "cacheDurationInSeconds" : "cache_duration_in_seconds" ,
1468- "serveStaleDurationInSeconds" : "serve_stale_duration_in_seconds" ,
1469- "serveStale" : "serve_stale" ,
1470- }
1471- valid_keys = set (camel_to_snake_case .values ())
1472- filtered = {}
1473- for k , v in override_dict .items ():
1474- if k in camel_to_snake_case :
1475- filtered [camel_to_snake_case [k ]] = v
1476- elif k in valid_keys :
1477- filtered [k ] = v
1478- return self .models .LocalDNSOverride (** filtered )
1479-
1480- # Build kubeDNSOverrides and vnetDNSOverrides from the localdns_profile
1481- process_dns_overrides (
1482- localdns_profile .get ("kubeDNSOverrides" ),
1483- kube_dns_overrides ,
1484- build_override
1485- )
1486- process_dns_overrides (
1487- localdns_profile .get ("vnetDNSOverrides" ),
1488- vnet_dns_overrides ,
1489- build_override
1490- )
1491-
1492- agentpool .local_dns_profile = self .models .LocalDNSProfile (
1493- mode = localdns_profile .get ("mode" ),
1494- kube_dns_overrides = kube_dns_overrides ,
1495- vnet_dns_overrides = vnet_dns_overrides ,
1496- )
1497- return agentpool
1458+ return self .context .build_localdns_profile (agentpool )
14981459
14991460 def construct_agentpool_profile_preview (self ) -> AgentPool :
15001461 """The overall controller used to construct the preview AgentPool profile.
@@ -1518,8 +1479,6 @@ def construct_agentpool_profile_preview(self) -> AgentPool:
15181479 agentpool = self .set_up_preview_vm_properties (agentpool )
15191480 # set up message of the day
15201481 agentpool = self .set_up_motd (agentpool )
1521- # set up custom ca trust
1522- agentpool = self .set_up_custom_ca_trust (agentpool )
15231482 # set up agentpool windows profile
15241483 agentpool = self .set_up_agentpool_windows_profile (agentpool )
15251484 # set up agentpool network profile
@@ -1672,20 +1631,6 @@ def init_context(self) -> None:
16721631 self .agentpool_decorator_mode ,
16731632 )
16741633
1675- def update_custom_ca_trust (self , agentpool : AgentPool ) -> AgentPool :
1676- """Update custom ca trust property for the AgentPool object.
1677-
1678- :return: the AgentPool object
1679- """
1680- self ._ensure_agentpool (agentpool )
1681-
1682- if self .context .get_enable_custom_ca_trust ():
1683- agentpool .enable_custom_ca_trust = True
1684-
1685- if self .context .get_disable_custom_ca_trust ():
1686- agentpool .enable_custom_ca_trust = False
1687- return agentpool
1688-
16891634 def update_network_profile (self , agentpool : AgentPool ) -> AgentPool :
16901635 self ._ensure_agentpool (agentpool )
16911636
@@ -1794,49 +1739,7 @@ def update_fips_image(self, agentpool: AgentPool) -> AgentPool:
17941739 def update_localdns_profile (self , agentpool : AgentPool ) -> AgentPool :
17951740 """Update local DNS profile for the AgentPool object if provided via --localdns-config."""
17961741 self ._ensure_agentpool (agentpool )
1797- localdns_profile = self .context .get_localdns_profile ()
1798- if localdns_profile is not None :
1799- kube_dns_overrides = {}
1800- vnet_dns_overrides = {}
1801-
1802- def build_override (override_dict ):
1803- camel_to_snake_case = {
1804- "queryLogging" : "query_logging" ,
1805- "protocol" : "protocol" ,
1806- "forwardDestination" : "forward_destination" ,
1807- "forwardPolicy" : "forward_policy" ,
1808- "maxConcurrent" : "max_concurrent" ,
1809- "cacheDurationInSeconds" : "cache_duration_in_seconds" ,
1810- "serveStaleDurationInSeconds" : "serve_stale_duration_in_seconds" ,
1811- "serveStale" : "serve_stale" ,
1812- }
1813- valid_keys = set (camel_to_snake_case .values ())
1814- filtered = {}
1815- for k , v in override_dict .items ():
1816- if k in camel_to_snake_case :
1817- filtered [camel_to_snake_case [k ]] = v
1818- elif k in valid_keys :
1819- filtered [k ] = v
1820- return self .models .LocalDNSOverride (** filtered )
1821-
1822- # Build kubeDNSOverrides and vnetDNSOverrides from the localdns_profile
1823- process_dns_overrides (
1824- localdns_profile .get ("kubeDNSOverrides" ),
1825- kube_dns_overrides ,
1826- build_override
1827- )
1828- process_dns_overrides (
1829- localdns_profile .get ("vnetDNSOverrides" ),
1830- vnet_dns_overrides ,
1831- build_override
1832- )
1833-
1834- agentpool .local_dns_profile = self .models .LocalDNSProfile (
1835- mode = localdns_profile .get ("mode" ),
1836- kube_dns_overrides = kube_dns_overrides ,
1837- vnet_dns_overrides = vnet_dns_overrides ,
1838- )
1839- return agentpool
1742+ return self .context .build_localdns_profile (agentpool )
18401743
18411744 def update_upgrade_strategy (self , agentpool : AgentPool ) -> AgentPool :
18421745 """Update upgrade strategy for the AgentPool object.
@@ -1871,9 +1774,6 @@ def update_agentpool_profile_preview(self, agentpools: List[AgentPool] = None) -
18711774 setattr (agentpool , attr , None )
18721775 return agentpool
18731776
1874- # update custom ca trust
1875- agentpool = self .update_custom_ca_trust (agentpool )
1876-
18771777 # update network profile
18781778 agentpool = self .update_network_profile (agentpool )
18791779
0 commit comments