func workloadFits()

in pkg/scheduler/preemption/preemption.go [324:353]


func workloadFits(wlReq cache.FlavorResourceQuantities, cq *cache.ClusterQueue, allowBorrowing bool) bool {
	for _, rg := range cq.ResourceGroups {
		for _, flvQuotas := range rg.Flavors {
			flvReq, found := wlReq[flvQuotas.Name]
			if !found {
				// Workload doesn't request this flavor.
				continue
			}
			cqResUsage := cq.Usage[flvQuotas.Name]
			var cohortResUsage, cohortResRequestable map[corev1.ResourceName]int64
			if cq.Cohort != nil {
				cohortResUsage = cq.Cohort.Usage[flvQuotas.Name]
				cohortResRequestable = cq.Cohort.RequestableResources[flvQuotas.Name]
			}
			for rName, rReq := range flvReq {
				limit := flvQuotas.Resources[rName].Nominal
				if flvQuotas.Resources[rName].BorrowingLimit != nil && allowBorrowing {
					limit += *flvQuotas.Resources[rName].BorrowingLimit
				}
				if cqResUsage[rName]+rReq > limit {
					return false
				}
				if cq.Cohort != nil && cohortResUsage[rName]+rReq > cohortResRequestable[rName] {
					return false
				}
			}
		}
	}
	return true
}