From 59dc40ea0b594dd8ff0883a34c363ba9c6ae5e9b Mon Sep 17 00:00:00 2001 From: Mariell Hoversholm Date: Thu, 14 Nov 2024 08:36:05 +0100 Subject: [PATCH] feat: use standard registry storage --- pkg/registry/apis/provisioning/register.go | 6 +- pkg/registry/apis/provisioning/storage.go | 66 ---------------------- 2 files changed, 2 insertions(+), 70 deletions(-) delete mode 100644 pkg/registry/apis/provisioning/storage.go diff --git a/pkg/registry/apis/provisioning/register.go b/pkg/registry/apis/provisioning/register.go index 1dd8d7bf85d..bc733e0010b 100644 --- a/pkg/registry/apis/provisioning/register.go +++ b/pkg/registry/apis/provisioning/register.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" + grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic" "github.com/grafana/grafana/pkg/services/apiserver/builder" "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/prometheus/client_golang/prometheus" @@ -63,10 +64,7 @@ func (b *ProvisioningAPIBuilder) InstallSchema(scheme *runtime.Scheme) error { } func (b *ProvisioningAPIBuilder) UpdateAPIGroupInfo(apiGroupInfo *genericapiserver.APIGroupInfo, opts builder.APIGroupOptions) error { - scheme := opts.Scheme - optsGetter := opts.OptsGetter - - repositoryStorage, err := newRepositoryStorage(scheme, optsGetter) + repositoryStorage, err := grafanaregistry.NewRegistryStore(opts.Scheme, v0alpha1.RepositoryResourceInfo, opts.OptsGetter) if err != nil { return fmt.Errorf("failed to create repository storage: %w", err) } diff --git a/pkg/registry/apis/provisioning/storage.go b/pkg/registry/apis/provisioning/storage.go deleted file mode 100644 index 8ec61df4b6b..00000000000 --- a/pkg/registry/apis/provisioning/storage.go +++ /dev/null @@ -1,66 +0,0 @@ -package provisioning - -import ( - "errors" - - "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" - grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic" - grafanarest "github.com/grafana/grafana/pkg/apiserver/rest" - "k8s.io/apimachinery/pkg/fields" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apiserver/pkg/registry/generic" - genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" - apistore "k8s.io/apiserver/pkg/storage" -) - -type storage struct { - *genericregistry.Store -} - -var _ grafanarest.Storage = (*storage)(nil) - -func newRepositoryStorage(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (*storage, error) { - info := v0alpha1.RepositoryResourceInfo - strategy := grafanaregistry.NewStrategy(scheme, info.GroupVersion()) - store := &genericregistry.Store{ - NewFunc: info.NewFunc, - NewListFunc: info.NewListFunc, - KeyRootFunc: grafanaregistry.KeyRootFunc(info.GroupResource()), - KeyFunc: grafanaregistry.NamespaceKeyFunc(info.GroupResource()), - PredicateFunc: Matcher, - DefaultQualifiedResource: info.GroupResource(), - SingularQualifiedResource: info.SingularGroupResource(), - TableConvertor: info.TableConverter(), - CreateStrategy: strategy, - UpdateStrategy: strategy, - DeleteStrategy: strategy, - } - options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: GetAttrs} - if err := store.CompleteWithOptions(options); err != nil { - return nil, err - } - return &storage{Store: store}, nil -} - -func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) { - if repo, ok := obj.(*v0alpha1.Repository); ok { - return labels.Set(repo.Labels), SelectableRepositoryFields(repo), nil - } - return nil, nil, errors.New("not a Repository object") -} - -// Matcher returns a generic.SelectionPredicate that matches on label and field selectors. -func Matcher(label labels.Selector, field fields.Selector) apistore.SelectionPredicate { - return apistore.SelectionPredicate{ - Label: label, - Field: field, - GetAttrs: GetAttrs, - } -} - -func SelectableRepositoryFields(obj *v0alpha1.Repository) fields.Set { - return generic.MergeFieldsSets(generic.ObjectMetaFieldsSet(&obj.ObjectMeta, false), fields.Set{ - // TODO: Add the subfields here. - }) -}