Skip to content

Commit 7365a5b

Browse files
author
Per Goncalves da Silva
committed
Add unit tests
Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
1 parent 64838b2 commit 7365a5b

File tree

8 files changed

+1588
-275
lines changed

8 files changed

+1588
-275
lines changed

cmd/operator-controller/main.go

Lines changed: 69 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)