From 94ce6da0f2d8ede4f7dcebdd843e8b909f6e5f2d Mon Sep 17 00:00:00 2001 From: al-lac Date: Wed, 17 Apr 2024 09:46:21 +0200 Subject: [PATCH] Add severity to opsgenie Details payload Co-authored-by: souleb Signed-off-by: al-lac --- internal/notifier/opsgenie.go | 9 ++++++++- internal/notifier/opsgenie_test.go | 32 ++++++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/internal/notifier/opsgenie.go b/internal/notifier/opsgenie.go index 18053c1b9..19f12370e 100644 --- a/internal/notifier/opsgenie.go +++ b/internal/notifier/opsgenie.go @@ -65,10 +65,17 @@ func (s *Opsgenie) Post(ctx context.Context, event eventv1.Event) error { return nil } + var details = make(map[string]string) + + if event.Metadata != nil { + details = event.Metadata + } + details["severity"] = event.Severity + payload := OpsgenieAlert{ Message: event.InvolvedObject.Kind + "/" + event.InvolvedObject.Name, Description: event.Message, - Details: event.Metadata, + Details: details, } err := postMessage(ctx, s.URL, s.ProxyURL, s.CertPool, payload, func(req *retryablehttp.Request) { diff --git a/internal/notifier/opsgenie_test.go b/internal/notifier/opsgenie_test.go index 9e5690f91..91c2bf40e 100644 --- a/internal/notifier/opsgenie_test.go +++ b/internal/notifier/opsgenie_test.go @@ -24,6 +24,7 @@ import ( "net/http/httptest" "testing" + "github.com/fluxcd/pkg/apis/event/v1beta1" "github.com/stretchr/testify/require" ) @@ -38,9 +39,32 @@ func TestOpsgenie_Post(t *testing.T) { })) defer ts.Close() - opsgenie, err := NewOpsgenie(ts.URL, "", nil, "token") - require.NoError(t, err) + tests := []struct { + name string + event func() v1beta1.Event + }{ + { + name: "test event", + event: testEvent, + }, + { + name: "test event with empty metadata", + event: func() v1beta1.Event { + events := testEvent() + events.Metadata = nil + return events + }, + }, + } - err = opsgenie.Post(context.TODO(), testEvent()) - require.NoError(t, err) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + + opsgenie, err := NewOpsgenie(ts.URL, "", nil, "token") + require.NoError(t, err) + + err = opsgenie.Post(context.TODO(), tt.event()) + require.NoError(t, err) + }) + } }