From 87ab98ea95ddddf647b73e557b79d0f2d6e944b8 Mon Sep 17 00:00:00 2001 From: Matthew Jacobson Date: Mon, 19 Feb 2024 10:30:13 -0500 Subject: [PATCH] Alerting: Fix panic in provisioning filter contacts by unknown name (#83070) --- pkg/services/ngalert/provisioning/contactpoints.go | 2 +- pkg/services/ngalert/provisioning/contactpoints_test.go | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/services/ngalert/provisioning/contactpoints.go b/pkg/services/ngalert/provisioning/contactpoints.go index c9886e97cb2..37a3c03925a 100644 --- a/pkg/services/ngalert/provisioning/contactpoints.go +++ b/pkg/services/ngalert/provisioning/contactpoints.go @@ -80,7 +80,7 @@ func (ecp *ContactPointService) GetContactPoints(ctx context.Context, q ContactP return nil, convertRecSvcErr(err) } grafanaReceivers := []*apimodels.GettableGrafanaReceiver{} - if q.Name != "" { + if q.Name != "" && len(res) > 0 { grafanaReceivers = res[0].GettableGrafanaReceivers.GrafanaManagedReceivers // we only expect one receiver group } else { for _, r := range res { diff --git a/pkg/services/ngalert/provisioning/contactpoints_test.go b/pkg/services/ngalert/provisioning/contactpoints_test.go index 995b9bb6c47..12081f1ba5d 100644 --- a/pkg/services/ngalert/provisioning/contactpoints_test.go +++ b/pkg/services/ngalert/provisioning/contactpoints_test.go @@ -53,6 +53,15 @@ func TestContactPointService(t *testing.T) { require.Equal(t, "slack receiver", cps[0].Name) }) + t.Run("service filters contact points by name, returns empty when no match", func(t *testing.T) { + sut := createContactPointServiceSut(t, secretsService) + + cps, err := sut.GetContactPoints(context.Background(), cpsQueryWithName(1, "unknown"), nil) + require.NoError(t, err) + + require.Len(t, cps, 0) + }) + t.Run("service stitches contact point into org's AM config", func(t *testing.T) { sut := createContactPointServiceSut(t, secretsService) newCp := createTestContactPoint()