Slight refactor of Zanzana GRPC Client to use it in the IAM Folder Operator (#110120)

This commit is contained in:
Mihai Turdean
2025-08-26 08:34:15 -06:00
committed by GitHub
parent 60f31342c0
commit 3eebe43c6d
7 changed files with 313 additions and 91 deletions
+17 -4
View File
@@ -9,21 +9,34 @@ import (
"github.com/grafana/grafana-app-sdk/simple"
foldersKind "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
"github.com/grafana/grafana/apps/iam/pkg/reconcilers"
"github.com/grafana/grafana/pkg/services/authz"
)
type AppConfig = reconcilers.AppConfig
var appManifestData = app.ManifestData{
AppName: "iam-folder-reconciler",
Group: "iam.grafana.app",
}
func Provider(appCfg AppConfig) app.Provider {
type AppConfig struct {
ZanzanaCfg authz.ZanzanaClientConfig
FolderReconcilerNamespace string
}
func Provider(appCfg app.SpecificConfig) app.Provider {
return simple.NewAppProvider(app.NewEmbeddedManifest(appManifestData), appCfg, New)
}
func New(cfg app.Config) (app.App, error) {
folderReconciler, err := reconcilers.NewFolderReconciler(cfg)
appSpecificConfig, ok := cfg.SpecificConfig.(AppConfig)
if !ok {
return nil, fmt.Errorf("invalid config type: expected AppConfig, got %T", cfg.SpecificConfig)
}
folderReconciler, err := reconcilers.NewFolderReconciler(reconcilers.ReconcilerConfig{
ZanzanaCfg: appSpecificConfig.ZanzanaCfg,
KubeConfig: &cfg.KubeConfig,
FolderReconcilerNamespace: appSpecificConfig.FolderReconcilerNamespace,
})
if err != nil {
return nil, fmt.Errorf("unable to create FolderReconciler: %w", err)
}