Skip to content

Commit 08a7dcb

Browse files
committed
Move validation error handling
1 parent cdde573 commit 08a7dcb

File tree

2 files changed

+32
-22
lines changed

2 files changed

+32
-22
lines changed

internal/reconciler/implementation.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@ func (r *Implementation) Reconcile(ctx context.Context, req reconcile.Request) (
103103
validationError = r.cfg.WebhookValidator(obj)
104104
}
105105

106+
if validationError != nil {
107+
logger.Error(validationError, webhookValidationErrorLogMsg)
108+
r.cfg.EventRecorder.Eventf(obj, apiv1.EventTypeWarning, "Rejected",
109+
webhookValidationErrorLogMsg+"; validation error: %v", validationError)
110+
}
111+
106112
var e interface{}
107113
var op string
108114

@@ -127,12 +133,6 @@ func (r *Implementation) Reconcile(ctx context.Context, req reconcile.Request) (
127133
case r.cfg.EventCh <- e:
128134
}
129135

130-
if validationError != nil {
131-
logger.Error(validationError, webhookValidationErrorLogMsg)
132-
r.cfg.EventRecorder.Eventf(obj, apiv1.EventTypeWarning, "Rejected",
133-
webhookValidationErrorLogMsg+"; validation error: %v", validationError)
134-
}
135-
136136
logger.Info(fmt.Sprintf("%s the resource", op))
137137

138138
return reconcile.Result{}, nil

internal/reconciler/implementation_test.go

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ var _ = Describe("Reconciler", func() {
5656
Name: hr2NsName.Name,
5757
},
5858
}
59+
60+
hr2IsInvalidValidator = func(obj client.Object) error {
61+
if client.ObjectKeyFromObject(obj) == hr2NsName {
62+
return errors.New("test")
63+
}
64+
return nil
65+
}
5966
)
6067

6168
getReturnsHRForHR := func(hr *v1beta1.HTTPRoute) getFunc {
@@ -207,16 +214,11 @@ var _ = Describe("Reconciler", func() {
207214
fakeRecorder = &reconcilerfakes.FakeEventRecorder{}
208215

209216
rec = reconciler.NewImplementation(reconciler.Config{
210-
Getter: fakeGetter,
211-
ObjectType: &v1beta1.HTTPRoute{},
212-
EventCh: eventCh,
213-
WebhookValidator: func(obj client.Object) error {
214-
if client.ObjectKeyFromObject(obj) == hr2NsName {
215-
return errors.New("test")
216-
}
217-
return nil
218-
},
219-
EventRecorder: fakeRecorder,
217+
Getter: fakeGetter,
218+
ObjectType: &v1beta1.HTTPRoute{},
219+
EventCh: eventCh,
220+
WebhookValidator: hr2IsInvalidValidator,
221+
EventRecorder: fakeRecorder,
220222
})
221223
})
222224

@@ -250,11 +252,17 @@ var _ = Describe("Reconciler", func() {
250252
})
251253

252254
Describe("Edge cases", func() {
255+
var fakeRecorder *reconcilerfakes.FakeEventRecorder
256+
253257
BeforeEach(func() {
258+
fakeRecorder = &reconcilerfakes.FakeEventRecorder{}
259+
254260
rec = reconciler.NewImplementation(reconciler.Config{
255-
Getter: fakeGetter,
256-
ObjectType: &v1beta1.HTTPRoute{},
257-
EventCh: eventCh,
261+
Getter: fakeGetter,
262+
ObjectType: &v1beta1.HTTPRoute{},
263+
EventCh: eventCh,
264+
WebhookValidator: hr2IsInvalidValidator,
265+
EventRecorder: fakeRecorder,
258266
})
259267
})
260268

@@ -269,7 +277,7 @@ var _ = Describe("Reconciler", func() {
269277
})
270278

271279
DescribeTable("Reconciler should not block when ctx is done",
272-
func(get getFunc, nsname types.NamespacedName) {
280+
func(get getFunc, invalidResourceEventCount int, nsname types.NamespacedName) {
273281
fakeGetter.GetCalls(get)
274282

275283
ctx, cancel := context.WithCancel(context.Background())
@@ -279,9 +287,11 @@ var _ = Describe("Reconciler", func() {
279287

280288
Consistently(eventCh).ShouldNot(Receive())
281289
Expect(resultCh).To(Receive(Equal(result{err: nil, reconcileResult: reconcile.Result{}})))
290+
Expect(fakeRecorder.EventfCallCount()).To(Equal(invalidResourceEventCount))
282291
},
283-
Entry("Upserting HTTPRoute", getReturnsHRForHR(hr1), hr1NsName),
284-
Entry("Deleting HTTPRoute", getReturnsNotFoundErrorForHR(hr1), hr1NsName),
292+
Entry("Upserting valid HTTPRoute", getReturnsHRForHR(hr1), 0, hr1NsName),
293+
Entry("Deleting valid HTTPRoute", getReturnsNotFoundErrorForHR(hr1), 0, hr1NsName),
294+
Entry("Upserting invalid HTTPRoute", getReturnsHRForHR(hr2), 1, hr2NsName),
285295
)
286296
})
287297
})

0 commit comments

Comments
 (0)