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  }