in pkg/capacityscheduling/capacity_scheduling.go [651:683]
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 {
eqs, err := c.elasticQuotaLister.ElasticQuotas(pod.Namespace).List(labels.NewSelector())
if err != nil {
klog.Errorf("Get ElasticQuota %v error %v", pod.Namespace, err)
return
}
// 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.Errorf("ElasticQuota addPodIfNotPresent for pod %v/%v error %v", pod.Namespace, pod.Name, err)
}
}