diff --git a/tools/record/event.go b/tools/record/event.go index 4899b362df..1582e8ee7d 100644 --- a/tools/record/event.go +++ b/tools/record/event.go @@ -357,6 +357,9 @@ func (recorder *recorderImpl) generateEvent(object runtime.Object, annotations m event := recorder.makeEvent(ref, annotations, eventtype, reason, message) event.Source = recorder.source + event.ReportingInstance = recorder.source.Host + event.ReportingController = recorder.source.Component + // NOTE: events should be a non-blocking operation, but we also need to not // put this in a goroutine, otherwise we'll race to write to a closed channel // when we go to shut down this broadcaster. Just drop events if we get overloaded, diff --git a/tools/record/event_test.go b/tools/record/event_test.go index 2513638fcb..fb68817ce9 100644 --- a/tools/record/event_test.go +++ b/tools/record/event_test.go @@ -179,11 +179,12 @@ func TestEventf(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[2]", }, - Reason: "Started", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 1, - Type: v1.EventTypeNormal, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 1, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, expectUpdate: false, @@ -206,11 +207,12 @@ func TestEventf(t *testing.T) { UID: "bar", APIVersion: "v1", }, - Reason: "Killed", - Message: "some other verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 1, - Type: v1.EventTypeNormal, + Reason: "Killed", + Message: "some other verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 1, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'Killed' some other verbose message: 1`, expectUpdate: false, @@ -234,11 +236,12 @@ func TestEventf(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[2]", }, - Reason: "Started", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 2, - Type: v1.EventTypeNormal, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 2, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, expectUpdate: true, @@ -262,11 +265,12 @@ func TestEventf(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[3]", }, - Reason: "Started", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 1, - Type: v1.EventTypeNormal, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 1, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, expectUpdate: false, @@ -290,11 +294,12 @@ func TestEventf(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[2]", }, - Reason: "Started", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 3, - Type: v1.EventTypeNormal, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 3, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, expectUpdate: true, @@ -318,11 +323,12 @@ func TestEventf(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[3]", }, - Reason: "Stopped", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 1, - Type: v1.EventTypeNormal, + Reason: "Stopped", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 1, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Stopped' some verbose message: 1`, expectUpdate: false, @@ -346,11 +352,12 @@ func TestEventf(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[3]", }, - Reason: "Stopped", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 2, - Type: v1.EventTypeNormal, + Reason: "Stopped", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 2, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Stopped' some verbose message: 1`, expectUpdate: true, @@ -735,11 +742,12 @@ func TestMultiSinkCache(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[2]", }, - Reason: "Started", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 1, - Type: v1.EventTypeNormal, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 1, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, expectUpdate: false, @@ -762,11 +770,12 @@ func TestMultiSinkCache(t *testing.T) { UID: "bar", APIVersion: "v1", }, - Reason: "Killed", - Message: "some other verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 1, - Type: v1.EventTypeNormal, + Reason: "Killed", + Message: "some other verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 1, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'Killed' some other verbose message: 1`, expectUpdate: false, @@ -790,11 +799,12 @@ func TestMultiSinkCache(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[2]", }, - Reason: "Started", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 2, - Type: v1.EventTypeNormal, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 2, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, expectUpdate: true, @@ -818,11 +828,12 @@ func TestMultiSinkCache(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[3]", }, - Reason: "Started", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 1, - Type: v1.EventTypeNormal, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 1, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, expectUpdate: false, @@ -846,11 +857,12 @@ func TestMultiSinkCache(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[2]", }, - Reason: "Started", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 3, - Type: v1.EventTypeNormal, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 3, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, expectUpdate: true, @@ -874,11 +886,12 @@ func TestMultiSinkCache(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[3]", }, - Reason: "Stopped", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 1, - Type: v1.EventTypeNormal, + Reason: "Stopped", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 1, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Stopped' some verbose message: 1`, expectUpdate: false, @@ -902,11 +915,12 @@ func TestMultiSinkCache(t *testing.T) { APIVersion: "v1", FieldPath: "spec.containers[3]", }, - Reason: "Stopped", - Message: "some verbose message: 1", - Source: v1.EventSource{Component: "eventTest"}, - Count: 2, - Type: v1.EventTypeNormal, + Reason: "Stopped", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + ReportingController: "eventTest", + Count: 2, + Type: v1.EventTypeNormal, }, expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"v1", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Stopped' some verbose message: 1`, expectUpdate: true, diff --git a/tools/record/events_cache_test.go b/tools/record/events_cache_test.go index 2ede35508c..896438d868 100644 --- a/tools/record/events_cache_test.go +++ b/tools/record/events_cache_test.go @@ -115,6 +115,9 @@ func validateEvent(messagePrefix string, actualEvent *v1.Event, expectedEvent *v // Temp clear time stamps for comparison because actual values don't matter for comparison recvEvent.FirstTimestamp = expectedEvent.FirstTimestamp recvEvent.LastTimestamp = expectedEvent.LastTimestamp + + recvEvent.ReportingController = expectedEvent.ReportingController + // Check that name has the right prefix. if n, en := recvEvent.Name, expectedEvent.Name; !strings.HasPrefix(n, en) { t.Errorf("%v - Name '%v' does not contain prefix '%v'", messagePrefix, n, en)