@@ -2944,6 +2944,31 @@ def get_enable_http_proxy(self) -> bool:
29442944
29452945 return enable_http_proxy
29462946
2947+ def get_enable_upstream_kubescheduler_user_configuration (self ) -> bool :
2948+ """Obtain the value of enable_upstream_kubescheduler_user_configuration.
2949+
2950+ :return: bool
2951+ """
2952+ return self .raw_param .get ("enable_upstream_kubescheduler_user_configuration" )
2953+
2954+ def get_disable_upstream_kubescheduler_user_configuration (self ) -> bool :
2955+ """Obtain the value of disable_upstream_kubescheduler_user_configuration.
2956+
2957+ :return: bool
2958+ """
2959+ disable_upstream_kubescheduler_user_configuration = self .raw_param .get (
2960+ "disable_upstream_kubescheduler_user_configuration"
2961+ )
2962+ if (
2963+ disable_upstream_kubescheduler_user_configuration and
2964+ self .get_enable_upstream_kubescheduler_user_configuration ()
2965+ ):
2966+ raise MutuallyExclusiveArgumentError (
2967+ "Cannot specify --enable-upstream-kubescheduler-user-configuration and "
2968+ "--disable-upstream-kubescheduler-user-configuration at the same time."
2969+ )
2970+ return disable_upstream_kubescheduler_user_configuration
2971+
29472972
29482973# pylint: disable=too-many-public-methods
29492974class AKSPreviewManagedClusterCreateDecorator (AKSManagedClusterCreateDecorator ):
@@ -3721,6 +3746,24 @@ def set_up_imds_restriction(self, mc: ManagedCluster) -> ManagedCluster:
37213746 mc .network_profile .pod_link_local_access = CONST_IMDS_RESTRICTION_ENABLED
37223747 return mc
37233748
3749+ def set_up_upstream_kubescheduler_user_configuration (self , mc : ManagedCluster ) -> ManagedCluster :
3750+ self ._ensure_mc (mc )
3751+
3752+ if self .context .get_enable_upstream_kubescheduler_user_configuration ():
3753+ if mc .scheduler_profile is None :
3754+ mc .scheduler_profile = self .models .SchedulerProfile () # pylint: disable=no-member
3755+ if mc .scheduler_profile .scheduler_instance_profiles is None :
3756+ mc .scheduler_profile .scheduler_instance_profiles = (
3757+ self .models .SchedulerProfileSchedulerInstanceProfiles () # pylint: disable=no-member
3758+ )
3759+ if mc .scheduler_profile .scheduler_instance_profiles .upstream is None :
3760+ mc .scheduler_profile .scheduler_instance_profiles .upstream = self .models .SchedulerInstanceProfile () # pylint: disable=no-member
3761+ mc .scheduler_profile .scheduler_instance_profiles .upstream .scheduler_config_mode = (
3762+ self .models .SchedulerConfigMode .MANAGED_BY_CRD # pylint: disable=no-member
3763+ )
3764+
3765+ return mc
3766+
37243767 # pylint: disable=unused-argument
37253768 def construct_mc_profile_preview (self , bypass_restore_defaults : bool = False ) -> ManagedCluster :
37263769 """The overall controller used to construct the default ManagedCluster profile.
@@ -3781,6 +3824,8 @@ def construct_mc_profile_preview(self, bypass_restore_defaults: bool = False) ->
37813824 mc = self .set_up_static_egress_gateway (mc )
37823825 # set up imds restriction(a property in network profile)
37833826 mc = self .set_up_imds_restriction (mc )
3827+ # set up user-defined scheduler configuration for kube-scheduler upstream
3828+ mc = self .set_up_upstream_kubescheduler_user_configuration (mc )
37843829
37853830 # validate the azure cli core version
37863831 self .verify_cli_core_version ()
@@ -5539,6 +5584,41 @@ def update_http_proxy_enabled(self, mc: ManagedCluster) -> ManagedCluster:
55395584
55405585 return mc
55415586
5587+ def update_upstream_kubescheduler_user_configuration (self , mc : ManagedCluster ) -> ManagedCluster :
5588+ """Update user-defined scheduler configuration for kube-scheduler upstream for the ManagedCluster object.
5589+
5590+ :return: the ManagedCluster object
5591+ """
5592+ self ._ensure_mc (mc )
5593+
5594+ if self .context .get_enable_upstream_kubescheduler_user_configuration ():
5595+ if mc .scheduler_profile is None :
5596+ mc .scheduler_profile = self .models .SchedulerProfile () # pylint: disable=no-member
5597+ if mc .scheduler_profile .scheduler_instance_profiles is None :
5598+ mc .scheduler_profile .scheduler_instance_profiles = (
5599+ self .models .SchedulerProfileSchedulerInstanceProfiles () # pylint: disable=no-member
5600+ )
5601+ if mc .scheduler_profile .scheduler_instance_profiles .upstream is None :
5602+ mc .scheduler_profile .scheduler_instance_profiles .upstream = self .models .SchedulerInstanceProfile () # pylint: disable=no-member
5603+ mc .scheduler_profile .scheduler_instance_profiles .upstream .scheduler_config_mode = (
5604+ self .models .SchedulerConfigMode .MANAGED_BY_CRD # pylint: disable=no-member
5605+ )
5606+
5607+ if self .context .get_disable_upstream_kubescheduler_user_configuration ():
5608+ if mc .scheduler_profile is None :
5609+ mc .scheduler_profile = self .models .SchedulerProfile () # pylint: disable=no-member
5610+ if mc .scheduler_profile .scheduler_instance_profiles is None :
5611+ mc .scheduler_profile .scheduler_instance_profiles = (
5612+ self .models .SchedulerProfileSchedulerInstanceProfiles () # pylint: disable=no-member
5613+ )
5614+ if mc .scheduler_profile .scheduler_instance_profiles .upstream is None :
5615+ mc .scheduler_profile .scheduler_instance_profiles .upstream = self .models .SchedulerInstanceProfile () # pylint: disable=no-member
5616+ mc .scheduler_profile .scheduler_instance_profiles .upstream .scheduler_config_mode = (
5617+ self .models .SchedulerConfigMode .DEFAULT # pylint: disable=no-member
5618+ )
5619+
5620+ return mc
5621+
55425622 def update_mc_profile_preview (self ) -> ManagedCluster :
55435623 """The overall controller used to update the preview ManagedCluster profile.
55445624
@@ -5616,6 +5696,8 @@ def update_mc_profile_preview(self) -> ManagedCluster:
56165696 mc = self .update_vmas_to_vms (mc )
56175697 # update http proxy config
56185698 mc = self .update_http_proxy_enabled (mc )
5699+ # update user-defined scheduler configuration for kube-scheduler upstream
5700+ mc = self .update_upstream_kubescheduler_user_configuration (mc )
56195701 # update ManagedSystem pools, must at end
56205702 mc = self .update_managed_system_pools (mc )
56215703
0 commit comments