Feat/add zanzana apiserver args (#111278)
* initialize permissionstore if ignoring legacy storage * pass through feature toggles * extract repeated logic to method * remove extra TODOs * workspace
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apiserver/pkg/admission"
|
||||
"k8s.io/apiserver/pkg/authorization/authorizer"
|
||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||
"k8s.io/apiserver/pkg/registry/rest"
|
||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||
"k8s.io/kube-openapi/pkg/common"
|
||||
@@ -93,11 +94,13 @@ func RegisterAPIService(cfg *setting.Cfg,
|
||||
return builder
|
||||
}
|
||||
|
||||
func NewAPIService(ac authlib.AccessClient, searcher resource.ResourceClient) *FolderAPIBuilder {
|
||||
func NewAPIService(ac authlib.AccessClient, searcher resource.ResourceClient, features featuremgmt.FeatureToggles, zanzanaClient zanzana.Client) *FolderAPIBuilder {
|
||||
return &FolderAPIBuilder{
|
||||
authorizer: newMultiTenantAuthorizer(ac),
|
||||
searcher: searcher,
|
||||
ignoreLegacy: true,
|
||||
features: features,
|
||||
authorizer: newMultiTenantAuthorizer(ac),
|
||||
searcher: searcher,
|
||||
ignoreLegacy: true,
|
||||
permissionStore: reconcilers.NewZanzanaPermissionStore(zanzanaClient),
|
||||
}
|
||||
}
|
||||
func (b *FolderAPIBuilder) GetGroupVersion() schema.GroupVersion {
|
||||
@@ -153,6 +156,7 @@ func (b *FolderAPIBuilder) UpdateAPIGroupInfo(apiGroupInfo *genericapiserver.API
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
b.registerPermissionHooks(store)
|
||||
storage[resourceInfo.StoragePath()] = store
|
||||
apiGroupInfo.VersionedResourcesStorageMap[folders.VERSION] = storage
|
||||
b.storage = storage[resourceInfo.StoragePath()].(grafanarest.Storage)
|
||||
@@ -183,14 +187,7 @@ func (b *FolderAPIBuilder) UpdateAPIGroupInfo(apiGroupInfo *genericapiserver.API
|
||||
return err
|
||||
}
|
||||
|
||||
log := logging.FromContext(context.Background())
|
||||
if b.features.IsEnabledGlobally(featuremgmt.FlagZanzana) {
|
||||
log.Info("Enabling Zanzana folder propagation hooks")
|
||||
store.BeginCreate = b.beginCreate
|
||||
store.BeginUpdate = b.beginUpdate
|
||||
} else {
|
||||
log.Info("Zanzana is not enabled; skipping folder propagation hooks")
|
||||
}
|
||||
b.registerPermissionHooks(store)
|
||||
|
||||
dw, err := dualWriteBuilder(resourceInfo.GroupResource(), legacyStore, store)
|
||||
if err != nil {
|
||||
@@ -219,6 +216,18 @@ func (b *FolderAPIBuilder) UpdateAPIGroupInfo(apiGroupInfo *genericapiserver.API
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *FolderAPIBuilder) registerPermissionHooks(store *genericregistry.Store) {
|
||||
log := logging.FromContext(context.Background())
|
||||
|
||||
if b.features.IsEnabledGlobally(featuremgmt.FlagZanzana) {
|
||||
log.Info("Enabling Zanzana folder propagation hooks")
|
||||
store.BeginCreate = b.beginCreate
|
||||
store.BeginUpdate = b.beginUpdate
|
||||
} else {
|
||||
log.Info("Zanzana is not enabled; skipping folder propagation hooks")
|
||||
}
|
||||
}
|
||||
|
||||
func (b *FolderAPIBuilder) GetOpenAPIDefinitions() common.GetOpenAPIDefinitions {
|
||||
return folders.GetOpenAPIDefinitions
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user