func()

in kubernetes/eventhandler.go [219:249]


func (n *nodePodUpdater) OnUpdate(obj interface{}) {
	node, ok := obj.(*Node)
	if !ok {
		return
	}
	// n.store.List() returns a snapshot at this point. If a delete is received
	// from the main watcher, this loop may generate an update event after the
	// delete is processed, leaving configurations that would never be deleted.
	// Also this loop can miss updates, what could leave outdated configurations.
	// Avoid these issues by locking the processing of events from the main watcher.
	if n.locker != nil {
		n.locker.Lock()
		defer n.locker.Unlock()
	}
	cachedObject := n.nodeWatcher.CachedObject()
	cachedNode, ok := cachedObject.(*Node)

	if ok && node.Name == cachedNode.Name {
		labelscheck := reflect.DeepEqual(node.ObjectMeta.Labels, cachedNode.ObjectMeta.Labels)
		annotationscheck := reflect.DeepEqual(node.ObjectMeta.Annotations, cachedNode.ObjectMeta.Annotations)
		// Only if there is a difference in Metadata labels or annotations proceed to Pod update
		if !labelscheck || !annotationscheck {
			for _, pod := range n.store.List() {
				pod, ok := pod.(*Pod)
				if ok && pod.Spec.NodeName == node.Name {
					n.handler(pod)
				}
			}
		}
	}
}