Skip to content

Commit 985569b

Browse files
committed
builder: return error when multiple reconcilers are set
1 parent b1d6919 commit 985569b

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

pkg/builder/controller.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,9 @@ func (blder *Builder) doController(r reconcile.Reconciler) error {
344344
globalOpts := blder.mgr.GetControllerOptions()
345345

346346
ctrlOptions := blder.ctrlOptions
347+
if ctrlOptions.Reconciler != nil && r != nil {
348+
return errors.New("reconciler was set via WithOptions() and via Build() or Complete()")
349+
}
347350
if ctrlOptions.Reconciler == nil {
348351
ctrlOptions.Reconciler = r
349352
}

pkg/builder/controller_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ var _ = Describe("application", func() {
298298
Expect(instance).NotTo(BeNil())
299299
})
300300

301-
It("should prefer reconciler from options during creation of controller", func() {
301+
It("should not allow multiple reconcilers during creation of controller", func() {
302302
newController = func(name string, mgr manager.Manager, options controller.Options) (controller.Controller, error) {
303303
if options.Reconciler != (typedNoop{}) {
304304
return nil, fmt.Errorf("Custom reconciler expected %T but found %T", typedNoop{}, options.Reconciler)
@@ -315,8 +315,8 @@ var _ = Describe("application", func() {
315315
Owns(&appsv1.ReplicaSet{}).
316316
WithOptions(controller.Options{Reconciler: typedNoop{}}).
317317
Build(noop)
318-
Expect(err).NotTo(HaveOccurred())
319-
Expect(instance).NotTo(BeNil())
318+
Expect(err).To(HaveOccurred())
319+
Expect(instance).To(BeNil())
320320
})
321321

322322
It("should allow multiple controllers for the same kind", func() {

0 commit comments

Comments
 (0)