in pkg/controller/elasticquota.go [68:108]
func NewElasticQuotaController(
kubeClient kubernetes.Interface,
eqInformer schedinformer.ElasticQuotaInformer,
podInformer coreinformer.PodInformer,
schedClient schedclientset.Interface,
newOpt ...func(ctrl *ElasticQuotaController),
) *ElasticQuotaController {
eventBroadcaster := record.NewBroadcaster()
eventBroadcaster.StartRecordingToSink(&corev1.EventSinkImpl{Interface: kubeClient.CoreV1().Events(v1.NamespaceAll)})
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "ElasticQuotaController"})
// set up elastic quota ctrl
ctrl := &ElasticQuotaController{
schedClient: schedClient,
eqLister: eqInformer.Lister(),
podLister: podInformer.Lister(),
eqListerSynced: eqInformer.Informer().HasSynced,
podListerSynced: podInformer.Informer().HasSynced,
eqQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "ElasticQuota"),
recorder: recorder,
}
for _, f := range newOpt {
f(ctrl)
}
klog.V(5).Info("Setting up elastic quota event handlers")
eqInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{
AddFunc: ctrl.eqAdded,
UpdateFunc: ctrl.eqUpdated,
DeleteFunc: ctrl.eqDeleted,
},
)
klog.V(5).Info("Setting up pod event handlers")
podInformer.Informer().AddEventHandler(
cache.ResourceEventHandlerFuncs{
AddFunc: ctrl.podAdded,
UpdateFunc: ctrl.podUpdated,
DeleteFunc: ctrl.podDeleted,
},
)
return ctrl
}