Change config.Plugins from pointers to objects

This commit is contained in:
drfish
2021-02-10 23:45:59 +08:00
parent 081f68d685
commit 74315f9c56
25 changed files with 352 additions and 599 deletions

View File

@@ -531,7 +531,7 @@ profiles:
{ {
SchedulerName: "default-scheduler", SchedulerName: "default-scheduler",
Plugins: &kubeschedulerconfig.Plugins{ Plugins: &kubeschedulerconfig.Plugins{
Reserve: &kubeschedulerconfig.PluginSet{ Reserve: kubeschedulerconfig.PluginSet{
Enabled: []kubeschedulerconfig.Plugin{ Enabled: []kubeschedulerconfig.Plugin{
{Name: "foo"}, {Name: "foo"},
{Name: "bar"}, {Name: "bar"},
@@ -540,7 +540,7 @@ profiles:
{Name: "baz"}, {Name: "baz"},
}, },
}, },
PreBind: &kubeschedulerconfig.PluginSet{ PreBind: kubeschedulerconfig.PluginSet{
Enabled: []kubeschedulerconfig.Plugin{ Enabled: []kubeschedulerconfig.Plugin{
{Name: "foo"}, {Name: "foo"},
}, },
@@ -606,7 +606,7 @@ profiles:
{ {
SchedulerName: "foo-profile", SchedulerName: "foo-profile",
Plugins: &kubeschedulerconfig.Plugins{ Plugins: &kubeschedulerconfig.Plugins{
Reserve: &kubeschedulerconfig.PluginSet{ Reserve: kubeschedulerconfig.PluginSet{
Enabled: []kubeschedulerconfig.Plugin{ Enabled: []kubeschedulerconfig.Plugin{
{Name: "foo"}, {Name: "foo"},
}, },
@@ -616,7 +616,7 @@ profiles:
{ {
SchedulerName: "bar-profile", SchedulerName: "bar-profile",
Plugins: &kubeschedulerconfig.Plugins{ Plugins: &kubeschedulerconfig.Plugins{
PreBind: &kubeschedulerconfig.PluginSet{ PreBind: kubeschedulerconfig.PluginSet{
Disabled: []kubeschedulerconfig.Plugin{ Disabled: []kubeschedulerconfig.Plugin{
{Name: "baz"}, {Name: "baz"},
}, },

View File

@@ -70,12 +70,12 @@ func ListAlgorithmProviders() string {
func getDefaultConfig() *schedulerapi.Plugins { func getDefaultConfig() *schedulerapi.Plugins {
return &schedulerapi.Plugins{ return &schedulerapi.Plugins{
QueueSort: &schedulerapi.PluginSet{ QueueSort: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: queuesort.Name}, {Name: queuesort.Name},
}, },
}, },
PreFilter: &schedulerapi.PluginSet{ PreFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: noderesources.FitName}, {Name: noderesources.FitName},
{Name: nodeports.Name}, {Name: nodeports.Name},
@@ -84,7 +84,7 @@ func getDefaultConfig() *schedulerapi.Plugins {
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: nodeunschedulable.Name}, {Name: nodeunschedulable.Name},
{Name: nodename.Name}, {Name: nodename.Name},
@@ -103,12 +103,12 @@ func getDefaultConfig() *schedulerapi.Plugins {
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
}, },
}, },
PostFilter: &schedulerapi.PluginSet{ PostFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: defaultpreemption.Name}, {Name: defaultpreemption.Name},
}, },
}, },
PreScore: &schedulerapi.PluginSet{ PreScore: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
{Name: podtopologyspread.Name}, {Name: podtopologyspread.Name},
@@ -116,7 +116,7 @@ func getDefaultConfig() *schedulerapi.Plugins {
{Name: nodeaffinity.Name}, {Name: nodeaffinity.Name},
}, },
}, },
Score: &schedulerapi.PluginSet{ Score: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: noderesources.BalancedAllocationName, Weight: 1}, {Name: noderesources.BalancedAllocationName, Weight: 1},
{Name: imagelocality.Name, Weight: 1}, {Name: imagelocality.Name, Weight: 1},
@@ -131,17 +131,17 @@ func getDefaultConfig() *schedulerapi.Plugins {
{Name: tainttoleration.Name, Weight: 1}, {Name: tainttoleration.Name, Weight: 1},
}, },
}, },
Reserve: &schedulerapi.PluginSet{ Reserve: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
PreBind: &schedulerapi.PluginSet{ PreBind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
Bind: &schedulerapi.PluginSet{ Bind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: defaultbinder.Name}, {Name: defaultbinder.Name},
}, },

View File

@@ -47,12 +47,12 @@ import (
func TestClusterAutoscalerProvider(t *testing.T) { func TestClusterAutoscalerProvider(t *testing.T) {
wantConfig := &schedulerapi.Plugins{ wantConfig := &schedulerapi.Plugins{
QueueSort: &schedulerapi.PluginSet{ QueueSort: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: queuesort.Name}, {Name: queuesort.Name},
}, },
}, },
PreFilter: &schedulerapi.PluginSet{ PreFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: noderesources.FitName}, {Name: noderesources.FitName},
{Name: nodeports.Name}, {Name: nodeports.Name},
@@ -61,7 +61,7 @@ func TestClusterAutoscalerProvider(t *testing.T) {
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: nodeunschedulable.Name}, {Name: nodeunschedulable.Name},
{Name: nodename.Name}, {Name: nodename.Name},
@@ -80,12 +80,12 @@ func TestClusterAutoscalerProvider(t *testing.T) {
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
}, },
}, },
PostFilter: &schedulerapi.PluginSet{ PostFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: defaultpreemption.Name}, {Name: defaultpreemption.Name},
}, },
}, },
PreScore: &schedulerapi.PluginSet{ PreScore: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
{Name: podtopologyspread.Name}, {Name: podtopologyspread.Name},
@@ -93,7 +93,7 @@ func TestClusterAutoscalerProvider(t *testing.T) {
{Name: nodeaffinity.Name}, {Name: nodeaffinity.Name},
}, },
}, },
Score: &schedulerapi.PluginSet{ Score: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: noderesources.BalancedAllocationName, Weight: 1}, {Name: noderesources.BalancedAllocationName, Weight: 1},
{Name: imagelocality.Name, Weight: 1}, {Name: imagelocality.Name, Weight: 1},
@@ -105,17 +105,17 @@ func TestClusterAutoscalerProvider(t *testing.T) {
{Name: tainttoleration.Name, Weight: 1}, {Name: tainttoleration.Name, Weight: 1},
}, },
}, },
Reserve: &schedulerapi.PluginSet{ Reserve: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
PreBind: &schedulerapi.PluginSet{ PreBind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
Bind: &schedulerapi.PluginSet{ Bind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: defaultbinder.Name}, {Name: defaultbinder.Name},
}, },
@@ -138,12 +138,12 @@ func TestApplyFeatureGates(t *testing.T) {
{ {
name: "Feature gates disabled", name: "Feature gates disabled",
wantConfig: &schedulerapi.Plugins{ wantConfig: &schedulerapi.Plugins{
QueueSort: &schedulerapi.PluginSet{ QueueSort: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: queuesort.Name}, {Name: queuesort.Name},
}, },
}, },
PreFilter: &schedulerapi.PluginSet{ PreFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: noderesources.FitName}, {Name: noderesources.FitName},
{Name: nodeports.Name}, {Name: nodeports.Name},
@@ -152,7 +152,7 @@ func TestApplyFeatureGates(t *testing.T) {
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: nodeunschedulable.Name}, {Name: nodeunschedulable.Name},
{Name: nodename.Name}, {Name: nodename.Name},
@@ -171,12 +171,12 @@ func TestApplyFeatureGates(t *testing.T) {
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
}, },
}, },
PostFilter: &schedulerapi.PluginSet{ PostFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: defaultpreemption.Name}, {Name: defaultpreemption.Name},
}, },
}, },
PreScore: &schedulerapi.PluginSet{ PreScore: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
{Name: podtopologyspread.Name}, {Name: podtopologyspread.Name},
@@ -184,7 +184,7 @@ func TestApplyFeatureGates(t *testing.T) {
{Name: nodeaffinity.Name}, {Name: nodeaffinity.Name},
}, },
}, },
Score: &schedulerapi.PluginSet{ Score: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: noderesources.BalancedAllocationName, Weight: 1}, {Name: noderesources.BalancedAllocationName, Weight: 1},
{Name: imagelocality.Name, Weight: 1}, {Name: imagelocality.Name, Weight: 1},
@@ -196,17 +196,17 @@ func TestApplyFeatureGates(t *testing.T) {
{Name: tainttoleration.Name, Weight: 1}, {Name: tainttoleration.Name, Weight: 1},
}, },
}, },
Reserve: &schedulerapi.PluginSet{ Reserve: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
PreBind: &schedulerapi.PluginSet{ PreBind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
Bind: &schedulerapi.PluginSet{ Bind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: defaultbinder.Name}, {Name: defaultbinder.Name},
}, },
@@ -219,12 +219,12 @@ func TestApplyFeatureGates(t *testing.T) {
features.DefaultPodTopologySpread: false, features.DefaultPodTopologySpread: false,
}, },
wantConfig: &schedulerapi.Plugins{ wantConfig: &schedulerapi.Plugins{
QueueSort: &schedulerapi.PluginSet{ QueueSort: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: queuesort.Name}, {Name: queuesort.Name},
}, },
}, },
PreFilter: &schedulerapi.PluginSet{ PreFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: noderesources.FitName}, {Name: noderesources.FitName},
{Name: nodeports.Name}, {Name: nodeports.Name},
@@ -233,7 +233,7 @@ func TestApplyFeatureGates(t *testing.T) {
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: nodeunschedulable.Name}, {Name: nodeunschedulable.Name},
{Name: nodename.Name}, {Name: nodename.Name},
@@ -252,12 +252,12 @@ func TestApplyFeatureGates(t *testing.T) {
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
}, },
}, },
PostFilter: &schedulerapi.PluginSet{ PostFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: defaultpreemption.Name}, {Name: defaultpreemption.Name},
}, },
}, },
PreScore: &schedulerapi.PluginSet{ PreScore: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
{Name: podtopologyspread.Name}, {Name: podtopologyspread.Name},
@@ -266,7 +266,7 @@ func TestApplyFeatureGates(t *testing.T) {
{Name: selectorspread.Name}, {Name: selectorspread.Name},
}, },
}, },
Score: &schedulerapi.PluginSet{ Score: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: noderesources.BalancedAllocationName, Weight: 1}, {Name: noderesources.BalancedAllocationName, Weight: 1},
{Name: imagelocality.Name, Weight: 1}, {Name: imagelocality.Name, Weight: 1},
@@ -279,17 +279,17 @@ func TestApplyFeatureGates(t *testing.T) {
{Name: selectorspread.Name, Weight: 1}, {Name: selectorspread.Name, Weight: 1},
}, },
}, },
Reserve: &schedulerapi.PluginSet{ Reserve: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
PreBind: &schedulerapi.PluginSet{ PreBind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: volumebinding.Name}, {Name: volumebinding.Name},
}, },
}, },
Bind: &schedulerapi.PluginSet{ Bind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: defaultbinder.Name}, {Name: defaultbinder.Name},
}, },

