@@ -22,13 +22,6 @@ import (
2222 "errors"
2323 "flag"
2424 "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"
3225 "net/http"
3326 "os"
3427 "path/filepath"
@@ -38,7 +31,8 @@ import (
3831 "github.com/containers/image/v5/types"
3932 "github.com/spf13/cobra"
4033 rbacv1 "k8s.io/api/rbac/v1"
41- "k8s.io/apimachinery/pkg/labels"
34+ apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
35+ apiextensionsv1client "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
4236 k8slabels "k8s.io/apimachinery/pkg/labels"
4337 "k8s.io/apimachinery/pkg/selection"
4438 k8stypes "k8s.io/apimachinery/pkg/types"
@@ -66,13 +60,19 @@ import (
6660 "github.com/operator-framework/operator-controller/internal/operator-controller/action"
6761 "github.com/operator-framework/operator-controller/internal/operator-controller/applier"
6862 "github.com/operator-framework/operator-controller/internal/operator-controller/authentication"
63+ "github.com/operator-framework/operator-controller/internal/operator-controller/authorization"
6964 "github.com/operator-framework/operator-controller/internal/operator-controller/catalogmetadata/cache"
7065 catalogclient "github.com/operator-framework/operator-controller/internal/operator-controller/catalogmetadata/client"
7166 "github.com/operator-framework/operator-controller/internal/operator-controller/contentmanager"
7267 "github.com/operator-framework/operator-controller/internal/operator-controller/controllers"
7368 "github.com/operator-framework/operator-controller/internal/operator-controller/features"
7469 "github.com/operator-framework/operator-controller/internal/operator-controller/finalizers"
7570 "github.com/operator-framework/operator-controller/internal/operator-controller/resolve"
71+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/convert"
72+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/preflights/crdupgradesafety"
73+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
74+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/certproviders"
75+ "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1"
7676 "github.com/operator-framework/operator-controller/internal/operator-controller/scheme"
7777 sharedcontrollers "github.com/operator-framework/operator-controller/internal/shared/controllers"
7878 fsutil "github.com/operator-framework/operator-controller/internal/shared/util/fs"
@@ -439,9 +439,17 @@ func run() error {
439439
440440 if features .OperatorControllerFeatureGate .Enabled (features .BoxcutterRuntime ) {
441441 // TODO: add support for preflight checks
442+ // TODO: better scheme handling - which types do we want to support?
443+ _ = apiextensionsv1 .AddToScheme (mgr .GetScheme ())
442444 extApplier = & applier.Boxcutter {
443445 Client : mgr .GetClient (),
444446 Scheme : mgr .GetScheme (),
447+ RevisionGenerator : & applier.SimpleRevisionGenerator {
448+ Scheme : mgr .GetScheme (),
449+ BundleRenderer : & applier.RegistryV1BundleRenderer {
450+ BundleRenderer : registryv1 .Renderer ,
451+ },
452+ },
445453 }
446454 ctrlBuilderOpts = append (ctrlBuilderOpts , controllers .WithOwns (& ocv1.ClusterExtensionRevision {}))
447455 } else {
@@ -470,46 +478,6 @@ func run() error {
470478 return err
471479 }
472480
473- // Boxcutter
474- discoveryClient , err := discovery .NewDiscoveryClientForConfig (restConfig )
475- if err != nil {
476- setupLog .Error (err , "unable to create discovery client" )
477- return err
478- }
479- mapFunc := func (ctx context.Context , ce * ocv1.ClusterExtension , c * rest.Config , o crcache.Options ) (* rest.Config , crcache.Options , error ) {
480- saKey := client.ObjectKey {
481- Name : ce .Spec .ServiceAccount .Name ,
482- Namespace : ce .Spec .Namespace ,
483- }
484- saConfig := rest .AnonymousClientConfig (c )
485- saConfig .Wrap (func (rt http.RoundTripper ) http.RoundTripper {
486- return & authentication.TokenInjectingRoundTripper {
487- Tripper : rt ,
488- TokenGetter : tokenGetter ,
489- Key : saKey ,
490- }
491- })
492-
493- // Cache scoping
494- req1 , err := labels .NewRequirement (
495- controllers .ClusterExtensionRevisionOwnerLabel , selection .Equals , []string {ce .Name })
496- if err != nil {
497- return nil , o , err
498- }
499- o .DefaultLabelSelector = labels .NewSelector ().Add (* req1 )
500-
501- return saConfig , o , nil
502- }
503-
504- accessManager := managedcache .NewObjectBoundAccessManager (
505- ctrl .Log .WithName ("accessmanager" ), mapFunc , restConfig , crcache.Options {
506- Scheme : mgr .GetScheme (), Mapper : mgr .GetRESTMapper (),
507- })
508- if err := mgr .Add (accessManager ); err != nil {
509- setupLog .Error (err , "unable to register AccessManager" )
510- return err
511- }
512-
513481 if err = (& controllers.ClusterExtensionReconciler {
514482 Client : cl ,
515483 Resolver : resolver ,
@@ -524,15 +492,59 @@ func run() error {
524492 return err
525493 }
526494
527- if err = (& controllers.ClusterExtensionRevisionReconciler {
528- Client : cl ,
529- AccessManager : accessManager ,
530- Scheme : mgr .GetScheme (),
531- RestMapper : mgr .GetRESTMapper (),
532- DiscoveryClient : discoveryClient ,
533- }).SetupWithManager (mgr ); err != nil {
534- setupLog .Error (err , "unable to create controller" , "controller" , "ClusterExtension" )
535- return err
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+
536+ if err = (& controllers.ClusterExtensionRevisionReconciler {
537+ Client : cl ,
538+ RevisionManager : & controllers.OLMRevisionEngineGetter {
539+ AccessManager : accessManager ,
540+ Scheme : mgr .GetScheme (),
541+ RestMapper : mgr .GetRESTMapper (),
542+ DiscoveryClient : discoveryClient ,
543+ },
544+ }).SetupWithManager (mgr ); err != nil {
545+ setupLog .Error (err , "unable to create controller" , "controller" , "ClusterExtension" )
546+ return err
547+ }
536548 }
537549
538550 if err = (& controllers.ClusterCatalogReconciler {
0 commit comments