From 4184cd09f4a21e91a9a3f24fc83a62ba19c560d6 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Fri, 9 Jun 2023 17:34:00 +0200 Subject: [PATCH] [v10.0.x] Alerting: Add image URI annotation only when there's an image (#69858) * Alerting: Add image URI annotation only when there's an image (#69825) * Alerting: Add image URI annotation only when there's an image * fix function name (changed on main branch) (cherry picked from commit ff3e028a8588ab3f37410e44d51a5550744bf291) * Update compat_test.go --------- Co-authored-by: Santiago --- pkg/services/ngalert/schedule/compat.go | 11 +++++++++-- pkg/services/ngalert/schedule/compat_test.go | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/pkg/services/ngalert/schedule/compat.go b/pkg/services/ngalert/schedule/compat.go index 14c87ae663a..18ac062c176 100644 --- a/pkg/services/ngalert/schedule/compat.go +++ b/pkg/services/ngalert/schedule/compat.go @@ -50,7 +50,10 @@ func stateToPostableAlert(alertState *state.State, appURL *url.URL) *models.Post } if alertState.Image != nil { - nA[alertingModels.ImageTokenAnnotation] = generateImageURI(alertState.Image) + imageURI := generateImageURI(alertState.Image) + if imageURI != "" { + nA[alertingModels.ImageTokenAnnotation] = imageURI + } } if alertState.StateReason != "" { @@ -175,5 +178,9 @@ func generateImageURI(image *ngModels.Image) string { if image.URL != "" { return image.URL } - return "token://" + image.Token + if image.Token != "" { + return "token://" + image.Token + } + + return "" } diff --git a/pkg/services/ngalert/schedule/compat_test.go b/pkg/services/ngalert/schedule/compat_test.go index 7e61fd3d055..f36e7b3e5e6 100644 --- a/pkg/services/ngalert/schedule/compat_test.go +++ b/pkg/services/ngalert/schedule/compat_test.go @@ -134,6 +134,21 @@ func Test_stateToPostableAlert(t *testing.T) { require.Equal(t, expected, result.Annotations) }) + + t.Run("don't add __alertImageToken__ if there's no image token", func(t *testing.T) { + alertState := randomState(tc.state) + alertState.Annotations = randomMapOfStrings() + alertState.Image = &ngModels.Image{} + + result := stateToPostableAlert(alertState, appURL) + + expected := make(models.LabelSet, len(alertState.Annotations)+1) + for k, v := range alertState.Annotations { + expected[k] = v + } + + require.Equal(t, expected, result.Annotations) + }) }) t.Run("should add state reason annotation if not empty", func(t *testing.T) {