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:
Cory Forseth
2025-09-18 16:17:05 -05:00
committed by GitHub
parent 24ec58d514
commit b8f5effd85
3 changed files with 27 additions and 18 deletions
+21 -12
View File
@@ -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
}