github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/lib/event/event.go (about) 1 package event 2 3 import ( 4 "fmt" 5 6 v1 "k8s.io/api/core/v1" 7 kscheme "k8s.io/client-go/kubernetes/scheme" 8 typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1" 9 "k8s.io/client-go/tools/record" 10 "k8s.io/klog" 11 12 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned/scheme" 13 ) 14 15 const component string = "operator-lifecycle-manager" 16 17 var s = scheme.Scheme 18 19 func init() { 20 if err := kscheme.AddToScheme(s); err != nil { 21 panic(err) 22 } 23 } 24 25 // NewRecorder returns an EventRecorder type that can be 26 // used to post Events to different object's lifecycles. 27 func NewRecorder(event typedcorev1.EventInterface) (record.EventRecorder, error) { 28 eventBroadcaster := record.NewBroadcasterWithCorrelatorOptions(record.CorrelatorOptions{ 29 BurstSize: 10, 30 SpamKeyFunc: func(event *v1.Event) string { 31 return fmt.Sprintf( 32 "%s/%s/%s/%s", 33 event.InvolvedObject.Kind, 34 event.InvolvedObject.Namespace, 35 event.InvolvedObject.Name, 36 event.Reason, 37 ) 38 }, 39 }) 40 eventBroadcaster.StartLogging(klog.Infof) 41 eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: event}) 42 recorder := eventBroadcaster.NewRecorder(s, v1.EventSource{Component: component}) 43 44 return recorder, nil 45 }