55 lines
1.9 KiB
Go
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),
|
|
}
|
|
}
|