View File

@@ -1667,13 +1667,13 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{ {
name: "in-tree plugins with customized plugin config", name: "in-tree plugins with customized plugin config",
plugins: config.Plugins{ plugins: config.Plugins{
Filter: &config.PluginSet{ Filter: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "NodeLabel"}, {Name: "NodeLabel"},
{Name: "ServiceAffinity"}, {Name: "ServiceAffinity"},
}, },
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "RequestedToCapacityRatio"}, {Name: "RequestedToCapacityRatio"},
}, },
@@ -1887,7 +1887,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{ {
name: "disable some default plugins", name: "disable some default plugins",
plugins: config.Plugins{ plugins: config.Plugins{
PreFilter: &config.PluginSet{ PreFilter: config.PluginSet{
Disabled: []config.Plugin{ Disabled: []config.Plugin{
{Name: "NodeResourcesFit"}, {Name: "NodeResourcesFit"},
{Name: "NodePorts"}, {Name: "NodePorts"},
@@ -1896,7 +1896,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "VolumeBinding"}, {Name: "VolumeBinding"},
}, },
}, },
Filter: &config.PluginSet{ Filter: config.PluginSet{
Disabled: []config.Plugin{ Disabled: []config.Plugin{
{Name: "NodeUnschedulable"}, {Name: "NodeUnschedulable"},
{Name: "NodeResourcesFit"}, {Name: "NodeResourcesFit"},
@@ -1915,12 +1915,12 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "PodTopologySpread"}, {Name: "PodTopologySpread"},
}, },
}, },
PostFilter: &config.PluginSet{ PostFilter: config.PluginSet{
Disabled: []config.Plugin{ Disabled: []config.Plugin{
{Name: "DefaultPreemption"}, {Name: "DefaultPreemption"},
}, },
}, },
PreScore: &config.PluginSet{ PreScore: config.PluginSet{
Disabled: []config.Plugin{ Disabled: []config.Plugin{
{Name: "InterPodAffinity"}, {Name: "InterPodAffinity"},
{Name: "NodeAffinity"}, {Name: "NodeAffinity"},
@@ -1929,7 +1929,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "PodTopologySpread"}, {Name: "PodTopologySpread"},
}, },
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Disabled: []config.Plugin{ Disabled: []config.Plugin{
{Name: "NodeResourcesBalancedAllocation"}, {Name: "NodeResourcesBalancedAllocation"},
{Name: "ImageLocality"}, {Name: "ImageLocality"},
@@ -1942,17 +1942,17 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "PodTopologySpread"}, {Name: "PodTopologySpread"},
}, },
}, },
PreBind: &config.PluginSet{ PreBind: config.PluginSet{
Disabled: []config.Plugin{ Disabled: []config.Plugin{
{Name: "VolumeBinding"}, {Name: "VolumeBinding"},
}, },
}, },
PostBind: &config.PluginSet{ PostBind: config.PluginSet{
Disabled: []config.Plugin{ Disabled: []config.Plugin{
{Name: "VolumeBinding"}, {Name: "VolumeBinding"},
}, },
}, },
Reserve: &config.PluginSet{ Reserve: config.PluginSet{
Disabled: []config.Plugin{ Disabled: []config.Plugin{
{Name: "VolumeBinding"}, {Name: "VolumeBinding"},
}, },
@@ -1968,7 +1968,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{ {
name: "reverse default plugins order with changing score weight", name: "reverse default plugins order with changing score weight",
plugins: config.Plugins{ plugins: config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "PrioritySort"}, {Name: "PrioritySort"},
}, },
@@ -1976,7 +1976,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "*"}, {Name: "*"},
}, },
}, },
PreFilter: &config.PluginSet{ PreFilter: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "InterPodAffinity"}, {Name: "InterPodAffinity"},
{Name: "NodePorts"}, {Name: "NodePorts"},
@@ -1986,7 +1986,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "*"}, {Name: "*"},
}, },
}, },
Filter: &config.PluginSet{ Filter: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "InterPodAffinity"}, {Name: "InterPodAffinity"},
{Name: "VolumeZone"}, {Name: "VolumeZone"},
@@ -2007,7 +2007,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "*"}, {Name: "*"},
}, },
}, },
PreScore: &config.PluginSet{ PreScore: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "PodTopologySpread"}, {Name: "PodTopologySpread"},
{Name: "TaintToleration"}, {Name: "TaintToleration"},
@@ -2018,7 +2018,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "*"}, {Name: "*"},
}, },
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "PodTopologySpread", Weight: 24}, {Name: "PodTopologySpread", Weight: 24},
{Name: "TaintToleration", Weight: 24}, {Name: "TaintToleration", Weight: 24},
@@ -2034,7 +2034,7 @@ func TestPluginsConfigurationCompatibility(t *testing.T) {
{Name: "*"}, {Name: "*"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{{Name: "DefaultBinder"}}, Enabled: []config.Plugin{{Name: "DefaultBinder"}},
Disabled: []config.Plugin{{Name: "*"}}, Disabled: []config.Plugin{{Name: "*"}},
}, },

View File

