diff --git a/pkg/services/ngalert/provisioning/templates.go b/pkg/services/ngalert/provisioning/templates.go index 29bc8155e71..9d4db1ed140 100644 --- a/pkg/services/ngalert/provisioning/templates.go +++ b/pkg/services/ngalert/provisioning/templates.go @@ -5,6 +5,9 @@ import ( "errors" "fmt" "hash/fnv" + "maps" + "slices" + "sort" "unsafe" "github.com/grafana/grafana/pkg/infra/log" @@ -48,12 +51,15 @@ func (t *TemplateService) GetTemplates(ctx context.Context, orgID int64) ([]defi } templates := make([]definitions.NotificationTemplate, 0, len(revision.Config.TemplateFiles)) - for name, tmpl := range revision.Config.TemplateFiles { + names := slices.Collect(maps.Keys(revision.Config.TemplateFiles)) + sort.Strings(names) + for _, name := range names { + content := revision.Config.TemplateFiles[name] tmpl := definitions.NotificationTemplate{ UID: legacy_storage.NameToUid(name), Name: name, - Template: tmpl, - ResourceVersion: calculateTemplateFingerprint(tmpl), + Template: content, + ResourceVersion: calculateTemplateFingerprint(content), } provenance, ok := provenances[tmpl.ResourceID()] if !ok { diff --git a/pkg/services/ngalert/provisioning/templates_test.go b/pkg/services/ngalert/provisioning/templates_test.go index 050777e7691..5b989dd678d 100644 --- a/pkg/services/ngalert/provisioning/templates_test.go +++ b/pkg/services/ngalert/provisioning/templates_test.go @@ -68,7 +68,7 @@ func TestGetTemplates(t *testing.T) { }, } - require.ElementsMatch(t, expected, result) + require.EqualValues(t, expected, result) prov.AssertCalled(t, "GetProvenances", mock.Anything, orgID, (&definitions.NotificationTemplate{}).ResourceType()) prov.AssertExpectations(t)