Provisioning: Reuse controller from registry (#110639)
This commit is contained in:
@@ -7,16 +7,20 @@ import (
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/grafana/grafana-app-sdk/logging"
|
||||
appcontroller "github.com/grafana/grafana/apps/provisioning/pkg/controller"
|
||||
"github.com/urfave/cli/v2"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
||||
"github.com/grafana/grafana/apps/provisioning/pkg/controller"
|
||||
"github.com/grafana/grafana/pkg/registry/apis/provisioning/controller"
|
||||
"github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs"
|
||||
"github.com/grafana/grafana/pkg/services/apiserver/standalone"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
|
||||
informer "github.com/grafana/grafana/apps/provisioning/pkg/generated/informers/externalversions"
|
||||
"github.com/grafana/grafana/apps/provisioning/pkg/repository"
|
||||
)
|
||||
|
||||
func RunRepoController(opts standalone.BuildInfo, c *cli.Context, cfg *setting.Cfg) error {
|
||||
@@ -25,7 +29,7 @@ func RunRepoController(opts standalone.BuildInfo, c *cli.Context, cfg *setting.C
|
||||
})).With("logger", "provisioning-repo-controller")
|
||||
logger.Info("Starting provisioning repo controller")
|
||||
|
||||
controllerCfg, err := setupFromConfig(cfg)
|
||||
controllerCfg, err := getRepoControllerConfig(cfg)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to setup operator: %w", err)
|
||||
}
|
||||
@@ -46,11 +50,38 @@ func RunRepoController(opts standalone.BuildInfo, c *cli.Context, cfg *setting.C
|
||||
controllerCfg.resyncInterval,
|
||||
)
|
||||
|
||||
/*
|
||||
// TODO: wire all of this up in order to allow the finalizers to work
|
||||
clients := resources.NewClientFactory(apiserver.WithoutRestConfig)
|
||||
store, err := resource.NewResourceClient(nil, nil, nil, nil, nil)
|
||||
if err != nil {
|
||||
return fmt.Errorf("create resource client: %w", err)
|
||||
}
|
||||
resourceLister := resources.NewResourceListerForMigrations(nil, nil, nil)
|
||||
*/
|
||||
jobs, err := jobs.NewJobStore(controllerCfg.provisioningClient.ProvisioningV0alpha1(), 30*time.Second)
|
||||
if err != nil {
|
||||
return fmt.Errorf("create API client job store: %w", err)
|
||||
}
|
||||
tester := &repository.Tester{}
|
||||
statusPatcher := appcontroller.NewRepositoryStatusPatcher(controllerCfg.provisioningClient.ProvisioningV0alpha1())
|
||||
healthChecker := controller.NewHealthChecker(
|
||||
tester,
|
||||
statusPatcher,
|
||||
)
|
||||
|
||||
repoInformer := informerFactory.Provisioning().V0alpha1().Repositories()
|
||||
controller, err := controller.NewRepositoryController(
|
||||
controllerCfg.provisioningClient.ProvisioningV0alpha1(),
|
||||
repoInformer,
|
||||
controllerCfg.repoFactory,
|
||||
nil, // resourceLister -- TODO: needed for finalizers
|
||||
nil, // clients -- TODO: needed for finalizers
|
||||
tester,
|
||||
jobs,
|
||||
nil, // dualwrite -- standalone operator assumes it is backed by unified storage
|
||||
healthChecker,
|
||||
statusPatcher,
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create repository controller: %w", err)
|
||||
@@ -61,6 +92,22 @@ func RunRepoController(opts standalone.BuildInfo, c *cli.Context, cfg *setting.C
|
||||
return fmt.Errorf("failed to sync informer cache")
|
||||
}
|
||||
|
||||
controller.Run(ctx)
|
||||
controller.Run(ctx, controllerCfg.workerCount)
|
||||
return nil
|
||||
}
|
||||
|
||||
type repoControllerConfig struct {
|
||||
provisioningControllerConfig
|
||||
workerCount int
|
||||
}
|
||||
|
||||
func getRepoControllerConfig(cfg *setting.Cfg) (*repoControllerConfig, error) {
|
||||
controllerCfg, err := setupFromConfig(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &repoControllerConfig{
|
||||
provisioningControllerConfig: *controllerCfg,
|
||||
workerCount: cfg.SectionWithEnvOverrides("operator").Key("worker_count").MustInt(1),
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user