mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 05:02:21 +08:00
55 lines
2.0 KiB
Go
55 lines
2.0 KiB
Go
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) {
|
|
gv := resourceInfo.GroupVersion()
|
|
gv.Version = runtime.APIVersionInternal
|
|
strategy := NewStrategy(scheme, gv)
|
|
if resourceInfo.IsClusterScoped() {
|
|
strategy = strategy.WithClusterScope()
|
|
}
|
|
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
|
|
}
|
|
|
|
func NewCompleteRegistryStore(scheme *runtime.Scheme, resourceInfo utils.ResourceInfo, optsGetter generic.RESTOptionsGetter) (*registry.Store, error) {
|
|
registryStore, err := NewRegistryStore(scheme, resourceInfo, optsGetter)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
strategy := NewCompleteStrategy(scheme, resourceInfo.GroupVersion())
|
|
registryStore.CreateStrategy = strategy
|
|
registryStore.UpdateStrategy = strategy
|
|
registryStore.DeleteStrategy = strategy
|
|
return registryStore, nil
|
|
}
|
|
|
|
func NewRegistryStatusStore(scheme *runtime.Scheme, specStore *registry.Store) *StatusREST {
|
|
gv := specStore.New().GetObjectKind().GroupVersionKind().GroupVersion()
|
|
strategy := NewStatusStrategy(scheme, gv)
|
|
return NewStatusREST(specStore, strategy)
|
|
}
|