Alerting: Support for imported Templates (#114196)
* refactor template service to contstruct notification template in one place, get provenance before creating and calculate resource version after. * refactor get by UID and name * introduce template kind in NotificationTemplate * introduce includeImported flag and use in the k8s api * support imported templates * add kind to template uid * tests for imported templates * update API model * set kind to default templates
This commit is contained in:
@@ -20,6 +20,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/registry/apps/alerting/notifications/timeinterval"
|
||||
"github.com/grafana/grafana/pkg/services/apiserver/appinstaller"
|
||||
"github.com/grafana/grafana/pkg/services/apiserver/endpoints/request"
|
||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||
"github.com/grafana/grafana/pkg/services/ngalert"
|
||||
ac "github.com/grafana/grafana/pkg/services/ngalert/accesscontrol"
|
||||
ngmodels "github.com/grafana/grafana/pkg/services/ngalert/models"
|
||||
@@ -97,7 +98,12 @@ func (a AlertingNotificationsAppInstaller) GetLegacyStorage(gvr schema.GroupVers
|
||||
} else if gvr == timeinterval.ResourceInfo.GroupVersionResource() {
|
||||
return timeinterval.NewStorage(api.MuteTimings, namespacer)
|
||||
} else if gvr == templategroup.ResourceInfo.GroupVersionResource() {
|
||||
return templategroup.NewStorage(api.Templates, namespacer)
|
||||
srv := api.Templates
|
||||
//nolint:staticcheck // not yet migrated to OpenFeature
|
||||
if a.ng.FeatureToggles.IsEnabledGlobally(featuremgmt.FlagAlertingImportAlertmanagerAPI) {
|
||||
srv = srv.WithIncludeImported()
|
||||
}
|
||||
return templategroup.NewStorage(srv, namespacer)
|
||||
} else if gvr == routingtree.ResourceInfo.GroupVersionResource() {
|
||||
return routingtree.NewStorage(api.Policies, namespacer)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package templategroup
|
||||
|
||||
import (
|
||||
"github.com/grafana/alerting/definition"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/fields"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
@@ -36,6 +37,7 @@ func convertToK8sResource(orgID int64, template definitions.NotificationTemplate
|
||||
Spec: model.TemplateGroupSpec{
|
||||
Title: template.Name,
|
||||
Content: template.Template,
|
||||
Kind: model.TemplateGroupTemplateKind(template.Kind),
|
||||
},
|
||||
}
|
||||
result.SetProvenanceStatus(string(template.Provenance))
|
||||
@@ -50,5 +52,6 @@ func convertToDomainModel(template *model.TemplateGroup) definitions.Notificatio
|
||||
Template: template.Spec.Content,
|
||||
ResourceVersion: template.ResourceVersion,
|
||||
Provenance: definitions.Provenance(ngmodels.ProvenanceNone),
|
||||
Kind: definition.TemplateKind(template.Spec.Kind),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/grafana/alerting/definition"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/internalversion"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@@ -211,6 +212,7 @@ func (s *legacyStorage) defaultTemplate() (definitions.NotificationTemplate, err
|
||||
UID: defaultTemplate.Name,
|
||||
Provenance: definitions.Provenance("system"),
|
||||
Template: defaultTemplate.Template,
|
||||
Kind: definition.GrafanaTemplateKind,
|
||||
}
|
||||
|
||||
return dto, nil
|
||||
|
||||
Reference in New Issue
Block a user