in pkg/coscheduling/core/core.go [298:318]
func CheckClusterResource(ctx context.Context, nodeList []*framework.NodeInfo, resourceRequest corev1.ResourceList, desiredPodGroupName string) error {
for _, info := range nodeList {
if info == nil || info.Node() == nil {
continue
}
nodeResource := util.ResourceList(getNodeResource(ctx, info, desiredPodGroupName))
for name, quant := range resourceRequest {
quant.Sub(nodeResource[name])
if quant.Sign() <= 0 {
delete(resourceRequest, name)
continue
}
resourceRequest[name] = quant
}
if len(resourceRequest) == 0 {
return nil
}
}
return fmt.Errorf("resource gap: %v", resourceRequest)
}