in pkg/noderesourcetopology/score.go [63:94]
func (tm *TopologyMatch) Score(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
// the scheduler framework will add the node/name key/value pair
lh := klog.FromContext(ctx).WithValues(logging.KeyPod, klog.KObj(pod), logging.KeyPodUID, logging.PodUID(pod))
lh.V(4).Info(logging.FlowBegin)
defer lh.V(4).Info(logging.FlowEnd)
lh.V(6).Info("scoring node")
// if it's a non-guaranteed pod, every node is considered to be a good fit
if v1qos.GetPodQOS(pod) != v1.PodQOSGuaranteed {
return framework.MaxNodeScore, nil
}
nodeTopology, info := tm.nrtCache.GetCachedNRTCopy(ctx, nodeName, pod)
lh = lh.WithValues(logging.KeyGeneration, info.Generation)
if !info.Fresh {
lh.V(4).Info("noderesourcetopology is not valid for node")
return 0, nil
}
if nodeTopology == nil {
lh.V(5).Info("noderesourcetopology was not found for node")
return 0, nil
}
lh.V(6).Info("found object", "noderesourcetopology", stringify.NodeResourceTopologyResources(nodeTopology))
handler := tm.scoringHandlerFromTopologyManagerConfig(nodeconfig.TopologyManagerFromNodeResourceTopology(lh, nodeTopology))
if handler == nil {
return 0, nil
}
return handler(lh, pod, nodeTopology.Zones)
}