@@ -169,39 +169,39 @@ type SchedulerPolicyConfigMapSource struct {
// be invoked before default plugins, default plugins must be disabled and re-enabled here in desired order. // be invoked before default plugins, default plugins must be disabled and re-enabled here in desired order.
type Plugins struct { type Plugins struct {
// QueueSort is a list of plugins that should be invoked when sorting pods in the scheduling queue. // QueueSort is a list of plugins that should be invoked when sorting pods in the scheduling queue.
QueueSort *PluginSet QueueSort PluginSet
// PreFilter is a list of plugins that should be invoked at "PreFilter" extension point of the scheduling framework. // PreFilter is a list of plugins that should be invoked at "PreFilter" extension point of the scheduling framework.
PreFilter *PluginSet PreFilter PluginSet
// Filter is a list of plugins that should be invoked when filtering out nodes that cannot run the Pod. // Filter is a list of plugins that should be invoked when filtering out nodes that cannot run the Pod.
Filter *PluginSet Filter PluginSet
// PostFilter is a list of plugins that are invoked after filtering phase, no matter whether filtering succeeds or not. // PostFilter is a list of plugins that are invoked after filtering phase, no matter whether filtering succeeds or not.
PostFilter *PluginSet PostFilter PluginSet
// PreScore is a list of plugins that are invoked before scoring. // PreScore is a list of plugins that are invoked before scoring.
PreScore *PluginSet PreScore PluginSet
// Score is a list of plugins that should be invoked when ranking nodes that have passed the filtering phase. // Score is a list of plugins that should be invoked when ranking nodes that have passed the filtering phase.
Score *PluginSet Score PluginSet
// Reserve is a list of plugins invoked when reserving/unreserving resources // Reserve is a list of plugins invoked when reserving/unreserving resources
// after a node is assigned to run the pod. // after a node is assigned to run the pod.
Reserve *PluginSet Reserve PluginSet
// Permit is a list of plugins that control binding of a Pod. These plugins can prevent or delay binding of a Pod. // Permit is a list of plugins that control binding of a Pod. These plugins can prevent or delay binding of a Pod.
Permit *PluginSet Permit PluginSet
// PreBind is a list of plugins that should be invoked before a pod is bound. // PreBind is a list of plugins that should be invoked before a pod is bound.
PreBind *PluginSet PreBind PluginSet
// Bind is a list of plugins that should be invoked at "Bind" extension point of the scheduling framework. // Bind is a list of plugins that should be invoked at "Bind" extension point of the scheduling framework.
// The scheduler call these plugins in order. Scheduler skips the rest of these plugins as soon as one returns success. // The scheduler call these plugins in order. Scheduler skips the rest of these plugins as soon as one returns success.
Bind *PluginSet Bind PluginSet
// PostBind is a list of plugins that should be invoked after a pod is successfully bound. // PostBind is a list of plugins that should be invoked after a pod is successfully bound.
PostBind *PluginSet PostBind PluginSet
} }
// PluginSet specifies enabled and disabled plugins for an extension point. // PluginSet specifies enabled and disabled plugins for an extension point.
@@ -252,14 +252,9 @@ const (
MaxWeight = MaxTotalScore / MaxCustomPriorityScore MaxWeight = MaxTotalScore / MaxCustomPriorityScore
) )
func appendPluginSet(dst *PluginSet, src *PluginSet) *PluginSet { func appendPluginSet(dst PluginSet, src PluginSet) PluginSet {
if dst == nil { dst.Enabled = append(dst.Enabled, src.Enabled...)
dst = &PluginSet{} dst.Disabled = append(dst.Disabled, src.Disabled...)
}
if src != nil {
dst.Enabled = append(dst.Enabled, src.Enabled...)
dst.Disabled = append(dst.Disabled, src.Disabled...)
}
return dst return dst
} }
@@ -301,21 +296,14 @@ func (p *Plugins) Apply(customPlugins *Plugins) {
p.PostBind = mergePluginSets(p.PostBind, customPlugins.PostBind) p.PostBind = mergePluginSets(p.PostBind, customPlugins.PostBind)
} }
func mergePluginSets(defaultPluginSet, customPluginSet *PluginSet) *PluginSet { func mergePluginSets(defaultPluginSet, customPluginSet PluginSet) PluginSet {
if customPluginSet == nil {
customPluginSet = &PluginSet{}
}
if defaultPluginSet == nil {
defaultPluginSet = &PluginSet{}
}
disabledPlugins := sets.NewString() disabledPlugins := sets.NewString()
for _, disabledPlugin := range customPluginSet.Disabled { for _, disabledPlugin := range customPluginSet.Disabled {
disabledPlugins.Insert(disabledPlugin.Name) disabledPlugins.Insert(disabledPlugin.Name)
} }
enabledPlugins := []Plugin{} var enabledPlugins []Plugin
if !disabledPlugins.Has("*") { if !disabledPlugins.Has("*") {
for _, defaultEnabledPlugin := range defaultPluginSet.Enabled { for _, defaultEnabledPlugin := range defaultPluginSet.Enabled {
if disabledPlugins.Has(defaultEnabledPlugin.Name) { if disabledPlugins.Has(defaultEnabledPlugin.Name) {
@@ -328,7 +316,7 @@ func mergePluginSets(defaultPluginSet, customPluginSet *PluginSet) *PluginSet {
enabledPlugins = append(enabledPlugins, customPluginSet.Enabled...) enabledPlugins = append(enabledPlugins, customPluginSet.Enabled...)
return &PluginSet{Enabled: enabledPlugins} return PluginSet{Enabled: enabledPlugins}
} }
// Extender holds the parameters used to communicate with the extender. If a verb is unspecified/empty, // Extender holds the parameters used to communicate with the extender. If a verb is unspecified/empty,

View File

@@ -32,14 +32,14 @@ func TestPluginsAppend(t *testing.T) {
{ {
name: "AppendPlugin", name: "AppendPlugin",
customPlugins: &Plugins{ customPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "CustomPlugin"}, {Name: "CustomPlugin"},
}, },
}, },
}, },
defaultPlugins: &Plugins{ defaultPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
@@ -47,23 +47,13 @@ func TestPluginsAppend(t *testing.T) {
}, },
}, },
expectedPlugins: &Plugins{ expectedPlugins: &Plugins{
QueueSort: &PluginSet{}, Filter: PluginSet{
PreFilter: &PluginSet{},
Filter: &PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
{Name: "CustomPlugin"}, {Name: "CustomPlugin"},
}, },
}, },
PostFilter: &PluginSet{},
PreScore: &PluginSet{},
Score: &PluginSet{},
Reserve: &PluginSet{},
Permit: &PluginSet{},
PreBind: &PluginSet{},
Bind: &PluginSet{},
PostBind: &PluginSet{},
}, },
}, },
{ {
@@ -93,14 +83,14 @@ func TestPluginsApply(t *testing.T) {
{ {
name: "AppendCustomPlugin", name: "AppendCustomPlugin",
customPlugins: &Plugins{ customPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "CustomPlugin"}, {Name: "CustomPlugin"},
}, },
}, },
}, },
defaultPlugins: &Plugins{ defaultPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
@@ -108,29 +98,19 @@ func TestPluginsApply(t *testing.T) {
}, },
}, },
expectedPlugins: &Plugins{ expectedPlugins: &Plugins{
QueueSort: &PluginSet{Enabled: []Plugin{}}, Filter: PluginSet{
PreFilter: &PluginSet{Enabled: []Plugin{}},
Filter: &PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
{Name: "CustomPlugin"}, {Name: "CustomPlugin"},
}, },
}, },
PostFilter: &PluginSet{Enabled: []Plugin{}},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
}, },
}, },
{ {
name: "InsertAfterDefaultPlugins2", name: "InsertAfterDefaultPlugins2",
customPlugins: &Plugins{ customPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "CustomPlugin"}, {Name: "CustomPlugin"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
@@ -141,7 +121,7 @@ func TestPluginsApply(t *testing.T) {
}, },
}, },
defaultPlugins: &Plugins{ defaultPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
@@ -149,29 +129,19 @@ func TestPluginsApply(t *testing.T) {
}, },
}, },
expectedPlugins: &Plugins{ expectedPlugins: &Plugins{
QueueSort: &PluginSet{Enabled: []Plugin{}}, Filter: PluginSet{
PreFilter: &PluginSet{Enabled: []Plugin{}},
Filter: &PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "CustomPlugin"}, {Name: "CustomPlugin"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
}, },
}, },
PostFilter: &PluginSet{Enabled: []Plugin{}},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
}, },
}, },
{ {
name: "InsertBeforeAllPlugins", name: "InsertBeforeAllPlugins",
customPlugins: &Plugins{ customPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "CustomPlugin"}, {Name: "CustomPlugin"},
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
@@ -183,7 +153,7 @@ func TestPluginsApply(t *testing.T) {
}, },
}, },
defaultPlugins: &Plugins{ defaultPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
@@ -191,29 +161,19 @@ func TestPluginsApply(t *testing.T) {
}, },
}, },
expectedPlugins: &Plugins{ expectedPlugins: &Plugins{
QueueSort: &PluginSet{Enabled: []Plugin{}}, Filter: PluginSet{
PreFilter: &PluginSet{Enabled: []Plugin{}},
Filter: &PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "CustomPlugin"}, {Name: "CustomPlugin"},
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
}, },
}, },
PostFilter: &PluginSet{Enabled: []Plugin{}},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
}, },
}, },
{ {
name: "ReorderDefaultPlugins", name: "ReorderDefaultPlugins",
customPlugins: &Plugins{ customPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
@@ -224,7 +184,7 @@ func TestPluginsApply(t *testing.T) {
}, },
}, },
defaultPlugins: &Plugins{ defaultPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
@@ -232,29 +192,19 @@ func TestPluginsApply(t *testing.T) {
}, },
}, },
expectedPlugins: &Plugins{ expectedPlugins: &Plugins{
QueueSort: &PluginSet{Enabled: []Plugin{}}, Filter: PluginSet{
PreFilter: &PluginSet{Enabled: []Plugin{}},
Filter: &PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
}, },
}, },
PostFilter: &PluginSet{Enabled: []Plugin{}},
PreScore: &PluginSet{Enabled: []Plugin{}},
Score: &PluginSet{Enabled: []Plugin{}},
Reserve: &PluginSet{Enabled: []Plugin{}},
Permit: &PluginSet{Enabled: []Plugin{}},
PreBind: &PluginSet{Enabled: []Plugin{}},
Bind: &PluginSet{Enabled: []Plugin{}},
PostBind: &PluginSet{Enabled: []Plugin{}},
}, },
}, },
{ {
name: "ApplyNilCustomPlugin", name: "ApplyNilCustomPlugin",
customPlugins: nil, customPlugins: nil,
defaultPlugins: &Plugins{ defaultPlugins: &Plugins{
Filter: &PluginSet{ Filter: PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
@@ -262,21 +212,12 @@ func TestPluginsApply(t *testing.T) {
}, },
}, },
expectedPlugins: &Plugins{ expectedPlugins: &Plugins{
QueueSort: nil, Filter: PluginSet{
PreFilter: nil,
Filter: &PluginSet{
Enabled: []Plugin{ Enabled: []Plugin{
{Name: "DefaultPlugin1"}, {Name: "DefaultPlugin1"},
{Name: "DefaultPlugin2"}, {Name: "DefaultPlugin2"},
}, },
}, },
PreScore: nil,
Score: nil,
Reserve: nil,
Permit: nil,
PreBind: nil,
Bind: nil,
PostBind: nil,
}, },
}, },
} }

View File

