func tolerationsToleratesTaints(tolerations []api.Toleration, taints []api.Taint) bool { // If the taint list is nil/empty, it is tolerated by all tolerations by default. if len(taints) == 0 { return true } // The taint list isn't nil/empty, a nil/empty toleration list can't tolerate them. if len(tolerations) == 0 { return false } for i := range taints { taint := &taints[i] // skip taints that have effect PreferNoSchedule, since it is for priorities if taint.Effect == api.TaintEffectPreferNoSchedule { continue } if !api.TaintToleratedByTolerations(taint, tolerations) { return false } } return true }
// CountIntolerableTaintsPreferNoSchedule gives the count of intolerable taints of a pod with effect PreferNoSchedule func countIntolerableTaintsPreferNoSchedule(taints []api.Taint, tolerations []api.Toleration) (intolerableTaints int) { for _, taint := range taints { // check only on taints that have effect PreferNoSchedule if taint.Effect != api.TaintEffectPreferNoSchedule { continue } if !api.TaintToleratedByTolerations(taint, tolerations) { intolerableTaints++ } } return }