in pkg/capacityscheduling/capacity_scheduling.go [695:728]
func (c *CapacityScheduling) addPod(obj interface{}) {
pod := obj.(*v1.Pod)
c.Lock()
defer c.Unlock()
elasticQuotaInfo := c.elasticQuotaInfos[pod.Namespace]
// If elasticQuotaInfo is nil, try to list ElasticQuotas through elasticQuotaLister
if elasticQuotaInfo == nil {
var eqList v1alpha1.ElasticQuotaList
if err := c.client.List(context.Background(), &eqList, client.InNamespace(pod.Namespace)); err != nil {
klog.ErrorS(err, "Failed to get elasticQuota", "elasticQuota", pod.Namespace)
return
}
eqs := eqList.Items
// If the length of elasticQuotas is 0, return.
if len(eqs) == 0 {
return
}
if len(eqs) > 0 {
// only one elasticquota is supported in each namespace
eq := eqs[0]
elasticQuotaInfo = newElasticQuotaInfo(eq.Namespace, eq.Spec.Min, eq.Spec.Max, nil)
c.elasticQuotaInfos[eq.Namespace] = elasticQuotaInfo
}
}
err := elasticQuotaInfo.addPodIfNotPresent(pod)
if err != nil {
klog.ErrorS(err, "Failed to add Pod to its associated elasticQuota", "pod", klog.KObj(pod))
}
}