fix bug: score plugin does not work
Signed-off-by: Garrybest <garrybest@foxmail.com>
This commit is contained in:
parent
237cc06920
commit
9d62d21da0
|
@ -39,13 +39,8 @@ func NewFramework(plugins []string) framework.Framework {
|
||||||
klog.Warningf("scheduling plugin %s not exists", p)
|
klog.Warningf("scheduling plugin %s not exists", p)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if reflect.TypeOf(plugin).Implements(filterType) {
|
addPluginToList(plugin, filterType, &filterPluginsList)
|
||||||
newPlugins := reflect.Append(filterPluginsList, reflect.ValueOf(plugin))
|
addPluginToList(plugin, scoreType, &scorePluginsList)
|
||||||
filterPluginsList.Set(newPlugins)
|
|
||||||
} else if reflect.TypeOf(plugin).Implements(scoreType) {
|
|
||||||
newPlugins := reflect.Append(scorePluginsList, reflect.ValueOf(plugin))
|
|
||||||
scorePluginsList.Set(newPlugins)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return out
|
return out
|
||||||
|
@ -68,17 +63,26 @@ func (frw *frameworkImpl) RunFilterPlugins(ctx context.Context, placement *polic
|
||||||
func (frw *frameworkImpl) RunScorePlugins(ctx context.Context, placement *policyv1alpha1.Placement, clusters []*clusterv1alpha1.Cluster) (framework.PluginToClusterScores, error) {
|
func (frw *frameworkImpl) RunScorePlugins(ctx context.Context, placement *policyv1alpha1.Placement, clusters []*clusterv1alpha1.Cluster) (framework.PluginToClusterScores, error) {
|
||||||
result := make(framework.PluginToClusterScores, len(frw.filterPlugins))
|
result := make(framework.PluginToClusterScores, len(frw.filterPlugins))
|
||||||
for _, p := range frw.scorePlugins {
|
for _, p := range frw.scorePlugins {
|
||||||
for i, cluster := range clusters {
|
var scoreList framework.ClusterScoreList
|
||||||
|
for _, cluster := range clusters {
|
||||||
score, res := p.Score(ctx, placement, cluster)
|
score, res := p.Score(ctx, placement, cluster)
|
||||||
if !res.IsSuccess() {
|
if !res.IsSuccess() {
|
||||||
return nil, fmt.Errorf("plugin %q failed with: %w", p.Name(), res.AsError())
|
return nil, fmt.Errorf("plugin %q failed with: %w", p.Name(), res.AsError())
|
||||||
}
|
}
|
||||||
result[p.Name()][i] = framework.ClusterScore{
|
scoreList = append(scoreList, framework.ClusterScore{
|
||||||
Name: cluster.Name,
|
Name: cluster.Name,
|
||||||
Score: score,
|
Score: score,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
result[p.Name()] = scoreList
|
||||||
}
|
}
|
||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func addPluginToList(plugin framework.Plugin, pluginType reflect.Type, pluginList *reflect.Value) {
|
||||||
|
if reflect.TypeOf(plugin).Implements(pluginType) {
|
||||||
|
newPlugins := reflect.Append(*pluginList, reflect.ValueOf(plugin))
|
||||||
|
pluginList.Set(newPlugins)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue