@@ -317,38 +317,6 @@ func run() error {
317317 return err
318318 }
319319
320- coreClient , err := corev1client .NewForConfig (mgr .GetConfig ())
321- if err != nil {
322- setupLog .Error (err , "unable to create core client" )
323- return err
324- }
325- tokenGetter := authentication .NewTokenGetter (coreClient , authentication .WithExpirationDuration (1 * time .Hour ))
326- clientRestConfigMapper := action .ServiceAccountRestConfigMapper (tokenGetter )
327- if features .OperatorControllerFeatureGate .Enabled (features .SyntheticPermissions ) {
328- clientRestConfigMapper = action .SyntheticUserRestConfigMapper (clientRestConfigMapper )
329- }
330-
331- cfgGetter , err := helmclient .NewActionConfigGetter (mgr .GetConfig (), mgr .GetRESTMapper (),
332- helmclient .StorageDriverMapper (action .ChunkedStorageDriverMapper (coreClient , mgr .GetAPIReader (), cfg .systemNamespace )),
333- helmclient .ClientNamespaceMapper (func (obj client.Object ) (string , error ) {
334- ext := obj .(* ocv1.ClusterExtension )
335- return ext .Spec .Namespace , nil
336- }),
337- helmclient .ClientRestConfigMapper (clientRestConfigMapper ),
338- )
339- if err != nil {
340- setupLog .Error (err , "unable to config for creating helm client" )
341- return err
342- }
343-
344- acg , err := action .NewWrappedActionClientGetter (cfgGetter ,
345- helmclient .WithFailureRollbacks (false ),
346- )
347- if err != nil {
348- setupLog .Error (err , "unable to create helm client" )
349- return err
350- }
351-
352320 certPoolWatcher , err := httputil .NewCertPoolWatcher (cfg .catalogdCasDir , ctrl .Log .WithName ("cert-pool" ))
353321 if err != nil {
354322 setupLog .Error (err , "unable to create CA certificate pool" )
@@ -434,24 +402,30 @@ func run() error {
434402 crdupgradesafety .NewPreflight (aeClient .CustomResourceDefinitions ()),
435403 }
436404
437- // determine if PreAuthorizer should be enabled based on feature gate
438- var preAuth authorization.PreAuthorizer
439- if features .OperatorControllerFeatureGate .Enabled (features .PreflightPermissions ) {
440- preAuth = authorization .NewRBACPreAuthorizer (mgr .GetClient ())
405+ var ctrlBuilderOpts []controllers.ControllerBuilderOption
406+ if features .OperatorControllerFeatureGate .Enabled (features .BoxcutterRuntime ) {
407+ ctrlBuilderOpts = append (ctrlBuilderOpts , controllers .WithOwns (& ocv1.ClusterExtensionRevision {}))
408+ }
409+
410+ ceReconciler := & controllers.ClusterExtensionReconciler {
411+ Client : cl ,
412+ Resolver : resolver ,
413+ ImageCache : imageCache ,
414+ ImagePuller : imagePuller ,
415+ Finalizers : clusterExtensionFinalizers ,
416+ }
417+ ceController , err := ceReconciler .SetupWithManager (mgr , ctrlBuilderOpts ... )
418+ if err != nil {
419+ setupLog .Error (err , "unable to create controller" , "controller" , "ClusterExtension" )
420+ return err
441421 }
442422
443- // create applier
444- var (
445- ctrlBuilderOpts []controllers.ControllerBuilderOption
446- extApplier controllers.Applier
447- revisionStatesGetter controllers.RevisionStatesGetter
448- )
449423 certProvider := getCertificateProvider ()
450424 if features .OperatorControllerFeatureGate .Enabled (features .BoxcutterRuntime ) {
451425 // TODO: add support for preflight checks
452426 // TODO: better scheme handling - which types do we want to support?
453427 _ = apiextensionsv1 .AddToScheme (mgr .GetScheme ())
454- extApplier = & applier.Boxcutter {
428+ ceReconciler . Applier = & applier.Boxcutter {
455429 Client : mgr .GetClient (),
456430 Scheme : mgr .GetScheme (),
457431 RevisionGenerator : & applier.SimpleRevisionGenerator {
@@ -463,50 +437,8 @@ func run() error {
463437 },
464438 Preflights : preflights ,
465439 }
466- revisionStatesGetter = & controllers.BoxcutterRevisionStatesGetter {Reader : mgr .GetClient ()}
467- ctrlBuilderOpts = append (ctrlBuilderOpts , controllers .WithOwns (& ocv1.ClusterExtensionRevision {}))
468- } else {
469- // now initialize the helmApplier, assigning the potentially nil preAuth
470- extApplier = & applier.Helm {
471- ActionClientGetter : acg ,
472- Preflights : preflights ,
473- BundleToHelmChartConverter : & convert.BundleToHelmChartConverter {
474- BundleRenderer : registryv1 .Renderer ,
475- CertificateProvider : certProvider ,
476- IsWebhookSupportEnabled : certProvider != nil ,
477- },
478- PreAuthorizer : preAuth ,
479- HelmReleaseToObjectsConverter : & applier.HelmReleaseToObjectsConverter {},
480- }
481- revisionStatesGetter = & controllers.HelmRevisionStatesGetter {ActionClientGetter : acg }
482- }
483-
484- cm := contentmanager .NewManager (clientRestConfigMapper , mgr .GetConfig (), mgr .GetRESTMapper ())
485- err = clusterExtensionFinalizers .Register (controllers .ClusterExtensionCleanupContentManagerCacheFinalizer , finalizers .FinalizerFunc (func (ctx context.Context , obj client.Object ) (crfinalizer.Result , error ) {
486- ext := obj .(* ocv1.ClusterExtension )
487- err := cm .Delete (ext )
488- return crfinalizer.Result {}, err
489- }))
490- if err != nil {
491- setupLog .Error (err , "unable to register content manager cleanup finalizer" )
492- return err
493- }
494-
495- if err = (& controllers.ClusterExtensionReconciler {
496- Client : cl ,
497- Resolver : resolver ,
498- ImageCache : imageCache ,
499- ImagePuller : imagePuller ,
500- Applier : extApplier ,
501- RevisionStatesGetter : revisionStatesGetter ,
502- Finalizers : clusterExtensionFinalizers ,
503- Manager : cm ,
504- }).SetupWithManager (mgr , ctrlBuilderOpts ... ); err != nil {
505- setupLog .Error (err , "unable to create controller" , "controller" , "ClusterExtension" )
506- return err
507- }
440+ ceReconciler .RevisionStatesGetter = & controllers.BoxcutterRevisionStatesGetter {Reader : mgr .GetClient ()}
508441
509- if features .OperatorControllerFeatureGate .Enabled (features .BoxcutterRuntime ) {
510442 // Boxcutter
511443 const (
512444 boxcutterSystemPrefixFieldOwner = "olm.operatorframework.io"
@@ -550,6 +482,70 @@ func run() error {
550482 setupLog .Error (err , "unable to create controller" , "controller" , "ClusterExtensionRevision" )
551483 return err
552484 }
485+ } else {
486+ coreClient , err := corev1client .NewForConfig (mgr .GetConfig ())
487+ if err != nil {
488+ setupLog .Error (err , "unable to create core client" )
489+ return err
490+ }
491+ tokenGetter := authentication .NewTokenGetter (coreClient , authentication .WithExpirationDuration (1 * time .Hour ))
492+ clientRestConfigMapper := action .ServiceAccountRestConfigMapper (tokenGetter )
493+ if features .OperatorControllerFeatureGate .Enabled (features .SyntheticPermissions ) {
494+ clientRestConfigMapper = action .SyntheticUserRestConfigMapper (clientRestConfigMapper )
495+ }
496+
497+ cfgGetter , err := helmclient .NewActionConfigGetter (mgr .GetConfig (), mgr .GetRESTMapper (),
498+ helmclient .StorageDriverMapper (action .ChunkedStorageDriverMapper (coreClient , mgr .GetAPIReader (), cfg .systemNamespace )),
499+ helmclient .ClientNamespaceMapper (func (obj client.Object ) (string , error ) {
500+ ext := obj .(* ocv1.ClusterExtension )
501+ return ext .Spec .Namespace , nil
502+ }),
503+ helmclient .ClientRestConfigMapper (clientRestConfigMapper ),
504+ )
505+ if err != nil {
506+ setupLog .Error (err , "unable to config for creating helm client" )
507+ return err
508+ }
509+
510+ acg , err := action .NewWrappedActionClientGetter (cfgGetter ,
511+ helmclient .WithFailureRollbacks (false ),
512+ )
513+ if err != nil {
514+ setupLog .Error (err , "unable to create helm client" )
515+ return err
516+ }
517+
518+ // determine if PreAuthorizer should be enabled based on feature gate
519+ var preAuth authorization.PreAuthorizer
520+ if features .OperatorControllerFeatureGate .Enabled (features .PreflightPermissions ) {
521+ preAuth = authorization .NewRBACPreAuthorizer (mgr .GetClient ())
522+ }
523+
524+ cm := contentmanager .NewManager (clientRestConfigMapper , mgr .GetConfig (), mgr .GetRESTMapper ())
525+ err = clusterExtensionFinalizers .Register (controllers .ClusterExtensionCleanupContentManagerCacheFinalizer , finalizers .FinalizerFunc (func (ctx context.Context , obj client.Object ) (crfinalizer.Result , error ) {
526+ ext := obj .(* ocv1.ClusterExtension )
527+ err := cm .Delete (ext )
528+ return crfinalizer.Result {}, err
529+ }))
530+ if err != nil {
531+ setupLog .Error (err , "unable to register content manager cleanup finalizer" )
532+ return err
533+ }
534+ // now initialize the helmApplier, assigning the potentially nil preAuth
535+ ceReconciler .Applier = & applier.Helm {
536+ ActionClientGetter : acg ,
537+ Preflights : preflights ,
538+ BundleToHelmChartConverter : & convert.BundleToHelmChartConverter {
539+ BundleRenderer : registryv1 .Renderer ,
540+ CertificateProvider : certProvider ,
541+ IsWebhookSupportEnabled : certProvider != nil ,
542+ },
543+ HelmReleaseToObjectsConverter : & applier.HelmReleaseToObjectsConverter {},
544+ PreAuthorizer : preAuth ,
545+ Watcher : ceController ,
546+ Manager : cm ,
547+ }
548+ ceReconciler .RevisionStatesGetter = & controllers.HelmRevisionStatesGetter {ActionClientGetter : acg }
553549 }
554550
555551 if err = (& controllers.ClusterCatalogReconciler {
0 commit comments