@@ -22,13 +22,6 @@ 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"
32
25
"net/http"
33
26
"os"
34
27
"path/filepath"
@@ -38,7 +31,8 @@ import (
38
31
"github.com/containers/image/v5/types"
39
32
"github.com/spf13/cobra"
40
33
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"
42
36
k8slabels "k8s.io/apimachinery/pkg/labels"
43
37
"k8s.io/apimachinery/pkg/selection"
44
38
k8stypes "k8s.io/apimachinery/pkg/types"
@@ -66,13 +60,19 @@ import (
66
60
"github.com/operator-framework/operator-controller/internal/operator-controller/action"
67
61
"github.com/operator-framework/operator-controller/internal/operator-controller/applier"
68
62
"github.com/operator-framework/operator-controller/internal/operator-controller/authentication"
63
+ "github.com/operator-framework/operator-controller/internal/operator-controller/authorization"
69
64
"github.com/operator-framework/operator-controller/internal/operator-controller/catalogmetadata/cache"
70
65
catalogclient "github.com/operator-framework/operator-controller/internal/operator-controller/catalogmetadata/client"
71
66
"github.com/operator-framework/operator-controller/internal/operator-controller/contentmanager"
72
67
"github.com/operator-framework/operator-controller/internal/operator-controller/controllers"
73
68
"github.com/operator-framework/operator-controller/internal/operator-controller/features"
74
69
"github.com/operator-framework/operator-controller/internal/operator-controller/finalizers"
75
70
"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"
76
76
"github.com/operator-framework/operator-controller/internal/operator-controller/scheme"
77
77
sharedcontrollers "github.com/operator-framework/operator-controller/internal/shared/controllers"
78
78
fsutil "github.com/operator-framework/operator-controller/internal/shared/util/fs"
@@ -439,9 +439,17 @@ func run() error {
439
439
440
440
if features .OperatorControllerFeatureGate .Enabled (features .BoxcutterRuntime ) {
441
441
// TODO: add support for preflight checks
442
+ // TODO: better scheme handling - which types do we want to support?
443
+ _ = apiextensionsv1 .AddToScheme (mgr .GetScheme ())
442
444
extApplier = & applier.Boxcutter {
443
445
Client : mgr .GetClient (),
444
446
Scheme : mgr .GetScheme (),
447
+ RevisionGenerator : & applier.SimpleRevisionGenerator {
448
+ Scheme : mgr .GetScheme (),
449
+ BundleRenderer : & applier.RegistryV1BundleRenderer {
450
+ BundleRenderer : registryv1 .Renderer ,
451
+ },
452
+ },
445
453
}
446
454
ctrlBuilderOpts = append (ctrlBuilderOpts , controllers .WithOwns (& ocv1.ClusterExtensionRevision {}))
447
455
} else {
@@ -470,46 +478,6 @@ func run() error {
470
478
return err
471
479
}
472
480
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
-
513
481
if err = (& controllers.ClusterExtensionReconciler {
514
482
Client : cl ,
515
483
Resolver : resolver ,
@@ -524,15 +492,59 @@ func run() error {
524
492
return err
525
493
}
526
494
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
+ }
536
548
}
537
549
538
550
if err = (& controllers.ClusterCatalogReconciler {
0 commit comments