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) + }) + } }