@@ -128,6 +128,7 @@ def create_k8s_extension(
128128 cluster_resource_provider = None ,
129129 scope = None ,
130130 auto_upgrade_minor_version = None ,
131+ auto_upgrade_mode = None ,
131132 release_train = None ,
132133 version = None ,
133134 target_namespace = None ,
@@ -205,6 +206,7 @@ def create_k8s_extension(
205206 extension_type_lower ,
206207 scope ,
207208 auto_upgrade_minor_version ,
209+ auto_upgrade_mode ,
208210 release_train ,
209211 version ,
210212 target_namespace ,
@@ -220,7 +222,14 @@ def create_k8s_extension(
220222
221223 # Common validations
222224 __validate_version_and_auto_upgrade (
223- extension_instance .version , extension_instance .auto_upgrade_minor_version
225+ extension_instance .version ,
226+ extension_instance .auto_upgrade_minor_version ,
227+ extension_instance .auto_upgrade_mode ,
228+ )
229+ __validate_auto_upgrade_mode (
230+ extension_instance .version ,
231+ extension_instance .auto_upgrade_minor_version ,
232+ extension_instance .auto_upgrade_mode ,
224233 )
225234 __validate_scope_after_customization (extension_instance .scope )
226235
@@ -266,6 +275,7 @@ def update_k8s_extension(
266275 cluster_type ,
267276 cluster_resource_provider = None ,
268277 auto_upgrade_minor_version = None ,
278+ auto_upgrade_mode = None ,
269279 release_train = None ,
270280 version = None ,
271281 configuration_settings = None ,
@@ -330,6 +340,7 @@ def update_k8s_extension(
330340 resource_group_name ,
331341 cluster_name ,
332342 auto_upgrade_minor_version ,
343+ auto_upgrade_mode ,
333344 release_train ,
334345 version ,
335346 config_settings ,
@@ -338,6 +349,12 @@ def update_k8s_extension(
338349 yes ,
339350 )
340351
352+ __validate_auto_upgrade_mode (
353+ upd_extension .version ,
354+ upd_extension .auto_upgrade_minor_version ,
355+ upd_extension .auto_upgrade_mode ,
356+ )
357+
341358 return sdk_no_wait (
342359 no_wait ,
343360 client .begin_update ,
@@ -924,10 +941,42 @@ def __validate_scope_after_customization(scope_obj: Scope):
924941 raise RequiredArgumentMissingError (message )
925942
926943
927- def __validate_version_and_auto_upgrade (version , auto_upgrade_minor_version ):
944+ def __validate_version_and_auto_upgrade (version , auto_upgrade_minor_version , auto_upgrade_mode = None ):
928945 if version is not None :
929946 if auto_upgrade_minor_version :
930947 message = "To pin to specific version, auto-upgrade-minor-version must be set to 'false'."
931948 raise MutuallyExclusiveArgumentError (message )
932949
933950 auto_upgrade_minor_version = False
951+
952+ if auto_upgrade_minor_version is not None and auto_upgrade_mode is not None :
953+ message = "auto-upgrade-mode cannot be specified together with auto-upgrade-minor-version."
954+ raise MutuallyExclusiveArgumentError (message )
955+
956+
957+ def __validate_auto_upgrade_mode (version , auto_upgrade_minor_version , auto_upgrade_mode ):
958+ if version is not None and auto_upgrade_mode is not None :
959+ message = "To pin to specific version, auto-upgrade-mode must not be provided."
960+ raise MutuallyExclusiveArgumentError (message )
961+
962+ if auto_upgrade_minor_version is not None and auto_upgrade_mode is not None :
963+ message = "auto-upgrade-mode cannot be specified together with auto-upgrade-minor-version."
964+ raise MutuallyExclusiveArgumentError (message )
965+
966+ if auto_upgrade_mode is None :
967+ return
968+
969+ normalized_auto_upgrade_mode = auto_upgrade_mode
970+ if hasattr (normalized_auto_upgrade_mode , "value" ):
971+ normalized_auto_upgrade_mode = normalized_auto_upgrade_mode .value
972+ normalized_auto_upgrade_mode = str (normalized_auto_upgrade_mode ).strip ().lower ()
973+ if "." in normalized_auto_upgrade_mode :
974+ normalized_auto_upgrade_mode = normalized_auto_upgrade_mode .split ("." )[- 1 ]
975+
976+ allowed_auto_upgrade_modes = {"none" , "patch" , "compatible" }
977+ if normalized_auto_upgrade_mode not in allowed_auto_upgrade_modes :
978+ message = (
979+ "Invalid value for auto-upgrade-mode. "
980+ "Allowed values are: none, patch, compatible."
981+ )
982+ raise ClientRequestError (message )
0 commit comments