From 17ee4e2df6a2564d695738612482f8e3a8562b23 Mon Sep 17 00:00:00 2001 From: Raphael Ludwig Date: Mon, 25 Jul 2022 15:56:19 +0200 Subject: [PATCH] fix: Sending error logs to all registered jes instances in uniform (#334) Signed-off-by: Raphael Ludwig --- pkg/keptn/errorlog.go | 27 +++++++++++++-------------- pkg/keptn/errorlog_test.go | 8 +++++--- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/pkg/keptn/errorlog.go b/pkg/keptn/errorlog.go index 0ccc9fcc..682051c0 100644 --- a/pkg/keptn/errorlog.go +++ b/pkg/keptn/errorlog.go @@ -73,28 +73,27 @@ func (els *ErrorLogSender) SendErrorLogEvent(initialCloudEvent *cloudevents.Even return fmt.Errorf("error retrieving uniform registrations: %w", err) } - var integrationID string + sendEvent := false for _, registration := range registrations { if registration.Name == els.integrationName { - if integrationID != "" { - return fmt.Errorf("found multiple uniform registrations with name %s", els.integrationName) + errorCloudEvent, err := createErrorLogCloudEvent(registration.ID, initialCloudEvent, applicationError) + if err != nil { + log.Printf("unable to create error log cloudevent %+v: %+v", initialCloudEvent, err) + continue } - integrationID = registration.ID - } - } - if integrationID == "" { - return fmt.Errorf("no registration found with name %s", els.integrationName) + err = els.ceSender.SendCloudEvent(errorCloudEvent) + if err == nil { + sendEvent = true + } + } } - errorCloudEvent, err := createErrorLogCloudEvent(integrationID, initialCloudEvent, applicationError) - if err != nil { - return fmt.Errorf("unable to create error log cloudevent: %w", err) + if sendEvent { + return nil } - els.ceSender.SendCloudEvent(errorCloudEvent) - - return nil + return fmt.Errorf("no registration found with name %s", els.integrationName) } func createErrorLogCloudEvent( diff --git a/pkg/keptn/errorlog_test.go b/pkg/keptn/errorlog_test.go index 1679b47f..4060414b 100644 --- a/pkg/keptn/errorlog_test.go +++ b/pkg/keptn/errorlog_test.go @@ -129,13 +129,15 @@ func TestErrorWhenMultipleMatchingRegistrationReturned(t *testing.T) { ).Times(1) mockCloudEventSender := fake.NewMockCloudEventSender(ctrl) + mockCloudEventSender.EXPECT().SendCloudEvent(gomock.Any()).Times(2).Return(nil) + sut := NewErrorLogSender("foobar", uniformClient, mockCloudEventSender) newEvent := cloudevents.NewEvent() - err := sut.SendErrorLogEvent(&newEvent, errors.New("some error")) + newEvent.SetExtension("shkeptncontext", "034579438ufj-958340958") - assert.Error(t, err) - assert.ErrorContains(t, err, "found multiple uniform registrations with name foobar") + err := sut.SendErrorLogEvent(&newEvent, errors.New("some error")) + assert.NoError(t, err) } func TestSendErrorLogHappyPath(t *testing.T) {