github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/cloud/pkg/edgecontroller/manager/configmap.go (about) 1 package manager 2 3 import ( 4 "k8s.io/api/core/v1" 5 "k8s.io/apimachinery/pkg/fields" 6 "k8s.io/apimachinery/pkg/watch" 7 "k8s.io/client-go/kubernetes" 8 "k8s.io/client-go/tools/cache" 9 10 "github.com/kubeedge/kubeedge/cloud/pkg/edgecontroller/config" 11 ) 12 13 // ConfigMapManager manage all events of configmap by SharedInformer 14 type ConfigMapManager struct { 15 events chan watch.Event 16 } 17 18 // Events return the channel save events from watch configmap change 19 func (cmm *ConfigMapManager) Events() chan watch.Event { 20 return cmm.events 21 } 22 23 // NewConfigMapManager create ConfigMapManager by kube clientset and namespace 24 func NewConfigMapManager(kubeClient *kubernetes.Clientset, namespace string) (*ConfigMapManager, error) { 25 lw := cache.NewListWatchFromClient(kubeClient.CoreV1().RESTClient(), "configmaps", namespace, fields.Everything()) 26 events := make(chan watch.Event, config.Config.Buffer.ConfigmapEvent) 27 rh := NewCommonResourceEventHandler(events) 28 si := cache.NewSharedInformer(lw, &v1.ConfigMap{}, 0) 29 si.AddEventHandler(rh) 30 stopNever := make(chan struct{}) 31 go si.Run(stopNever) 32 33 return &ConfigMapManager{events: events}, nil 34 }