@@ -31,6 +31,7 @@ import (
31
31
"github.com/containers/image/v5/types"
32
32
"github.com/spf13/cobra"
33
33
rbacv1 "k8s.io/api/rbac/v1"
34
+ apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
34
35
apiextensionsv1client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
35
36
k8slabels "k8s.io/apimachinery/pkg/labels"
36
37
"k8s.io/apimachinery/pkg/selection"
@@ -438,9 +439,17 @@ func run() error {
438
439
439
440
if features .OperatorControllerFeatureGate .Enabled (features .BoxcutterRuntime ) {
440
441
// TODO: add support for preflight checks
442
+ // TODO: better scheme handling - which types do we want to support?
443
+ _ = apiextensionsv1 .AddToScheme (mgr .GetScheme ())
441
444
extApplier = & applier.Boxcutter {
442
445
Client : mgr .GetClient (),
443
446
Scheme : mgr .GetScheme (),
447
+ RevisionGenerator : & applier.SimpleRevisionGenerator {
448
+ Scheme : mgr .GetScheme (),
449
+ BundleRenderer : & applier.RegistryV1BundleRenderer {
450
+ BundleRenderer : registryv1 .Renderer ,
451
+ },
452
+ },
444
453
}
445
454
ctrlBuilderOpts = append (ctrlBuilderOpts , controllers .WithOwns (& ocv1.ClusterExtensionRevision {}))
446
455
} else {
@@ -469,46 +478,6 @@ func run() error {
469
478
return err
470
479
}
471
480
472
- // Boxcutter
473
- discoveryClient , err := discovery .NewDiscoveryClientForConfig (restConfig )
474
- if err != nil {
475
- setupLog .Error (err , "unable to create discovery client" )
476
- return err
477
- }
478
- mapFunc := func (ctx context.Context , ce * ocv1.ClusterExtension , c * rest.Config , o crcache.Options ) (* rest.Config , crcache.Options , error ) {
479
- saKey := client.ObjectKey {
480
- Name : ce .Spec .ServiceAccount .Name ,
481
- Namespace : ce .Spec .Namespace ,
482
- }
483
- saConfig := rest .AnonymousClientConfig (c )
484
- saConfig .Wrap (func (rt http.RoundTripper ) http.RoundTripper {
485
- return & authentication.TokenInjectingRoundTripper {
486
- Tripper : rt ,
487
- TokenGetter : tokenGetter ,
488
- Key : saKey ,
489
- }
490
- })
491
-
492
- // Cache scoping
493
- req1 , err := k8slabels .NewRequirement (
494
- controllers .ClusterExtensionRevisionOwnerLabel , selection .Equals , []string {ce .Name })
495
- if err != nil {
496
- return nil , o , err
497
- }
498
- o .DefaultLabelSelector = k8slabels .NewSelector ().Add (* req1 )
499
-
500
- return saConfig , o , nil
501
- }
502
-
503
- accessManager := managedcache .NewObjectBoundAccessManager (
504
- ctrl .Log .WithName ("accessmanager" ), mapFunc , restConfig , crcache.Options {
505
- Scheme : mgr .GetScheme (), Mapper : mgr .GetRESTMapper (),
506
- })
507
- if err := mgr .Add (accessManager ); err != nil {
508
- setupLog .Error (err , "unable to register AccessManager" )
509
- return err
510
- }
511
-
512
481
if err = (& controllers.ClusterExtensionReconciler {
513
482
Client : cl ,
514
483
Resolver : resolver ,
@@ -524,12 +493,54 @@ func run() error {
524
493
}
525
494
526
495
if features .OperatorControllerFeatureGate .Enabled (features .BoxcutterRuntime ) {
496
+ // Boxcutter
497
+ discoveryClient , err := discovery .NewDiscoveryClientForConfig (restConfig )
498
+ if err != nil {
499
+ setupLog .Error (err , "unable to create discovery client" )
500
+ return err
501
+ }
502
+ mapFunc := func (ctx context.Context , ce * ocv1.ClusterExtension , c * rest.Config , o crcache.Options ) (* rest.Config , crcache.Options , error ) {
503
+ saKey := client.ObjectKey {
504
+ Name : ce .Spec .ServiceAccount .Name ,
505
+ Namespace : ce .Spec .Namespace ,
506
+ }
507
+ saConfig := rest .AnonymousClientConfig (c )
508
+ saConfig .Wrap (func (rt http.RoundTripper ) http.RoundTripper {
509
+ return & authentication.TokenInjectingRoundTripper {
510
+ Tripper : rt ,
511
+ TokenGetter : tokenGetter ,
512
+ Key : saKey ,
513
+ }
514
+ })
515
+
516
+ // Cache scoping
517
+ req1 , err := k8slabels .NewRequirement (
518
+ controllers .ClusterExtensionRevisionOwnerLabel , selection .Equals , []string {ce .Name })
519
+ if err != nil {
520
+ return nil , o , err
521
+ }
522
+ o .DefaultLabelSelector = k8slabels .NewSelector ().Add (* req1 )
523
+
524
+ return saConfig , o , nil
525
+ }
526
+
527
+ accessManager := managedcache .NewObjectBoundAccessManager (
528
+ ctrl .Log .WithName ("accessmanager" ), mapFunc , restConfig , crcache.Options {
529
+ Scheme : mgr .GetScheme (), Mapper : mgr .GetRESTMapper (),
530
+ })
531
+ if err := mgr .Add (accessManager ); err != nil {
532
+ setupLog .Error (err , "unable to register AccessManager" )
533
+ return err
534
+ }
535
+
527
536
if err = (& controllers.ClusterExtensionRevisionReconciler {
528
- Client : cl ,
529
- AccessManager : accessManager ,
530
- Scheme : mgr .GetScheme (),
531
- RestMapper : mgr .GetRESTMapper (),
532
- DiscoveryClient : discoveryClient ,
537
+ Client : cl ,
538
+ AccessManager : accessManager ,
539
+ RevisionEngineGetter : controllers.OLMRevisionEngineGetter {
540
+ Scheme : mgr .GetScheme (),
541
+ RestMapper : mgr .GetRESTMapper (),
542
+ DiscoveryClient : discoveryClient ,
543
+ },
533
544
}).SetupWithManager (mgr ); err != nil {
534
545
setupLog .Error (err , "unable to create controller" , "controller" , "ClusterExtension" )
535
546
return err
0 commit comments