func NewController()

in pkg/localcontroller/controller.go [46:79]


func NewController(
	kubeclientset kubernetes.Interface,
	nodesInformer cache.SharedIndexInformer) *Controller {

	// Create a new controller
	klog.V(1).Infof("Creating a local controller to manage node-level probers")
	controller := &Controller{
		kubeclientset: kubeclientset,
		nodesSynced:   nodesInformer.HasSynced,
		workqueue:     workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "nodeworkers"),
		watchedNodes:  &watchedNodes{nodes: make(map[string]int)},
	}

	klog.V(1).Info("Setting up event handlers")
	nodesInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
		AddFunc: controller.handleObject,
		// We only care about the node restart events
		// so that we need to restart the prober on the node
		UpdateFunc: func(old, new interface{}) {
			newNode := new.(*corev1.Node)
			oldNode := old.(*corev1.Node)
			if newNode.ResourceVersion == oldNode.ResourceVersion {
				// Periodic resync will send update events for all known node.
				// Two different versions of the same Node will always have different RVs.
				klog.V(1).Infof("This is fired when the informer does the resync. No change to the resource, do nothing!")
				return
			}
			controller.handleObject(new)
		},
		DeleteFunc: controller.handleObject,
	})

	return controller
}