func NewElasticQuotaController()

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
}