in pkg/networkaware/networkoverhead/networkoverhead.go [326:358]
func (no *NetworkOverhead) Filter(ctx context.Context,
cycleState *framework.CycleState,
pod *corev1.Pod,
nodeInfo *framework.NodeInfo) *framework.Status {
if nodeInfo.Node() == nil {
return framework.NewStatus(framework.Error, "node not found")
}
// Get PreFilterState
preFilterState, err := getPreFilterState(cycleState)
if err != nil {
klog.ErrorS(err, "Failed to read preFilterState from cycleState", "preFilterStateKey", preFilterStateKey)
return framework.NewStatus(framework.Error, "not eligible due to failed to read from cycleState")
}
// If scoreEqually, return nil
if preFilterState.scoreEqually {
klog.V(6).InfoS("Score all nodes equally, return")
return nil
}
// Get satisfied and violated number of dependencies
satisfied := preFilterState.satisfiedMap[nodeInfo.Node().Name]
violated := preFilterState.violatedMap[nodeInfo.Node().Name]
klog.V(6).InfoS("Number of dependencies:", "satisfied", satisfied, "violated", violated)
// The pod is filtered out if the number of violated dependencies is higher than the satisfied ones
if violated > satisfied {
return framework.NewStatus(framework.Unschedulable,
fmt.Sprintf("Node %v does not meet several network requirements from Workload dependencies: Satisfied: %v Violated: %v", nodeInfo.Node().Name, satisfied, violated))
}
return nil
}