code: func (g *Cloud) watchClusterID(stop <-chan struct{}) {
  	g.ClusterID = ClusterID{
  		cfgMapKey: fmt.Sprintf("%v/%v", UIDNamespace, UIDConfigMapName),
  		client:    g.client,
  	}
  
  	mapEventHandler := cache.ResourceEventHandlerFuncs{
  		AddFunc: func(obj interface{}) {
  			m, ok := obj.(*v1.ConfigMap)
  			if !ok || m == nil {
  				klog.Errorf("Expected v1.ConfigMap, item=%+v, typeIsOk=%v", obj, ok)
  				return
  			}
  			if m.Namespace != UIDNamespace ||
  				m.Name != UIDConfigMapName {
  				return
  			}
  
  			klog.V(4).Infof("Observed new configmap for clusteriD: %v, %v; setting local values", m.Name, m.Data)
  			g.ClusterID.update(m)
  		},
  		UpdateFunc: func(old, cur interface{}) {
  			m, ok := cur.(*v1.ConfigMap)
  			if !ok || m == nil {
  				klog.Errorf("Expected v1.ConfigMap, item=%+v, typeIsOk=%v", cur, ok)
  				return
  			}
  
  			if m.Namespace != UIDNamespace ||
  				m.Name != UIDConfigMapName {
  				return
  			}
  
  			if reflect.DeepEqual(old, cur) {
  				return
  			}
  
  			klog.V(4).Infof("Observed updated configmap for clusteriD %v, %v; setting local values", m.Name, m.Data)
  			g.ClusterID.update(m)
  		},
  	}
  
  	listerWatcher := cache.NewListWatchFromClient(g.ClusterID.client.CoreV1().RESTClient(), "configmaps", UIDNamespace, fields.Everything())
  	var controller cache.Controller
  	g.ClusterID.store, controller = cache.NewInformer(newSingleObjectListerWatcher(listerWatcher, UIDConfigMapName), &v1.ConfigMap{}, updateFuncFrequency, mapEventHandler)
  
  	controller.Run(stop)
  }
docs: // Continually watches for changes to the cluster id config map