github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/cloud/pkg/edgecontroller/manager/common.go (about) 1 package manager 2 3 import ( 4 "k8s.io/apimachinery/pkg/runtime" 5 "k8s.io/apimachinery/pkg/watch" 6 "k8s.io/klog" 7 ) 8 9 // Manager define the interface of a Manager, configmapManager and podManager implement it 10 type Manager interface { 11 Events() chan watch.Event 12 } 13 14 // CommonResourceEventHandler can be used by configmapManager and podManager 15 type CommonResourceEventHandler struct { 16 events chan watch.Event 17 } 18 19 func (c *CommonResourceEventHandler) obj2Event(t watch.EventType, obj interface{}) { 20 eventObj, ok := obj.(runtime.Object) 21 if !ok { 22 klog.Warningf("unknown type: %T, ignore", obj) 23 return 24 } 25 c.events <- watch.Event{Type: t, Object: eventObj} 26 } 27 28 // OnAdd handle Add event 29 func (c *CommonResourceEventHandler) OnAdd(obj interface{}) { 30 c.obj2Event(watch.Added, obj) 31 } 32 33 // OnUpdate handle Update event 34 func (c *CommonResourceEventHandler) OnUpdate(oldObj, newObj interface{}) { 35 c.obj2Event(watch.Modified, newObj) 36 } 37 38 // OnDelete handle Delete event 39 func (c *CommonResourceEventHandler) OnDelete(obj interface{}) { 40 c.obj2Event(watch.Deleted, obj) 41 } 42 43 // NewCommonResourceEventHandler create CommonResourceEventHandler used by configmapManager and podManager 44 func NewCommonResourceEventHandler(events chan watch.Event) *CommonResourceEventHandler { 45 return &CommonResourceEventHandler{events: events} 46 }