@@ -22,6 +22,13 @@ import (
22
22
"errors"
23
23
"flag"
24
24
"fmt"
25
+ "github.com/operator-framework/operator-controller/internal/operator-controller/authorization"
26
+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/convert"
27
+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/preflights/crdupgradesafety"
28
+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
29
+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/certproviders"
30
+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1"
31
+ apiextensionsv1client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
25
32
"net/http"
26
33
"os"
27
34
"path/filepath"
@@ -410,50 +417,47 @@ func run() error {
410
417
},
411
418
}
412
419
413
- // aeClient, err := apiextensionsv1client.NewForConfig(mgr.GetConfig())
414
- // if err != nil {
415
- // setupLog.Error(err, "unable to create apiextensions client")
416
- // return err
417
- // }
418
-
419
- // preflights := []applier.Preflight{
420
- // crdupgradesafety.NewPreflight(aeClient.CustomResourceDefinitions()),
421
- // }
422
-
423
- // // determine if PreAuthorizer should be enabled based on feature gate
424
- // var preAuth authorization.PreAuthorizer
425
- // if features.OperatorControllerFeatureGate.Enabled(features.PreflightPermissions) {
426
- // preAuth = authorization.NewRBACPreAuthorizer(mgr.GetClient())
427
- // }
428
-
429
- boxcutterApplier := & applier.Boxcutter {
430
- Client : mgr .GetClient (),
431
- Scheme : mgr .GetScheme (),
432
- }
433
-
434
- // determine if a certificate provider should be set in the bundle renderer and feature support for the provider
435
- // based on the feature flag
436
- // var certProvider render.CertificateProvider
437
- // var isWebhookSupportEnabled bool
438
- // if features.OperatorControllerFeatureGate.Enabled(features.WebhookProviderCertManager) {
439
- // certProvider = certproviders.CertManagerCertificateProvider{}
440
- // isWebhookSupportEnabled = true
441
- // } else if features.OperatorControllerFeatureGate.Enabled(features.WebhookProviderOpenshiftServiceCA) {
442
- // certProvider = certproviders.OpenshiftServiceCaCertificateProvider{}
443
- // isWebhookSupportEnabled = true
444
- // }
445
-
446
- // now initialize the helmApplier, assigning the potentially nil preAuth
447
- // helmApplier := &applier.Helm{
448
- // ActionClientGetter: acg,
449
- // Preflights: preflights,
450
- // BundleToHelmChartConverter: &convert.BundleToHelmChartConverter{
451
- // BundleRenderer: registryv1.Renderer,
452
- // CertificateProvider: certProvider,
453
- // IsWebhookSupportEnabled: isWebhookSupportEnabled,
454
- // },
455
- // PreAuthorizer: preAuth,
456
- // }
420
+ aeClient , err := apiextensionsv1client .NewForConfig (mgr .GetConfig ())
421
+ if err != nil {
422
+ setupLog .Error (err , "unable to create apiextensions client" )
423
+ return err
424
+ }
425
+
426
+ preflights := []applier.Preflight {
427
+ crdupgradesafety .NewPreflight (aeClient .CustomResourceDefinitions ()),
428
+ }
429
+
430
+ // determine if PreAuthorizer should be enabled based on feature gate
431
+ var preAuth authorization.PreAuthorizer
432
+ if features .OperatorControllerFeatureGate .Enabled (features .PreflightPermissions ) {
433
+ preAuth = authorization .NewRBACPreAuthorizer (mgr .GetClient ())
434
+ }
435
+
436
+ // create applier
437
+ var ctrlBuilderOpts []controllers.ControllerBuilderOption
438
+ var extApplier controllers.Applier
439
+
440
+ if features .OperatorControllerFeatureGate .Enabled (features .BoxcutterRuntime ) {
441
+ // TODO: add support for preflight checks
442
+ extApplier = & applier.Boxcutter {
443
+ Client : mgr .GetClient (),
444
+ Scheme : mgr .GetScheme (),
445
+ }
446
+ ctrlBuilderOpts = append (ctrlBuilderOpts , controllers .WithOwns (& ocv1.ClusterExtensionRevision {}))
447
+ } else {
448
+ // now initialize the helmApplier, assigning the potentially nil preAuth
449
+ certProvider := getCertificateProvider ()
450
+ extApplier = & applier.Helm {
451
+ ActionClientGetter : acg ,
452
+ Preflights : preflights ,
453
+ BundleToHelmChartConverter : & convert.BundleToHelmChartConverter {
454
+ BundleRenderer : registryv1 .Renderer ,
455
+ CertificateProvider : certProvider ,
456
+ IsWebhookSupportEnabled : certProvider != nil ,
457
+ },
458
+ PreAuthorizer : preAuth ,
459
+ }
460
+ }
457
461
458
462
cm := contentmanager .NewManager (clientRestConfigMapper , mgr .GetConfig (), mgr .GetRESTMapper ())
459
463
err = clusterExtensionFinalizers .Register (controllers .ClusterExtensionCleanupContentManagerCacheFinalizer , finalizers .FinalizerFunc (func (ctx context.Context , obj client.Object ) (crfinalizer.Result , error ) {
@@ -505,18 +509,17 @@ func run() error {
505
509
setupLog .Error (err , "unable to register AccessManager" )
506
510
return err
507
511
}
508
- // Boxcutter
509
512
510
513
if err = (& controllers.ClusterExtensionReconciler {
511
514
Client : cl ,
512
515
Resolver : resolver ,
513
516
ImageCache : imageCache ,
514
517
ImagePuller : imagePuller ,
515
- Applier : boxcutterApplier ,
518
+ Applier : extApplier ,
516
519
InstalledBundleGetter : & controllers.DefaultInstalledBundleGetter {ActionClientGetter : acg },
517
520
Finalizers : clusterExtensionFinalizers ,
518
521
Manager : cm ,
519
- }).SetupWithManager (mgr ); err != nil {
522
+ }).SetupWithManager (mgr , ctrlBuilderOpts ... ); err != nil {
520
523
setupLog .Error (err , "unable to create controller" , "controller" , "ClusterExtension" )
521
524
return err
522
525
}
@@ -577,6 +580,15 @@ func run() error {
577
580
return nil
578
581
}
579
582
583
+ func getCertificateProvider () render.CertificateProvider {
584
+ if features .OperatorControllerFeatureGate .Enabled (features .WebhookProviderCertManager ) {
585
+ return certproviders.CertManagerCertificateProvider {}
586
+ } else if features .OperatorControllerFeatureGate .Enabled (features .WebhookProviderOpenshiftServiceCA ) {
587
+ return certproviders.OpenshiftServiceCaCertificateProvider {}
588
+ }
589
+ return nil
590
+ }
591
+
580
592
func main () {
581
593
if err := operatorControllerCmd .Execute (); err != nil {
582
594
fmt .Fprintf (os .Stderr , "Error: %v\n " , err )
0 commit comments