@@ -160,8 +160,12 @@ type Options struct {
160160 // use the cache for reads and the client for writes.
161161 NewClient NewClientFunc
162162
163+ // EventBroadcaster records Events emitted by the manager and sends them to the Kubernetes API
164+ // Use this to customize the event correlator and spam filter
165+ EventBroadcaster record.EventBroadcaster
166+
163167 // Dependency injection for testing
164- newRecorderProvider func (config * rest.Config , scheme * runtime.Scheme , logger logr.Logger ) (recorder.Provider , error )
168+ newRecorderProvider func (config * rest.Config , scheme * runtime.Scheme , logger logr.Logger , broadcaster record. EventBroadcaster ) (recorder.Provider , error )
165169 newResourceLock func (config * rest.Config , recorderProvider recorder.Provider , options leaderelection.Options ) (resourcelock.Interface , error )
166170 newMetricsListener func (addr string ) (net.Listener , error )
167171}
@@ -231,7 +235,7 @@ func New(config *rest.Config, options Options) (Manager, error) {
231235 // Create the recorder provider to inject event recorders for the components.
232236 // TODO(directxman12): the log for the event provider should have a context (name, tags, etc) specific
233237 // to the particular controller that it's being injected into, rather than a generic one like is here.
234- recorderProvider , err := options .newRecorderProvider (config , options .Scheme , log .WithName ("events" ))
238+ recorderProvider , err := options .newRecorderProvider (config , options .Scheme , log .WithName ("events" ), options . EventBroadcaster )
235239 if err != nil {
236240 return nil , err
237241 }
@@ -342,5 +346,9 @@ func setOptionsDefaults(options Options) Options {
342346 options .RetryPeriod = & retryPeriod
343347 }
344348
349+ if options .EventBroadcaster == nil {
350+ options .EventBroadcaster = record .NewBroadcaster ()
351+ }
352+
345353 return options
346354}
0 commit comments