@@ -46,6 +46,98 @@ func getPluginArgConversionScheme() *runtime.Scheme {
return pluginArgConversionScheme return pluginArgConversionScheme
} }
func Convert_v1beta1_Plugins_To_config_Plugins(in *v1beta1.Plugins, out *config.Plugins, s conversion.Scope) error {
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.QueueSort, &out.QueueSort, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.PreFilter, &out.PreFilter, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.Filter, &out.Filter, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.PostFilter, &out.PostFilter, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.PreScore, &out.PreScore, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.Score, &out.Score, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.Reserve, &out.Reserve, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.Permit, &out.Permit, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.PreBind, &out.PreBind, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.Bind, &out.Bind, s); err != nil {
return err
}
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(in.PostBind, &out.PostBind, s); err != nil {
return err
}
return nil
}
func Convert_v1beta1_PluginSet_To_config_PluginSet(in *v1beta1.PluginSet, out *config.PluginSet, s conversion.Scope) error {
if in == nil {
return nil
}
return autoConvert_v1beta1_PluginSet_To_config_PluginSet(in, out, s)
}
func Convert_config_Plugins_To_v1beta1_Plugins(in *config.Plugins, out *v1beta1.Plugins, s conversion.Scope) error {
out.QueueSort = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.QueueSort, out.QueueSort, s); err != nil {
return err
}
out.PreFilter = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.PreFilter, out.PreFilter, s); err != nil {
return err
}
out.Filter = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.Filter, out.Filter, s); err != nil {
return err
}
out.PostFilter = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.PostFilter, out.PostFilter, s); err != nil {
return err
}
out.PreScore = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.PreScore, out.PreScore, s); err != nil {
return err
}
out.Score = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.Score, out.Score, s); err != nil {
return err
}
out.Reserve = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.Reserve, out.Reserve, s); err != nil {
return err
}
out.Permit = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.Permit, out.Permit, s); err != nil {
return err
}
out.PreBind = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.PreBind, out.PreBind, s); err != nil {
return err
}
out.Bind = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.Bind, out.Bind, s); err != nil {
return err
}
out.PostBind = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(&in.PostBind, out.PostBind, s); err != nil {
return err
}
return nil
}
func Convert_v1beta1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(in *v1beta1.KubeSchedulerConfiguration, out *config.KubeSchedulerConfiguration, s conversion.Scope) error { func Convert_v1beta1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(in *v1beta1.KubeSchedulerConfiguration, out *config.KubeSchedulerConfiguration, s conversion.Scope) error {
if err := autoConvert_v1beta1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(in, out, s); err != nil { if err := autoConvert_v1beta1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(in, out, s); err != nil {
return err return err

View File

@@ -150,26 +150,11 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*v1beta1.PluginSet)(nil), (*config.PluginSet)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta1_PluginSet_To_config_PluginSet(a.(*v1beta1.PluginSet), b.(*config.PluginSet), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*config.PluginSet)(nil), (*v1beta1.PluginSet)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddGeneratedConversionFunc((*config.PluginSet)(nil), (*v1beta1.PluginSet)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_config_PluginSet_To_v1beta1_PluginSet(a.(*config.PluginSet), b.(*v1beta1.PluginSet), scope) return Convert_config_PluginSet_To_v1beta1_PluginSet(a.(*config.PluginSet), b.(*v1beta1.PluginSet), scope)
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*v1beta1.Plugins)(nil), (*config.Plugins)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta1_Plugins_To_config_Plugins(a.(*v1beta1.Plugins), b.(*config.Plugins), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*config.Plugins)(nil), (*v1beta1.Plugins)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_config_Plugins_To_v1beta1_Plugins(a.(*config.Plugins), b.(*v1beta1.Plugins), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*v1beta1.PodTopologySpreadArgs)(nil), (*config.PodTopologySpreadArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddGeneratedConversionFunc((*v1beta1.PodTopologySpreadArgs)(nil), (*config.PodTopologySpreadArgs)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs(a.(*v1beta1.PodTopologySpreadArgs), b.(*config.PodTopologySpreadArgs), scope) return Convert_v1beta1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs(a.(*v1beta1.PodTopologySpreadArgs), b.(*config.PodTopologySpreadArgs), scope)
}); err != nil { }); err != nil {
@@ -235,11 +220,26 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddConversionFunc((*config.Plugins)(nil), (*v1beta1.Plugins)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_config_Plugins_To_v1beta1_Plugins(a.(*config.Plugins), b.(*v1beta1.Plugins), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*v1beta1.KubeSchedulerConfiguration)(nil), (*config.KubeSchedulerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddConversionFunc((*v1beta1.KubeSchedulerConfiguration)(nil), (*config.KubeSchedulerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(a.(*v1beta1.KubeSchedulerConfiguration), b.(*config.KubeSchedulerConfiguration), scope) return Convert_v1beta1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(a.(*v1beta1.KubeSchedulerConfiguration), b.(*config.KubeSchedulerConfiguration), scope)
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddConversionFunc((*v1beta1.PluginSet)(nil), (*config.PluginSet)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta1_PluginSet_To_config_PluginSet(a.(*v1beta1.PluginSet), b.(*config.PluginSet), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*v1beta1.Plugins)(nil), (*config.Plugins)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta1_Plugins_To_config_Plugins(a.(*v1beta1.Plugins), b.(*config.Plugins), scope)
}); err != nil {
return err
}
return nil return nil
} }
@@ -676,11 +676,6 @@ func autoConvert_v1beta1_PluginSet_To_config_PluginSet(in *v1beta1.PluginSet, ou
return nil return nil
} }
// Convert_v1beta1_PluginSet_To_config_PluginSet is an autogenerated conversion function.
func Convert_v1beta1_PluginSet_To_config_PluginSet(in *v1beta1.PluginSet, out *config.PluginSet, s conversion.Scope) error {
return autoConvert_v1beta1_PluginSet_To_config_PluginSet(in, out, s)
}
func autoConvert_config_PluginSet_To_v1beta1_PluginSet(in *config.PluginSet, out *v1beta1.PluginSet, s conversion.Scope) error { func autoConvert_config_PluginSet_To_v1beta1_PluginSet(in *config.PluginSet, out *v1beta1.PluginSet, s conversion.Scope) error {
if in.Enabled != nil { if in.Enabled != nil {
in, out := &in.Enabled, &out.Enabled in, out := &in.Enabled, &out.Enabled
@@ -713,221 +708,35 @@ func Convert_config_PluginSet_To_v1beta1_PluginSet(in *config.PluginSet, out *v1
} }
func autoConvert_v1beta1_Plugins_To_config_Plugins(in *v1beta1.Plugins, out *config.Plugins, s conversion.Scope) error { func autoConvert_v1beta1_Plugins_To_config_Plugins(in *v1beta1.Plugins, out *config.Plugins, s conversion.Scope) error {
if in.QueueSort != nil { // WARNING: in.QueueSort requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
in, out := &in.QueueSort, &out.QueueSort // WARNING: in.PreFilter requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
*out = new(config.PluginSet) // WARNING: in.Filter requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil { // WARNING: in.PostFilter requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
return err // WARNING: in.PreScore requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
} // WARNING: in.Score requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
} else { // WARNING: in.Reserve requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
out.QueueSort = nil // WARNING: in.Permit requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
} // WARNING: in.PreBind requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
if in.PreFilter != nil { // WARNING: in.Bind requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
in, out := &in.PreFilter, &out.PreFilter // WARNING: in.PostBind requires manual conversion: inconvertible types (*k8s.io/kube-scheduler/config/v1beta1.PluginSet vs k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet)
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PreFilter = nil
}
if in.Filter != nil {
in, out := &in.Filter, &out.Filter
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Filter = nil
}
if in.PostFilter != nil {
in, out := &in.PostFilter, &out.PostFilter
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PostFilter = nil
}
if in.PreScore != nil {
in, out := &in.PreScore, &out.PreScore
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PreScore = nil
}
if in.Score != nil {
in, out := &in.Score, &out.Score
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Score = nil
}
if in.Reserve != nil {
in, out := &in.Reserve, &out.Reserve
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Reserve = nil
}
if in.Permit != nil {
in, out := &in.Permit, &out.Permit
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Permit = nil
}
if in.PreBind != nil {
in, out := &in.PreBind, &out.PreBind
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PreBind = nil
}
if in.Bind != nil {
in, out := &in.Bind, &out.Bind
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Bind = nil
}
if in.PostBind != nil {
in, out := &in.PostBind, &out.PostBind
*out = new(config.PluginSet)
if err := Convert_v1beta1_PluginSet_To_config_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PostBind = nil
}
return nil return nil
} }
// Convert_v1beta1_Plugins_To_config_Plugins is an autogenerated conversion function.
func Convert_v1beta1_Plugins_To_config_Plugins(in *v1beta1.Plugins, out *config.Plugins, s conversion.Scope) error {
return autoConvert_v1beta1_Plugins_To_config_Plugins(in, out, s)
}
func autoConvert_config_Plugins_To_v1beta1_Plugins(in *config.Plugins, out *v1beta1.Plugins, s conversion.Scope) error { func autoConvert_config_Plugins_To_v1beta1_Plugins(in *config.Plugins, out *v1beta1.Plugins, s conversion.Scope) error {
if in.QueueSort != nil { // WARNING: in.QueueSort requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
in, out := &in.QueueSort, &out.QueueSort // WARNING: in.PreFilter requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
*out = new(v1beta1.PluginSet) // WARNING: in.Filter requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil { // WARNING: in.PostFilter requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
return err // WARNING: in.PreScore requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
} // WARNING: in.Score requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
} else { // WARNING: in.Reserve requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
out.QueueSort = nil // WARNING: in.Permit requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
} // WARNING: in.PreBind requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
if in.PreFilter != nil { // WARNING: in.Bind requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
in, out := &in.PreFilter, &out.PreFilter // WARNING: in.PostBind requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/scheduler/apis/config.PluginSet vs *k8s.io/kube-scheduler/config/v1beta1.PluginSet)
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PreFilter = nil
}
if in.Filter != nil {
in, out := &in.Filter, &out.Filter
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Filter = nil
}
if in.PostFilter != nil {
in, out := &in.PostFilter, &out.PostFilter
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PostFilter = nil
}
if in.PreScore != nil {
in, out := &in.PreScore, &out.PreScore
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PreScore = nil
}
if in.Score != nil {
in, out := &in.Score, &out.Score
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Score = nil
}
if in.Reserve != nil {
in, out := &in.Reserve, &out.Reserve
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Reserve = nil
}
if in.Permit != nil {
in, out := &in.Permit, &out.Permit
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Permit = nil
}
if in.PreBind != nil {
in, out := &in.PreBind, &out.PreBind
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PreBind = nil
}
if in.Bind != nil {
in, out := &in.Bind, &out.Bind
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.Bind = nil
}
if in.PostBind != nil {
in, out := &in.PostBind, &out.PostBind
*out = new(v1beta1.PluginSet)
if err := Convert_config_PluginSet_To_v1beta1_PluginSet(*in, *out, s); err != nil {
return err
}
} else {
out.PostBind = nil
}
return nil return nil
} }
// Convert_config_Plugins_To_v1beta1_Plugins is an autogenerated conversion function.
func Convert_config_Plugins_To_v1beta1_Plugins(in *config.Plugins, out *v1beta1.Plugins, s conversion.Scope) error {
return autoConvert_config_Plugins_To_v1beta1_Plugins(in, out, s)
}
func autoConvert_v1beta1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs(in *v1beta1.PodTopologySpreadArgs, out *config.PodTopologySpreadArgs, s conversion.Scope) error { func autoConvert_v1beta1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs(in *v1beta1.PodTopologySpreadArgs, out *config.PodTopologySpreadArgs, s conversion.Scope) error {
out.DefaultConstraints = *(*[]corev1.TopologySpreadConstraint)(unsafe.Pointer(&in.DefaultConstraints)) out.DefaultConstraints = *(*[]corev1.TopologySpreadConstraint)(unsafe.Pointer(&in.DefaultConstraints))
out.DefaultingType = config.PodTopologySpreadConstraintsDefaulting(in.DefaultingType) out.DefaultingType = config.PodTopologySpreadConstraintsDefaulting(in.DefaultingType)

View File

@@ -90,12 +90,12 @@ func validateKubeSchedulerProfile(path *field.Path, profile *config.KubeSchedule
func validateCommonQueueSort(path *field.Path, profiles []config.KubeSchedulerProfile) field.ErrorList { func validateCommonQueueSort(path *field.Path, profiles []config.KubeSchedulerProfile) field.ErrorList {
allErrs := field.ErrorList{} allErrs := field.ErrorList{}
var canon *config.PluginSet var canon config.PluginSet
if profiles[0].Plugins != nil { if profiles[0].Plugins != nil {
canon = profiles[0].Plugins.QueueSort canon = profiles[0].Plugins.QueueSort
} }
for i := 1; i < len(profiles); i++ { for i := 1; i < len(profiles); i++ {
var curr *config.PluginSet var curr config.PluginSet
if profiles[i].Plugins != nil { if profiles[i].Plugins != nil {
curr = profiles[i].Plugins.QueueSort curr = profiles[i].Plugins.QueueSort
} }

View File

@@ -64,10 +64,10 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) {
{ {
SchedulerName: "me", SchedulerName: "me",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{{Name: "CustomSort"}}, Enabled: []config.Plugin{{Name: "CustomSort"}},
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Disabled: []config.Plugin{{Name: "*"}}, Disabled: []config.Plugin{{Name: "*"}},
}, },
}, },
@@ -75,10 +75,10 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) {
{ {
SchedulerName: "other", SchedulerName: "other",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{{Name: "CustomSort"}}, Enabled: []config.Plugin{{Name: "CustomSort"}},
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{{Name: "CustomBind"}}, Enabled: []config.Plugin{{Name: "CustomBind"}},
}, },
}, },

View File

@@ -491,61 +491,17 @@ func (in *PluginSet) DeepCopy() *PluginSet {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Plugins) DeepCopyInto(out *Plugins) { func (in *Plugins) DeepCopyInto(out *Plugins) {
*out = *in *out = *in
if in.QueueSort != nil { in.QueueSort.DeepCopyInto(&out.QueueSort)
in, out := &in.QueueSort, &out.QueueSort in.PreFilter.DeepCopyInto(&out.PreFilter)
*out = new(PluginSet) in.Filter.DeepCopyInto(&out.Filter)
(*in).DeepCopyInto(*out) in.PostFilter.DeepCopyInto(&out.PostFilter)
} in.PreScore.DeepCopyInto(&out.PreScore)
if in.PreFilter != nil { in.Score.DeepCopyInto(&out.Score)
in, out := &in.PreFilter, &out.PreFilter in.Reserve.DeepCopyInto(&out.Reserve)
*out = new(PluginSet) in.Permit.DeepCopyInto(&out.Permit)
(*in).DeepCopyInto(*out) in.PreBind.DeepCopyInto(&out.PreBind)
} in.Bind.DeepCopyInto(&out.Bind)
if in.Filter != nil { in.PostBind.DeepCopyInto(&out.PostBind)
in, out := &in.Filter, &out.Filter
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
if in.PostFilter != nil {
in, out := &in.PostFilter, &out.PostFilter
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
if in.PreScore != nil {
in, out := &in.PreScore, &out.PreScore
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
if in.Score != nil {
in, out := &in.Score, &out.Score
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
if in.Reserve != nil {
in, out := &in.Reserve, &out.Reserve
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
if in.Permit != nil {
in, out := &in.Permit, &out.Permit
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
if in.PreBind != nil {
in, out := &in.PreBind, &out.PreBind
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
if in.Bind != nil {
in, out := &in.Bind, &out.Bind
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
if in.PostBind != nil {
in, out := &in.PostBind, &out.PostBind
*out = new(PluginSet)
(*in).DeepCopyInto(*out)
}
return return
} }

View File

@@ -23,7 +23,6 @@ import (
"time" "time"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -263,13 +262,13 @@ func (c *Configurator) createFromConfig(policy schedulerapi.Policy) (*Scheduler,
// "PrioritySort", "DefaultPreemption" and "DefaultBinder" were neither predicates nor priorities // "PrioritySort", "DefaultPreemption" and "DefaultBinder" were neither predicates nor priorities
// before. We add them by default. // before. We add them by default.
plugins := schedulerapi.Plugins{ plugins := schedulerapi.Plugins{
QueueSort: &schedulerapi.PluginSet{ QueueSort: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{{Name: queuesort.Name}}, Enabled: []schedulerapi.Plugin{{Name: queuesort.Name}},
}, },
PostFilter: &schedulerapi.PluginSet{ PostFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{{Name: defaultpreemption.Name}}, Enabled: []schedulerapi.Plugin{{Name: defaultpreemption.Name}},
}, },
Bind: &schedulerapi.PluginSet{ Bind: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{{Name: defaultbinder.Name}}, Enabled: []schedulerapi.Plugin{{Name: defaultbinder.Name}},
}, },
} }

View File

@@ -151,8 +151,8 @@ func TestCreateFromConfig(t *testing.T) {
}, },
}, },
wantPlugins: &schedulerapi.Plugins{ wantPlugins: &schedulerapi.Plugins{
QueueSort: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "PrioritySort"}}}, QueueSort: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "PrioritySort"}}},
PreFilter: &schedulerapi.PluginSet{ PreFilter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "NodeResourcesFit"}, {Name: "NodeResourcesFit"},
{Name: "NodePorts"}, {Name: "NodePorts"},
@@ -161,7 +161,7 @@ func TestCreateFromConfig(t *testing.T) {
{Name: "InterPodAffinity"}, {Name: "InterPodAffinity"},
}, },
}, },
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "NodeUnschedulable"}, {Name: "NodeUnschedulable"},
{Name: "NodeResourcesFit"}, {Name: "NodeResourcesFit"},
@@ -180,8 +180,8 @@ func TestCreateFromConfig(t *testing.T) {
{Name: "InterPodAffinity"}, {Name: "InterPodAffinity"},
}, },
}, },
PostFilter: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultPreemption"}}}, PostFilter: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultPreemption"}}},
PreScore: &schedulerapi.PluginSet{ PreScore: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "PodTopologySpread"}, {Name: "PodTopologySpread"},
{Name: "InterPodAffinity"}, {Name: "InterPodAffinity"},
@@ -189,7 +189,7 @@ func TestCreateFromConfig(t *testing.T) {
{Name: "TaintToleration"}, {Name: "TaintToleration"},
}, },
}, },
Score: &schedulerapi.PluginSet{ Score: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "NodeResourcesBalancedAllocation", Weight: 1}, {Name: "NodeResourcesBalancedAllocation", Weight: 1},
{Name: "PodTopologySpread", Weight: 2}, {Name: "PodTopologySpread", Weight: 2},
@@ -201,11 +201,9 @@ func TestCreateFromConfig(t *testing.T) {
{Name: "TaintToleration", Weight: 1}, {Name: "TaintToleration", Weight: 1},
}, },
}, },
Reserve: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "VolumeBinding"}}}, Reserve: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "VolumeBinding"}}},
Permit: &schedulerapi.PluginSet{}, PreBind: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "VolumeBinding"}}},
PreBind: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "VolumeBinding"}}}, Bind: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultBinder"}}},
Bind: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultBinder"}}},
PostBind: &schedulerapi.PluginSet{},
}, },
}, },
{ {
@@ -286,9 +284,9 @@ func TestCreateFromConfig(t *testing.T) {
}, },
}, },
wantPlugins: &schedulerapi.Plugins{ wantPlugins: &schedulerapi.Plugins{
QueueSort: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "PrioritySort"}}}, QueueSort: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "PrioritySort"}}},
PreFilter: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "ServiceAffinity"}}}, PreFilter: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "ServiceAffinity"}}},
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "NodeUnschedulable"}, {Name: "NodeUnschedulable"},
{Name: "TaintToleration"}, {Name: "TaintToleration"},
@@ -296,14 +294,14 @@ func TestCreateFromConfig(t *testing.T) {
{Name: "ServiceAffinity"}, {Name: "ServiceAffinity"},
}, },
}, },
PostFilter: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultPreemption"}}}, PostFilter: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultPreemption"}}},
PreScore: &schedulerapi.PluginSet{ PreScore: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "InterPodAffinity"}, {Name: "InterPodAffinity"},
{Name: "NodeAffinity"}, {Name: "NodeAffinity"},
}, },
}, },
Score: &schedulerapi.PluginSet{ Score: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "InterPodAffinity", Weight: 1}, {Name: "InterPodAffinity", Weight: 1},
{Name: "NodeAffinity", Weight: 2}, {Name: "NodeAffinity", Weight: 2},
@@ -312,11 +310,7 @@ func TestCreateFromConfig(t *testing.T) {
{Name: "ServiceAffinity", Weight: 6}, {Name: "ServiceAffinity", Weight: 6},
}, },
}, },
Reserve: &schedulerapi.PluginSet{}, Bind: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultBinder"}}},
Permit: &schedulerapi.PluginSet{},
PreBind: &schedulerapi.PluginSet{},
Bind: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultBinder"}}},
PostBind: &schedulerapi.PluginSet{},
}, },
}, },
{ {
@@ -353,12 +347,12 @@ func TestCreateFromConfig(t *testing.T) {
}, },
}, },
wantPlugins: &schedulerapi.Plugins{ wantPlugins: &schedulerapi.Plugins{
QueueSort: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "PrioritySort"}}}, QueueSort: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "PrioritySort"}}},
PreFilter: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{ PreFilter: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{
{Name: "NodePorts"}, {Name: "NodePorts"},
{Name: "NodeResourcesFit"}, {Name: "NodeResourcesFit"},
}}, }},
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "NodeUnschedulable"}, {Name: "NodeUnschedulable"},
{Name: "NodePorts"}, {Name: "NodePorts"},
@@ -366,22 +360,18 @@ func TestCreateFromConfig(t *testing.T) {
{Name: "TaintToleration"}, {Name: "TaintToleration"},
}, },
}, },
PostFilter: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultPreemption"}}}, PostFilter: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultPreemption"}}},
PreScore: &schedulerapi.PluginSet{ PreScore: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "InterPodAffinity"}, {Name: "InterPodAffinity"},
}, },
}, },
Score: &schedulerapi.PluginSet{ Score: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{ Enabled: []schedulerapi.Plugin{
{Name: "InterPodAffinity", Weight: 1}, {Name: "InterPodAffinity", Weight: 1},
}, },
}, },
Reserve: &schedulerapi.PluginSet{}, Bind: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultBinder"}}},
Permit: &schedulerapi.PluginSet{},
PreBind: &schedulerapi.PluginSet{},
Bind: &schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultBinder"}}},
PostBind: &schedulerapi.PluginSet{},
}, },
}, },
} }

