Skip to content

Commit 201ac3b

Browse files
Prefer reconciler from controller.Options
1 parent add0b64 commit 201ac3b

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

pkg/builder/controller.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,9 @@ func (blder *Builder) doController(r reconcile.Reconciler) error {
245245
return err
246246
}
247247
ctrlOptions := blder.ctrlOptions
248-
ctrlOptions.Reconciler = r
248+
if ctrlOptions.Reconciler == nil {
249+
ctrlOptions.Reconciler = r
250+
}
249251
blder.ctrl, err = newController(name, blder.mgr, ctrlOptions)
250252
return err
251253
}

pkg/builder/controller_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ import (
4141
"sigs.k8s.io/controller-runtime/pkg/source"
4242
)
4343

44+
type typedNoop struct{}
45+
46+
func (typedNoop) Reconcile(reconcile.Request) (reconcile.Result, error) {
47+
return reconcile.Result{}, nil
48+
}
49+
4450
var _ = Describe("application", func() {
4551
var stop chan struct{}
4652

@@ -151,6 +157,27 @@ var _ = Describe("application", func() {
151157
Expect(instance).NotTo(BeNil())
152158
})
153159

160+
It("should prefer reconciler from options during creation of controller", func() {
161+
newController = func(name string, mgr manager.Manager, options controller.Options) (controller.Controller, error) {
162+
if options.Reconciler != (typedNoop{}) {
163+
return nil, fmt.Errorf("Custom reconciler expected %T but found %T", typedNoop{}, options.Reconciler)
164+
}
165+
return controller.New(name, mgr, options)
166+
}
167+
168+
By("creating a controller manager")
169+
m, err := manager.New(cfg, manager.Options{})
170+
Expect(err).NotTo(HaveOccurred())
171+
172+
instance, err := ControllerManagedBy(m).
173+
For(&appsv1.ReplicaSet{}).
174+
Owns(&appsv1.ReplicaSet{}).
175+
WithOptions(controller.Options{Reconciler: typedNoop{}}).
176+
Build(noop)
177+
Expect(err).NotTo(HaveOccurred())
178+
Expect(instance).NotTo(BeNil())
179+
})
180+
154181
It("should allow multiple controllers for the same kind", func() {
155182
By("creating a controller manager")
156183
m, err := manager.New(cfg, manager.Options{})

0 commit comments

Comments
 (0)