Skip to content

Commit 61bc9ed

Browse files
add filter functions to event recorder
Signed-off-by: François Rigaut <[email protected]>
1 parent 2b288ff commit 61bc9ed

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

pkg/event/event.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,26 @@ type Recorder interface {
7777
type APIRecorder struct {
7878
kube record.EventRecorder
7979
annotations map[string]string
80+
filterFns []FilterFn
8081
}
8182

83+
// FilterFn is a function used to filter events.
84+
// It should return false when events should not be sent.
85+
type FilterFn func(obj runtime.Object, e Event) bool
86+
8287
// NewAPIRecorder returns an APIRecorder that records Kubernetes events to an
8388
// APIServer using the supplied EventRecorder.
84-
func NewAPIRecorder(r record.EventRecorder) *APIRecorder {
85-
return &APIRecorder{kube: r, annotations: map[string]string{}}
89+
func NewAPIRecorder(r record.EventRecorder, fns ...FilterFn) *APIRecorder {
90+
return &APIRecorder{kube: r, annotations: map[string]string{}, filterFns: fns}
8691
}
8792

8893
// Event records the supplied event.
8994
func (r *APIRecorder) Event(obj runtime.Object, e Event) {
95+
for _, filter := range r.filterFns {
96+
if filter(obj, e) {
97+
return
98+
}
99+
}
90100
r.kube.AnnotatedEventf(obj, r.annotations, string(e.Type), string(e.Reason), "%s", e.Message)
91101
}
92102

0 commit comments

Comments
 (0)