mirror of https://github.com/grafana/grafana
K8s/Storage: add a reusable generic storage builder (#93778)
parent
b80bba387f
commit
afe464bc20
@ -0,0 +1,31 @@ |
|||||||
|
package generic |
||||||
|
|
||||||
|
import ( |
||||||
|
"k8s.io/apimachinery/pkg/runtime" |
||||||
|
"k8s.io/apiserver/pkg/registry/generic" |
||||||
|
"k8s.io/apiserver/pkg/registry/generic/registry" |
||||||
|
|
||||||
|
"github.com/grafana/grafana/pkg/apimachinery/utils" |
||||||
|
) |
||||||
|
|
||||||
|
func NewRegistryStore(scheme *runtime.Scheme, resourceInfo utils.ResourceInfo, optsGetter generic.RESTOptionsGetter) (*registry.Store, error) { |
||||||
|
strategy := NewStrategy(scheme, resourceInfo.GroupVersion()) |
||||||
|
store := ®istry.Store{ |
||||||
|
NewFunc: resourceInfo.NewFunc, |
||||||
|
NewListFunc: resourceInfo.NewListFunc, |
||||||
|
KeyRootFunc: KeyRootFunc(resourceInfo.GroupResource()), |
||||||
|
KeyFunc: NamespaceKeyFunc(resourceInfo.GroupResource()), |
||||||
|
PredicateFunc: Matcher, |
||||||
|
DefaultQualifiedResource: resourceInfo.GroupResource(), |
||||||
|
SingularQualifiedResource: resourceInfo.SingularGroupResource(), |
||||||
|
TableConvertor: resourceInfo.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 store, nil |
||||||
|
} |
@ -1,35 +0,0 @@ |
|||||||
package dashboard |
|
||||||
|
|
||||||
import ( |
|
||||||
dashboard "github.com/grafana/grafana/pkg/apis/dashboard/v0alpha1" |
|
||||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic" |
|
||||||
grafanarest "github.com/grafana/grafana/pkg/apiserver/rest" |
|
||||||
"k8s.io/apimachinery/pkg/runtime" |
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" |
|
||||||
) |
|
||||||
|
|
||||||
var _ grafanarest.Storage = (*storage)(nil) |
|
||||||
|
|
||||||
type storage struct { |
|
||||||
*genericregistry.Store |
|
||||||
} |
|
||||||
|
|
||||||
func newStorage(scheme *runtime.Scheme) (*storage, error) { |
|
||||||
resourceInfo := dashboard.DashboardResourceInfo |
|
||||||
strategy := grafanaregistry.NewStrategy(scheme, resourceInfo.GroupVersion()) |
|
||||||
store := &genericregistry.Store{ |
|
||||||
NewFunc: resourceInfo.NewFunc, |
|
||||||
NewListFunc: resourceInfo.NewListFunc, |
|
||||||
KeyRootFunc: grafanaregistry.KeyRootFunc(resourceInfo.GroupResource()), |
|
||||||
KeyFunc: grafanaregistry.NamespaceKeyFunc(resourceInfo.GroupResource()), |
|
||||||
PredicateFunc: grafanaregistry.Matcher, |
|
||||||
DefaultQualifiedResource: resourceInfo.GroupResource(), |
|
||||||
SingularQualifiedResource: resourceInfo.SingularGroupResource(), |
|
||||||
CreateStrategy: strategy, |
|
||||||
UpdateStrategy: strategy, |
|
||||||
DeleteStrategy: strategy, |
|
||||||
TableConvertor: resourceInfo.TableConverter(), |
|
||||||
} |
|
||||||
|
|
||||||
return &storage{Store: store}, nil |
|
||||||
} |
|
@ -1,40 +0,0 @@ |
|||||||
package folders |
|
||||||
|
|
||||||
import ( |
|
||||||
"k8s.io/apimachinery/pkg/runtime" |
|
||||||
"k8s.io/apiserver/pkg/registry/generic" |
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" |
|
||||||
|
|
||||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic" |
|
||||||
grafanarest "github.com/grafana/grafana/pkg/apiserver/rest" |
|
||||||
) |
|
||||||
|
|
||||||
var _ grafanarest.Storage = (*storage)(nil) |
|
||||||
|
|
||||||
type storage struct { |
|
||||||
*genericregistry.Store |
|
||||||
} |
|
||||||
|
|
||||||
func newStorage(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter, legacy *legacyStorage) (*storage, error) { |
|
||||||
strategy := grafanaregistry.NewStrategy(scheme, resourceInfo.GroupVersion()) |
|
||||||
|
|
||||||
store := &genericregistry.Store{ |
|
||||||
NewFunc: resourceInfo.NewFunc, |
|
||||||
NewListFunc: resourceInfo.NewListFunc, |
|
||||||
KeyRootFunc: grafanaregistry.KeyRootFunc(resourceInfo.GroupResource()), |
|
||||||
KeyFunc: grafanaregistry.NamespaceKeyFunc(resourceInfo.GroupResource()), |
|
||||||
PredicateFunc: grafanaregistry.Matcher, |
|
||||||
DefaultQualifiedResource: resourceInfo.GroupResource(), |
|
||||||
SingularQualifiedResource: resourceInfo.SingularGroupResource(), |
|
||||||
TableConvertor: legacy.tableConverter, |
|
||||||
|
|
||||||
CreateStrategy: strategy, |
|
||||||
UpdateStrategy: strategy, |
|
||||||
DeleteStrategy: strategy, |
|
||||||
} |
|
||||||
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: grafanaregistry.GetAttrs} |
|
||||||
if err := store.CompleteWithOptions(options); err != nil { |
|
||||||
return nil, err |
|
||||||
} |
|
||||||
return &storage{Store: store}, nil |
|
||||||
} |
|
@ -1,41 +0,0 @@ |
|||||||
package peakq |
|
||||||
|
|
||||||
import ( |
|
||||||
"k8s.io/apimachinery/pkg/runtime" |
|
||||||
"k8s.io/apiserver/pkg/registry/generic" |
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" |
|
||||||
|
|
||||||
peakq "github.com/grafana/grafana/pkg/apis/peakq/v0alpha1" |
|
||||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic" |
|
||||||
grafanarest "github.com/grafana/grafana/pkg/apiserver/rest" |
|
||||||
) |
|
||||||
|
|
||||||
var _ grafanarest.Storage = (*storage)(nil) |
|
||||||
|
|
||||||
type storage struct { |
|
||||||
*genericregistry.Store |
|
||||||
} |
|
||||||
|
|
||||||
func newStorage(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (*storage, error) { |
|
||||||
resourceInfo := peakq.QueryTemplateResourceInfo |
|
||||||
strategy := grafanaregistry.NewStrategy(scheme, resourceInfo.GroupVersion()) |
|
||||||
|
|
||||||
store := &genericregistry.Store{ |
|
||||||
NewFunc: resourceInfo.NewFunc, |
|
||||||
NewListFunc: resourceInfo.NewListFunc, |
|
||||||
KeyRootFunc: grafanaregistry.KeyRootFunc(resourceInfo.GroupResource()), |
|
||||||
KeyFunc: grafanaregistry.NamespaceKeyFunc(resourceInfo.GroupResource()), |
|
||||||
PredicateFunc: grafanaregistry.Matcher, |
|
||||||
DefaultQualifiedResource: resourceInfo.GroupResource(), |
|
||||||
SingularQualifiedResource: resourceInfo.SingularGroupResource(), |
|
||||||
TableConvertor: resourceInfo.TableConverter(), |
|
||||||
CreateStrategy: strategy, |
|
||||||
UpdateStrategy: strategy, |
|
||||||
DeleteStrategy: strategy, |
|
||||||
} |
|
||||||
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: grafanaregistry.GetAttrs} |
|
||||||
if err := store.CompleteWithOptions(options); err != nil { |
|
||||||
return nil, err |
|
||||||
} |
|
||||||
return &storage{Store: store}, nil |
|
||||||
} |
|
@ -1,41 +0,0 @@ |
|||||||
package service |
|
||||||
|
|
||||||
import ( |
|
||||||
"k8s.io/apimachinery/pkg/runtime" |
|
||||||
"k8s.io/apiserver/pkg/registry/generic" |
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" |
|
||||||
|
|
||||||
service "github.com/grafana/grafana/pkg/apis/service/v0alpha1" |
|
||||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic" |
|
||||||
grafanarest "github.com/grafana/grafana/pkg/apiserver/rest" |
|
||||||
) |
|
||||||
|
|
||||||
var _ grafanarest.Storage = (*storage)(nil) |
|
||||||
|
|
||||||
type storage struct { |
|
||||||
*genericregistry.Store |
|
||||||
} |
|
||||||
|
|
||||||
func newStorage(scheme *runtime.Scheme, optsGetter generic.RESTOptionsGetter) (*storage, error) { |
|
||||||
resourceInfo := service.ExternalNameResourceInfo |
|
||||||
strategy := grafanaregistry.NewStrategy(scheme, resourceInfo.GroupVersion()) |
|
||||||
|
|
||||||
store := &genericregistry.Store{ |
|
||||||
NewFunc: resourceInfo.NewFunc, |
|
||||||
NewListFunc: resourceInfo.NewListFunc, |
|
||||||
KeyRootFunc: grafanaregistry.KeyRootFunc(resourceInfo.GroupResource()), |
|
||||||
KeyFunc: grafanaregistry.NamespaceKeyFunc(resourceInfo.GroupResource()), |
|
||||||
PredicateFunc: grafanaregistry.Matcher, |
|
||||||
DefaultQualifiedResource: resourceInfo.GroupResource(), |
|
||||||
SingularQualifiedResource: resourceInfo.SingularGroupResource(), |
|
||||||
TableConvertor: resourceInfo.TableConverter(), |
|
||||||
CreateStrategy: strategy, |
|
||||||
UpdateStrategy: strategy, |
|
||||||
DeleteStrategy: strategy, |
|
||||||
} |
|
||||||
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: grafanaregistry.GetAttrs} |
|
||||||
if err := store.CompleteWithOptions(options); err != nil { |
|
||||||
return nil, err |
|
||||||
} |
|
||||||
return &storage{Store: store}, nil |
|
||||||
} |
|
Loading…
Reference in new issue