@@ -4,11 +4,10 @@ import (
44 "context"
55 "errors"
66 "fmt"
7- "os"
8- "time"
9-
107 "k8s.io/client-go/kubernetes"
118 "k8s.io/klog/v2"
9+ "k8s.io/utils/clock"
10+ "os"
1211
1312 corev1 "k8s.io/api/core/v1"
1413 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -145,11 +144,12 @@ func guessControllerReferenceForNamespace(ctx context.Context, client corev1clie
145144}
146145
147146// NewRecorder returns new event recorder.
148- func NewRecorder (client corev1client.EventInterface , sourceComponentName string , involvedObjectRef * corev1.ObjectReference ) Recorder {
147+ func NewRecorder (client corev1client.EventInterface , sourceComponentName string , involvedObjectRef * corev1.ObjectReference , clock clock. PassiveClock ) Recorder {
149148 return & recorder {
150149 eventClient : client ,
151150 involvedObjectRef : involvedObjectRef ,
152151 sourceComponent : sourceComponentName ,
152+ clock : clock ,
153153 }
154154}
155155
@@ -158,6 +158,7 @@ type recorder struct {
158158 eventClient corev1client.EventInterface
159159 involvedObjectRef * corev1.ObjectReference
160160 sourceComponent string
161+ clock clock.PassiveClock
161162
162163 // TODO: This is not the right way to pass the context, but there is no other way without breaking event interface
163164 ctx context.Context
@@ -196,7 +197,7 @@ func (r *recorder) Warningf(reason, messageFmt string, args ...interface{}) {
196197
197198// Event emits the normal type event.
198199func (r * recorder ) Event (reason , message string ) {
199- event := makeEvent (r .involvedObjectRef , r .sourceComponent , corev1 .EventTypeNormal , reason , message )
200+ event := makeEvent (r .clock , r . involvedObjectRef , r .sourceComponent , corev1 .EventTypeNormal , reason , message )
200201 ctx := context .Background ()
201202 if r .ctx != nil {
202203 ctx = r .ctx
@@ -208,7 +209,7 @@ func (r *recorder) Event(reason, message string) {
208209
209210// Warning emits the warning type event.
210211func (r * recorder ) Warning (reason , message string ) {
211- event := makeEvent (r .involvedObjectRef , r .sourceComponent , corev1 .EventTypeWarning , reason , message )
212+ event := makeEvent (r .clock , r . involvedObjectRef , r .sourceComponent , corev1 .EventTypeWarning , reason , message )
212213 ctx := context .Background ()
213214 if r .ctx != nil {
214215 ctx = r .ctx
@@ -218,10 +219,11 @@ func (r *recorder) Warning(reason, message string) {
218219 }
219220}
220221
221- func makeEvent (involvedObjRef * corev1.ObjectReference , sourceComponent string , eventType , reason , message string ) * corev1.Event {
222- currentTime := metav1.Time {Time : time .Now ()}
222+ func makeEvent (clock clock. PassiveClock , involvedObjRef * corev1.ObjectReference , sourceComponent string , eventType , reason , message string ) * corev1.Event {
223+ currentTime := metav1.Time {Time : clock .Now ()}
223224 event := & corev1.Event {
224225 ObjectMeta : metav1.ObjectMeta {
226+ // TODO this is always used to create a unique event. Perhaps we should hash the message to be unique enough for apply-configuration
225227 Name : fmt .Sprintf ("%v.%x" , involvedObjRef .Name , currentTime .UnixNano ()),
226228 Namespace : involvedObjRef .Namespace ,
227229 },
0 commit comments