2025-04-01 10:38:02 +09:00

55 lines
1.9 KiB
Go

package templategroup
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/types"
model "github.com/grafana/grafana/apps/alerting/notifications/pkg/apis/resource/templategroup/v0alpha1"
gapiutil "github.com/grafana/grafana/pkg/services/apiserver/utils"
"github.com/grafana/grafana/pkg/services/apiserver/endpoints/request"
"github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
ngmodels "github.com/grafana/grafana/pkg/services/ngalert/models"
)
func convertToK8sResources(orgID int64, list []definitions.NotificationTemplate, namespacer request.NamespaceMapper, selector fields.Selector) (*model.TemplateGroupList, error) {
result := &model.TemplateGroupList{}
for _, t := range list {
item := convertToK8sResource(orgID, t, namespacer)
if selector != nil && !selector.Empty() && !selector.Matches(model.SelectableFields(item)) {
continue
}
result.Items = append(result.Items, *item)
}
return result, nil
}
func convertToK8sResource(orgID int64, template definitions.NotificationTemplate, namespacer request.NamespaceMapper) *model.TemplateGroup {
result := &model.TemplateGroup{
ObjectMeta: metav1.ObjectMeta{
UID: types.UID(template.UID),
Name: template.UID,
Namespace: namespacer(orgID),
ResourceVersion: template.ResourceVersion,
},
Spec: model.Spec{
Title: template.Name,
Content: template.Template,
},
}
result.SetProvenanceStatus(string(template.Provenance))
result.UID = gapiutil.CalculateClusterWideUID(result)
return result
}
func convertToDomainModel(template *model.TemplateGroup) definitions.NotificationTemplate {
return definitions.NotificationTemplate{
UID: template.ObjectMeta.Name,
Name: template.Spec.Title,
Template: template.Spec.Content,
ResourceVersion: template.ResourceVersion,
Provenance: definitions.Provenance(ngmodels.ProvenanceNone),
}
}