in pkg/plugin/predicates/predicate_manager.go [244:270]
func (p *predicateManagerImpl) runFilterPlugins(ctx context.Context, plugins []framework.FilterPlugin, state *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo, skip map[string]interface{}) (status *framework.Status, plugin string) {
plugin = ""
for _, pl := range plugins {
// skip plugin if prefilter returned skip
if _, ok := skip[pl.Name()]; ok {
continue
}
status := p.runFilterPlugin(ctx, pl, state, pod, nodeInfo)
if !status.IsSuccess() {
if plugin == "" {
plugin = pl.Name()
}
if !status.IsUnschedulable() {
// Filter plugins are not supposed to return any status other than
// Success or Unschedulable.
status = framework.NewStatus(framework.Error, fmt.Sprintf("running %q filter plugin for pod %q: %v", pl.Name(), pod.Name, status.Message()))
log.Log(log.ShimPredicates).Error("failed running Filter plugin",
zap.String("pluginName", pl.Name()),
zap.String("pod", fmt.Sprintf("%s/%s", pod.Namespace, pod.Name)),
zap.String("message", status.Message()))
return status, pl.Name()
}
return status, plugin
}
}
return framework.NewStatus(framework.Success), ""
}