Skip to content

Commit e644e50

Browse files
authored
Merge pull request #2415 from sbueringer/pr-minor-builder-multi
⚠ builder: return error when multiple reconcilers are set
2 parents 2596de1 + 985569b commit e644e50

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
@@ -343,6 +343,9 @@ func (blder *Builder) doController(r reconcile.Reconciler) error {
343343
globalOpts := blder.mgr.GetControllerOptions()
344344

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

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)