Merge pull request #1370 from kerthcet/feature/quick-return-in-filter
feat: quick return in filter phase when unsuccessful state returned
This commit is contained in:
commit
0756007db1
|
@ -89,9 +89,7 @@ func (g *genericScheduler) findClustersThatFit(
|
|||
var out []*clusterv1alpha1.Cluster
|
||||
clusters := clusterInfo.GetReadyClusters()
|
||||
for _, c := range clusters {
|
||||
resMap := fwk.RunFilterPlugins(ctx, placement, resource, c.Cluster())
|
||||
res := resMap.Merge()
|
||||
if !res.IsSuccess() {
|
||||
if result := fwk.RunFilterPlugins(ctx, placement, resource, c.Cluster()); !result.IsSuccess() {
|
||||
klog.V(4).Infof("cluster %q is not fit", c.Cluster().Name)
|
||||
} else {
|
||||
out = append(out, c.Cluster())
|
||||
|
@ -264,9 +262,7 @@ func (g *genericScheduler) FailoverSchedule(ctx context.Context, placement *poli
|
|||
return result, fmt.Errorf("failed to get clusterObj by clusterName: %s", clusterName)
|
||||
}
|
||||
|
||||
resMap := g.scheduleFramework.RunFilterPlugins(ctx, placement, &spec.Resource, clusterObj.Cluster())
|
||||
res := resMap.Merge()
|
||||
if !res.IsSuccess() {
|
||||
if result := g.scheduleFramework.RunFilterPlugins(ctx, placement, &spec.Resource, clusterObj.Cluster()); !result.IsSuccess() {
|
||||
klog.V(4).Infof("cluster %q is not fit", clusterName)
|
||||
} else {
|
||||
candidateClusters.Insert(clusterName)
|
||||
|
|
|
@ -16,7 +16,7 @@ type Framework interface {
|
|||
|
||||
// RunFilterPlugins runs the set of configured Filter plugins for resources on
|
||||
// the given cluster.
|
||||
RunFilterPlugins(ctx context.Context, placement *policyv1alpha1.Placement, resource *workv1alpha2.ObjectReference, clusterv1alpha1 *clusterv1alpha1.Cluster) PluginToResult
|
||||
RunFilterPlugins(ctx context.Context, placement *policyv1alpha1.Placement, resource *workv1alpha2.ObjectReference, clusterv1alpha1 *clusterv1alpha1.Cluster) *Result
|
||||
|
||||
// RunScorePlugins runs the set of configured Score plugins, it returns a map of plugin name to cores
|
||||
RunScorePlugins(ctx context.Context, placement *policyv1alpha1.Placement, clusters []*clusterv1alpha1.Cluster) (PluginToClusterScores, error)
|
||||
|
|
|
@ -48,14 +48,13 @@ func NewFramework(plugins []string) framework.Framework {
|
|||
|
||||
// RunFilterPlugins runs the set of configured Filter plugins for resources on the cluster.
|
||||
// If any of the result is not success, the cluster is not suited for the resource.
|
||||
func (frw *frameworkImpl) RunFilterPlugins(ctx context.Context, placement *policyv1alpha1.Placement, resource *workv1alpha2.ObjectReference, cluster *clusterv1alpha1.Cluster) framework.PluginToResult {
|
||||
result := make(framework.PluginToResult, len(frw.filterPlugins))
|
||||
func (frw *frameworkImpl) RunFilterPlugins(ctx context.Context, placement *policyv1alpha1.Placement, resource *workv1alpha2.ObjectReference, cluster *clusterv1alpha1.Cluster) *framework.Result {
|
||||
for _, p := range frw.filterPlugins {
|
||||
pluginResult := p.Filter(ctx, placement, resource, cluster)
|
||||
result[p.Name()] = pluginResult
|
||||
if result := p.Filter(ctx, placement, resource, cluster); !result.IsSuccess() {
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
return framework.NewResult(framework.Success)
|
||||
}
|
||||
|
||||
// RunScorePlugins runs the set of configured Filter plugins for resources on the cluster.
|
||||
|
|
Loading…
Reference in New Issue