View File

@@ -524,10 +524,7 @@ func (lr *LegacyRegistry) registerPriorityConfigProducer(name string, producer c
lr.priorityToConfigProducer[name] = producer lr.priorityToConfigProducer[name] = producer
} }
func appendToPluginSet(set *config.PluginSet, name string, weight *int32) *config.PluginSet { func appendToPluginSet(set config.PluginSet, name string, weight *int32) config.PluginSet {
if set == nil {
set = &config.PluginSet{}
}
for _, e := range set.Enabled { for _, e := range set.Enabled {
if e.Name == name { if e.Name == name {
// Keep the max weight. // Keep the max weight.

View File

@@ -84,7 +84,7 @@ func TestRegisterConfigProducers(t *testing.T) {
} }
wantPlugins := config.Plugins{ wantPlugins := config.Plugins{
Filter: &config.PluginSet{ Filter: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: nodeunschedulable.Name}, {Name: nodeunschedulable.Name},
{Name: tainttoleration.Name}, {Name: tainttoleration.Name},
@@ -92,7 +92,7 @@ func TestRegisterConfigProducers(t *testing.T) {
{Name: testFilterName2}, {Name: testFilterName2},
}, },
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: testScoreName1, Weight: 1}, {Name: testScoreName1, Weight: 1},
{Name: testScoreName2, Weight: 1}, {Name: testScoreName2, Weight: 1},
@@ -117,7 +117,7 @@ func TestAppendPriorityConfigs(t *testing.T) {
{ {
name: "default priorities", name: "default priorities",
wantPlugins: config.Plugins{ wantPlugins: config.Plugins{
PreScore: &config.PluginSet{ PreScore: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: podtopologyspread.Name}, {Name: podtopologyspread.Name},
{Name: interpodaffinity.Name}, {Name: interpodaffinity.Name},
@@ -125,7 +125,7 @@ func TestAppendPriorityConfigs(t *testing.T) {
{Name: tainttoleration.Name}, {Name: tainttoleration.Name},
}, },
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: noderesources.BalancedAllocationName, Weight: 1}, {Name: noderesources.BalancedAllocationName, Weight: 1},
{Name: podtopologyspread.Name, Weight: 2}, {Name: podtopologyspread.Name, Weight: 2},
@@ -153,12 +153,12 @@ func TestAppendPriorityConfigs(t *testing.T) {
SelectorSpreadPriority: 3, SelectorSpreadPriority: 3,
}, },
wantPlugins: config.Plugins{ wantPlugins: config.Plugins{
PreScore: &config.PluginSet{ PreScore: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: podtopologyspread.Name}, {Name: podtopologyspread.Name},
}, },
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: podtopologyspread.Name, Weight: 3}, {Name: podtopologyspread.Name, Weight: 3},
}, },
@@ -179,12 +179,12 @@ func TestAppendPriorityConfigs(t *testing.T) {
EvenPodsSpreadPriority: 4, EvenPodsSpreadPriority: 4,
}, },
wantPlugins: config.Plugins{ wantPlugins: config.Plugins{
PreScore: &config.PluginSet{ PreScore: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: podtopologyspread.Name}, {Name: podtopologyspread.Name},
}, },
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: podtopologyspread.Name, Weight: 4}, {Name: podtopologyspread.Name, Weight: 4},
}, },
@@ -209,13 +209,13 @@ func TestAppendPriorityConfigs(t *testing.T) {
EvenPodsSpreadPriority: 2, EvenPodsSpreadPriority: 2,
}, },
wantPlugins: config.Plugins{ wantPlugins: config.Plugins{
PreScore: &config.PluginSet{ PreScore: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: podtopologyspread.Name}, {Name: podtopologyspread.Name},
{Name: selectorspread.Name}, {Name: selectorspread.Name},
}, },
}, },
Score: &config.PluginSet{ Score: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: podtopologyspread.Name, Weight: 2}, {Name: podtopologyspread.Name, Weight: 2},
{Name: selectorspread.Name, Weight: 1}, {Name: selectorspread.Name, Weight: 1},

View File

@@ -100,7 +100,7 @@ type frameworkImpl struct {
// frameworkImpl. // frameworkImpl.
type extensionPoint struct { type extensionPoint struct {
// the set of plugins to be configured at this extension point. // the set of plugins to be configured at this extension point.
plugins *config.PluginSet plugins config.PluginSet
// a pointer to the slice storing plugins implementations that will run at this // a pointer to the slice storing plugins implementations that will run at this
// extension point. // extension point.
slicePtr interface{} slicePtr interface{}
@@ -373,11 +373,7 @@ func getPluginArgsOrDefault(pluginConfig map[string]runtime.Object, name string)
return obj, err return obj, err
} }
func updatePluginList(pluginList interface{}, pluginSet *config.PluginSet, pluginsMap map[string]framework.Plugin) error { func updatePluginList(pluginList interface{}, pluginSet config.PluginSet, pluginsMap map[string]framework.Plugin) error {
if pluginSet == nil {
return nil
}
plugins := reflect.ValueOf(pluginList).Elem() plugins := reflect.ValueOf(pluginList).Elem()
pluginType := plugins.Type().Elem() pluginType := plugins.Type().Elem()
set := sets.NewString() set := sets.NewString()
@@ -1135,10 +1131,7 @@ func (f *frameworkImpl) pluginsNeeded(plugins *config.Plugins) map[string]config
return pgMap return pgMap
} }
find := func(pgs *config.PluginSet) { find := func(pgs config.PluginSet) {
if pgs == nil {
return
}
for _, pg := range pgs.Enabled { for _, pg := range pgs.Enabled {
pgMap[pg.Name] = pg pgMap[pg.Name] = pg
} }

View File

@@ -376,16 +376,16 @@ func newFrameworkWithQueueSortAndBind(r Registry, pl *config.Plugins, plc []conf
} }
plugins := &config.Plugins{} plugins := &config.Plugins{}
plugins.Append(pl) plugins.Append(pl)
if plugins.QueueSort == nil || len(plugins.QueueSort.Enabled) == 0 { if len(plugins.QueueSort.Enabled) == 0 {
plugins.Append(&config.Plugins{ plugins.Append(&config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{{Name: queueSortPlugin}}, Enabled: []config.Plugin{{Name: queueSortPlugin}},
}, },
}) })
} }
if plugins.Bind == nil || len(plugins.Bind.Enabled) == 0 { if len(plugins.Bind.Enabled) == 0 {
plugins.Append(&config.Plugins{ plugins.Append(&config.Plugins{
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{{Name: bindPlugin}}, Enabled: []config.Plugin{{Name: bindPlugin}},
}, },
}) })
@@ -412,7 +412,7 @@ func TestInitFrameworkWithScorePlugins(t *testing.T) {
}, },
{ {
name: "Score plugins are nil", name: "Score plugins are nil",
plugins: &config.Plugins{Score: nil}, plugins: &config.Plugins{},
}, },
{ {
name: "enabled Score plugin list is empty", name: "enabled Score plugin list is empty",
@@ -451,7 +451,7 @@ func TestNewFrameworkErrors(t *testing.T) {
{ {
name: "duplicate plugin name", name: "duplicate plugin name",
plugins: &config.Plugins{ plugins: &config.Plugins{
PreFilter: &config.PluginSet{ PreFilter: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: duplicatePluginName, Weight: 1}, {Name: duplicatePluginName, Weight: 1},
{Name: duplicatePluginName, Weight: 1}, {Name: duplicatePluginName, Weight: 1},
@@ -466,7 +466,7 @@ func TestNewFrameworkErrors(t *testing.T) {
{ {
name: "duplicate plugin config", name: "duplicate plugin config",
plugins: &config.Plugins{ plugins: &config.Plugins{
PreFilter: &config.PluginSet{ PreFilter: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: duplicatePluginName, Weight: 1}, {Name: duplicatePluginName, Weight: 1},
}, },
@@ -511,9 +511,7 @@ func TestNewFrameworkPluginDefaults(t *testing.T) {
"RequestedToCapacityRatio", "RequestedToCapacityRatio",
"VolumeBinding", "VolumeBinding",
} }
plugins := config.Plugins{ plugins := config.Plugins{}
Filter: &config.PluginSet{},
}
// Use all plugins in Filter. // Use all plugins in Filter.
// NOTE: This does not mean those plugins implemented `Filter` interfaces. // NOTE: This does not mean those plugins implemented `Filter` interfaces.
// `TestPlugin` is created in this test to fake the behavior for test purpose. // `TestPlugin` is created in this test to fake the behavior for test purpose.
@@ -521,7 +519,7 @@ func TestNewFrameworkPluginDefaults(t *testing.T) {
plugins.Filter.Enabled = append(plugins.Filter.Enabled, config.Plugin{Name: name}) plugins.Filter.Enabled = append(plugins.Filter.Enabled, config.Plugin{Name: name})
} }
// Set required extension points. // Set required extension points.
onePlugin := &config.PluginSet{ onePlugin := config.PluginSet{
Enabled: []config.Plugin{{Name: pluginsWithArgs[0]}}, Enabled: []config.Plugin{{Name: pluginsWithArgs[0]}},
} }
plugins.QueueSort = onePlugin plugins.QueueSort = onePlugin
@@ -841,7 +839,7 @@ func TestPreFilterPlugins(t *testing.T) {
func(_ runtime.Object, fh framework.Handle) (framework.Plugin, error) { func(_ runtime.Object, fh framework.Handle) (framework.Plugin, error) {
return preFilter2, nil return preFilter2, nil
}) })
plugins := &config.Plugins{PreFilter: &config.PluginSet{Enabled: []config.Plugin{{Name: preFilterWithExtensionsPluginName}, {Name: preFilterPluginName}}}} plugins := &config.Plugins{PreFilter: config.PluginSet{Enabled: []config.Plugin{{Name: preFilterWithExtensionsPluginName}, {Name: preFilterPluginName}}}}
t.Run("TestPreFilterPlugin", func(t *testing.T) { t.Run("TestPreFilterPlugin", func(t *testing.T) {
f, err := newFrameworkWithQueueSortAndBind(r, plugins, emptyArgs) f, err := newFrameworkWithQueueSortAndBind(r, plugins, emptyArgs)
if err != nil { if err != nil {
@@ -1068,7 +1066,7 @@ func TestFilterPlugins(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
registry := Registry{} registry := Registry{}
cfgPls := &config.Plugins{Filter: &config.PluginSet{}} cfgPls := &config.Plugins{}
for _, pl := range tt.plugins { for _, pl := range tt.plugins {
// register all plugins // register all plugins
tmpPl := pl tmpPl := pl
@@ -1149,7 +1147,7 @@ func TestPostFilterPlugins(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
registry := Registry{} registry := Registry{}
cfgPls := &config.Plugins{PostFilter: &config.PluginSet{}} cfgPls := &config.Plugins{}
for _, pl := range tt.plugins { for _, pl := range tt.plugins {
// register all plugins // register all plugins
tmpPl := pl tmpPl := pl
@@ -1279,10 +1277,7 @@ func TestFilterPluginsWithNominatedPods(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
registry := Registry{} registry := Registry{}
cfgPls := &config.Plugins{ cfgPls := &config.Plugins{}
PreFilter: &config.PluginSet{},
Filter: &config.PluginSet{},
}
if tt.preFilterPlugin != nil { if tt.preFilterPlugin != nil {
if err := registry.Register(tt.preFilterPlugin.name, if err := registry.Register(tt.preFilterPlugin.name,
@@ -1452,7 +1447,7 @@ func TestPreBindPlugins(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
registry := Registry{} registry := Registry{}
configPlugins := &config.Plugins{PreBind: &config.PluginSet{}} configPlugins := &config.Plugins{}
for _, pl := range tt.plugins { for _, pl := range tt.plugins {
tmpPl := pl tmpPl := pl
@@ -1608,7 +1603,7 @@ func TestReservePlugins(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
registry := Registry{} registry := Registry{}
configPlugins := &config.Plugins{Reserve: &config.PluginSet{}} configPlugins := &config.Plugins{}
for _, pl := range tt.plugins { for _, pl := range tt.plugins {
tmpPl := pl tmpPl := pl
@@ -1732,7 +1727,7 @@ func TestPermitPlugins(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
registry := Registry{} registry := Registry{}
configPlugins := &config.Plugins{Permit: &config.PluginSet{}} configPlugins := &config.Plugins{}
for _, pl := range tt.plugins { for _, pl := range tt.plugins {
tmpPl := pl tmpPl := pl
@@ -1898,7 +1893,7 @@ func TestRecordingMetrics(t *testing.T) {
func(_ runtime.Object, fh framework.Handle) (framework.Plugin, error) { func(_ runtime.Object, fh framework.Handle) (framework.Plugin, error) {
return plugin, nil return plugin, nil
}) })
pluginSet := &config.PluginSet{Enabled: []config.Plugin{{Name: testPlugin, Weight: 1}}} pluginSet := config.PluginSet{Enabled: []config.Plugin{{Name: testPlugin, Weight: 1}}}
plugins := &config.Plugins{ plugins := &config.Plugins{
Score: pluginSet, Score: pluginSet,
PreFilter: pluginSet, PreFilter: pluginSet,
@@ -2003,7 +1998,7 @@ func TestRunBindPlugins(t *testing.T) {
metrics.FrameworkExtensionPointDuration.Reset() metrics.FrameworkExtensionPointDuration.Reset()
metrics.PluginExecutionDuration.Reset() metrics.PluginExecutionDuration.Reset()
pluginSet := &config.PluginSet{} pluginSet := config.PluginSet{}
r := make(Registry) r := make(Registry)
for i, inj := range tt.injects { for i, inj := range tt.injects {
name := fmt.Sprintf("bind-%d", i) name := fmt.Sprintf("bind-%d", i)
@@ -2067,7 +2062,7 @@ func TestPermitWaitDurationMetric(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
plugins := &config.Plugins{ plugins := &config.Plugins{
Permit: &config.PluginSet{Enabled: []config.Plugin{{Name: testPlugin, Weight: 1}}}, Permit: config.PluginSet{Enabled: []config.Plugin{{Name: testPlugin, Weight: 1}}},
} }
f, err := newFrameworkWithQueueSortAndBind(r, plugins, emptyArgs) f, err := newFrameworkWithQueueSortAndBind(r, plugins, emptyArgs)
if err != nil { if err != nil {
@@ -2120,7 +2115,7 @@ func TestWaitOnPermit(t *testing.T) {
return testPermitPlugin, nil return testPermitPlugin, nil
}) })
plugins := &config.Plugins{ plugins := &config.Plugins{
Permit: &config.PluginSet{Enabled: []config.Plugin{{Name: permitPlugin, Weight: 1}}}, Permit: config.PluginSet{Enabled: []config.Plugin{{Name: permitPlugin, Weight: 1}}},
} }
f, err := newFrameworkWithQueueSortAndBind(r, plugins, emptyArgs) f, err := newFrameworkWithQueueSortAndBind(r, plugins, emptyArgs)
@@ -2159,7 +2154,7 @@ func TestListPlugins(t *testing.T) {
{ {
name: "Add multiple plugins", name: "Add multiple plugins",
plugins: &config.Plugins{ plugins: &config.Plugins{
Score: &config.PluginSet{Enabled: []config.Plugin{{Name: scorePlugin1}, {Name: scoreWithNormalizePlugin1}}}, Score: config.PluginSet{Enabled: []config.Plugin{{Name: scorePlugin1}, {Name: scoreWithNormalizePlugin1}}},
}, },
pluginSetCount: 3, pluginSetCount: 3,
}, },
@@ -2188,7 +2183,7 @@ func buildScoreConfigWithWeights(weights map[string]int32, ps ...string) *config
for _, p := range ps { for _, p := range ps {
plugins = append(plugins, config.Plugin{Name: p, Weight: weights[p]}) plugins = append(plugins, config.Plugin{Name: p, Weight: weights[p]})
} }
return &config.Plugins{Score: &config.PluginSet{Enabled: plugins}} return &config.Plugins{Score: config.PluginSet{Enabled: plugins}}
} }
type injectedResult struct { type injectedResult struct {

View File

@@ -96,7 +96,7 @@ func (v *cfgValidator) validate(cfg config.KubeSchedulerProfile) error {
if v.m[cfg.SchedulerName] != nil { if v.m[cfg.SchedulerName] != nil {
return fmt.Errorf("duplicate profile with scheduler name %q", cfg.SchedulerName) return fmt.Errorf("duplicate profile with scheduler name %q", cfg.SchedulerName)
} }
if cfg.Plugins.QueueSort == nil || len(cfg.Plugins.QueueSort.Enabled) != 1 { if len(cfg.Plugins.QueueSort.Enabled) != 1 {
return fmt.Errorf("one queue sort plugin required for profile with scheduler name %q", cfg.SchedulerName) return fmt.Errorf("one queue sort plugin required for profile with scheduler name %q", cfg.SchedulerName)
} }
queueSort := cfg.Plugins.QueueSort.Enabled[0].Name queueSort := cfg.Plugins.QueueSort.Enabled[0].Name

View File

@@ -49,12 +49,12 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "profile-1", SchedulerName: "profile-1",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind1"}, {Name: "Bind1"},
}, },
@@ -64,12 +64,12 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "profile-2", SchedulerName: "profile-2",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind2"}, {Name: "Bind2"},
}, },
@@ -90,12 +90,12 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "profile-1", SchedulerName: "profile-1",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind1"}, {Name: "Bind1"},
}, },
@@ -105,12 +105,12 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "profile-2", SchedulerName: "profile-2",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Another"}, {Name: "Another"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind2"}, {Name: "Bind2"},
}, },
@@ -126,12 +126,12 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "profile-1", SchedulerName: "profile-1",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind1"}, {Name: "Bind1"},
}, },
@@ -147,12 +147,12 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "profile-2", SchedulerName: "profile-2",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind2"}, {Name: "Bind2"},
}, },
@@ -168,12 +168,12 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "profile-1", SchedulerName: "profile-1",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind1"}, {Name: "Bind1"},
}, },
@@ -183,12 +183,12 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "profile-1", SchedulerName: "profile-1",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind2"}, {Name: "Bind2"},
}, },
@@ -203,12 +203,12 @@ func TestNewMap(t *testing.T) {
cfgs: []config.KubeSchedulerProfile{ cfgs: []config.KubeSchedulerProfile{
{ {
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },
}, },
Bind: &config.PluginSet{ Bind: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "Bind1"}, {Name: "Bind1"},
}, },
@@ -233,7 +233,7 @@ func TestNewMap(t *testing.T) {
{ {
SchedulerName: "invalid-profile", SchedulerName: "invalid-profile",
Plugins: &config.Plugins{ Plugins: &config.Plugins{
QueueSort: &config.PluginSet{ QueueSort: config.PluginSet{
Enabled: []config.Plugin{ Enabled: []config.Plugin{
{Name: "QueueSort"}, {Name: "QueueSort"},
}, },

View File

@@ -461,7 +461,7 @@ func TestSchedulerMultipleProfilesScheduling(t *testing.T) {
WithProfiles( WithProfiles(
schedulerapi.KubeSchedulerProfile{SchedulerName: "match-machine2", schedulerapi.KubeSchedulerProfile{SchedulerName: "match-machine2",
Plugins: &schedulerapi.Plugins{ Plugins: &schedulerapi.Plugins{
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{{Name: "FakeNodeSelector"}}, Enabled: []schedulerapi.Plugin{{Name: "FakeNodeSelector"}},
Disabled: []schedulerapi.Plugin{{Name: "*"}}, Disabled: []schedulerapi.Plugin{{Name: "*"}},
}}, }},
@@ -474,7 +474,7 @@ func TestSchedulerMultipleProfilesScheduling(t *testing.T) {
schedulerapi.KubeSchedulerProfile{ schedulerapi.KubeSchedulerProfile{
SchedulerName: "match-machine3", SchedulerName: "match-machine3",
Plugins: &schedulerapi.Plugins{ Plugins: &schedulerapi.Plugins{
Filter: &schedulerapi.PluginSet{ Filter: schedulerapi.PluginSet{
Enabled: []schedulerapi.Plugin{{Name: "FakeNodeSelector"}}, Enabled: []schedulerapi.Plugin{{Name: "FakeNodeSelector"}},
Disabled: []schedulerapi.Plugin{{Name: "*"}}, Disabled: []schedulerapi.Plugin{{Name: "*"}},
}}, }},

View File

@@ -107,33 +107,26 @@ func RegisterPluginAsExtensionsWithWeight(pluginName string, weight int32, plugi
func getPluginSetByExtension(plugins *schedulerapi.Plugins, extension string) *schedulerapi.PluginSet { func getPluginSetByExtension(plugins *schedulerapi.Plugins, extension string) *schedulerapi.PluginSet {
switch extension { switch extension {
case "QueueSort": case "QueueSort":
return initializeIfNeeded(&plugins.QueueSort) return &plugins.QueueSort
case "Filter": case "Filter":
return initializeIfNeeded(&plugins.Filter) return &plugins.Filter
case "PreFilter": case "PreFilter":
return initializeIfNeeded(&plugins.PreFilter) return &plugins.PreFilter
case "PreScore": case "PreScore":
return initializeIfNeeded(&plugins.PreScore) return &plugins.PreScore
case "Score": case "Score":
return initializeIfNeeded(&plugins.Score) return &plugins.Score
case "Bind": case "Bind":
return initializeIfNeeded(&plugins.Bind) return &plugins.Bind
case "Reserve": case "Reserve":
return initializeIfNeeded(&plugins.Reserve) return &plugins.Reserve
case "Permit": case "Permit":
return initializeIfNeeded(&plugins.Permit) return &plugins.Permit
case "PreBind": case "PreBind":
return initializeIfNeeded(&plugins.PreBind) return &plugins.PreBind
case "PostBind": case "PostBind":
return initializeIfNeeded(&plugins.PostBind) return &plugins.PostBind
default: default:
return nil return nil
} }
} }
func initializeIfNeeded(s **schedulerapi.PluginSet) *schedulerapi.PluginSet {
if *s == nil {
*s = &schedulerapi.PluginSet{}
}
return *s
}

View File

@@ -514,7 +514,7 @@ func TestPreFilterPlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
PreFilter: &schedulerconfig.PluginSet{ PreFilter: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: prefilterPluginName}, {Name: prefilterPluginName},
}, },
@@ -657,12 +657,12 @@ func TestPostFilterPlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Filter: &schedulerconfig.PluginSet{ Filter: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: filterPluginName}, {Name: filterPluginName},
}, },
}, },
Score: &schedulerconfig.PluginSet{ Score: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: scorePluginName}, {Name: scorePluginName},
}, },
@@ -672,7 +672,7 @@ func TestPostFilterPlugin(t *testing.T) {
{Name: "*"}, {Name: "*"},
}, },
}, },
PostFilter: &schedulerconfig.PluginSet{ PostFilter: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: postfilterPluginName}, {Name: postfilterPluginName},
}, },
@@ -744,7 +744,7 @@ func TestScorePlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Score: &schedulerconfig.PluginSet{ Score: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: scorePluginName}, {Name: scorePluginName},
}, },
@@ -820,7 +820,7 @@ func TestNormalizeScorePlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Score: &schedulerconfig.PluginSet{ Score: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: scoreWithNormalizePluginName}, {Name: scoreWithNormalizePluginName},
}, },
@@ -864,7 +864,7 @@ func TestReservePluginReserve(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Reserve: &schedulerconfig.PluginSet{ Reserve: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{ {
Name: reservePluginName, Name: reservePluginName,
@@ -935,7 +935,7 @@ func TestPrebindPlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
PreBind: &schedulerconfig.PluginSet{ PreBind: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{ {
Name: preBindPluginName, Name: preBindPluginName,
@@ -1061,10 +1061,10 @@ func TestReservePluginUnreserve(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Reserve: &schedulerconfig.PluginSet{ Reserve: schedulerconfig.PluginSet{
// filled by looping over reservePlugins // filled by looping over reservePlugins
}, },
PreBind: &schedulerconfig.PluginSet{ PreBind: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{ {
Name: preBindPluginName, Name: preBindPluginName,
@@ -1159,15 +1159,15 @@ func TestBindPlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Reserve: &schedulerconfig.PluginSet{ Reserve: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{{Name: reservePlugin.Name()}}, Enabled: []schedulerconfig.Plugin{{Name: reservePlugin.Name()}},
}, },
Bind: &schedulerconfig.PluginSet{ Bind: schedulerconfig.PluginSet{
// Put DefaultBinder last. // Put DefaultBinder last.
Enabled: []schedulerconfig.Plugin{{Name: bindPlugin1.Name()}, {Name: bindPlugin2.Name()}, {Name: defaultbinder.Name}}, Enabled: []schedulerconfig.Plugin{{Name: bindPlugin1.Name()}, {Name: bindPlugin2.Name()}, {Name: defaultbinder.Name}},
Disabled: []schedulerconfig.Plugin{{Name: defaultbinder.Name}}, Disabled: []schedulerconfig.Plugin{{Name: defaultbinder.Name}},
}, },
PostBind: &schedulerconfig.PluginSet{ PostBind: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{{Name: postBindPlugin.Name()}}, Enabled: []schedulerconfig.Plugin{{Name: postBindPlugin.Name()}},
}, },
}, },
@@ -1345,14 +1345,14 @@ func TestPostBindPlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
PreBind: &schedulerconfig.PluginSet{ PreBind: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{ {
Name: preBindPluginName, Name: preBindPluginName,
}, },
}, },
}, },
PostBind: &schedulerconfig.PluginSet{ PostBind: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{ {
Name: postBindPluginName, Name: postBindPluginName,
@@ -1691,7 +1691,7 @@ func TestFilterPlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Filter: &schedulerconfig.PluginSet{ Filter: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{ {
Name: filterPluginName, Name: filterPluginName,
@@ -1763,7 +1763,7 @@ func TestPreScorePlugin(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
PreScore: &schedulerconfig.PluginSet{ PreScore: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{ {
Name: preScorePluginName, Name: preScorePluginName,
@@ -1929,7 +1929,7 @@ func initRegistryAndConfig(pp ...*PermitPlugin) (registry frameworkruntime.Regis
prof.SchedulerName = v1.DefaultSchedulerName prof.SchedulerName = v1.DefaultSchedulerName
prof.Plugins = &schedulerconfig.Plugins{ prof.Plugins = &schedulerconfig.Plugins{
Permit: &schedulerconfig.PluginSet{ Permit: schedulerconfig.PluginSet{
Enabled: plugins, Enabled: plugins,
}, },
} }

View File

@@ -135,12 +135,12 @@ func TestPreemption(t *testing.T) {
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Filter: &schedulerconfig.PluginSet{ Filter: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: filterPluginName}, {Name: filterPluginName},
}, },
}, },
PreFilter: &schedulerconfig.PluginSet{ PreFilter: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: filterPluginName}, {Name: filterPluginName},
}, },

View File

@@ -43,7 +43,7 @@ func initTestSchedulerForPriorityTest(t *testing.T, scorePluginName string) *tes
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
Score: &schedulerconfig.PluginSet{ Score: schedulerconfig.PluginSet{
Enabled: []schedulerconfig.Plugin{ Enabled: []schedulerconfig.Plugin{
{Name: scorePluginName, Weight: 1}, {Name: scorePluginName, Weight: 1},
}, },

View File

@@ -92,7 +92,7 @@ func initTestDisablePreemption(t *testing.T, nsPrefix string) *testutils.TestCon
prof := schedulerconfig.KubeSchedulerProfile{ prof := schedulerconfig.KubeSchedulerProfile{
SchedulerName: v1.DefaultSchedulerName, SchedulerName: v1.DefaultSchedulerName,
Plugins: &schedulerconfig.Plugins{ Plugins: &schedulerconfig.Plugins{
PostFilter: &schedulerconfig.PluginSet{ PostFilter: schedulerconfig.PluginSet{
Disabled: []schedulerconfig.Plugin{ Disabled: []schedulerconfig.Plugin{
{Name: defaultpreemption.Name}, {Name: defaultpreemption.Name},
}, },