Skip to content

Commit 4faad66

Browse files
authored
Add delete predicate for gateway class (#1696)
Problem: The controller reconciles delete events for GatewayClasses that are not owned by NGF. Solution: Add a delete function to the GatewayClass predicate that ignores delete events for GatewayClasses with the wrong controller name.
1 parent 03e24fe commit 4faad66

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

internal/framework/controller/predicate/gatewayclass.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,17 @@ func (gcp GatewayClassPredicate) Update(e event.UpdateEvent) bool {
4545

4646
return false
4747
}
48+
49+
// Delete implements default DeleteEvent filter for validating a GatewayClass controllerName.
50+
func (gcp GatewayClassPredicate) Delete(e event.DeleteEvent) bool {
51+
if e.Object == nil {
52+
return false
53+
}
54+
55+
gc, ok := e.Object.(*v1.GatewayClass)
56+
if !ok {
57+
return false
58+
}
59+
60+
return string(gc.Spec.ControllerName) == gcp.ControllerName
61+
}

internal/framework/controller/predicate/gatewayclass_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ func TestGatewayClassPredicate(t *testing.T) {
2121

2222
g.Expect(p.Create(event.CreateEvent{Object: gc})).To(BeTrue())
2323
g.Expect(p.Update(event.UpdateEvent{ObjectNew: gc})).To(BeTrue())
24+
g.Expect(p.Delete(event.DeleteEvent{Object: gc})).To(BeTrue())
2425

2526
gc2 := &v1.GatewayClass{
2627
Spec: v1.GatewayClassSpec{
@@ -31,4 +32,7 @@ func TestGatewayClassPredicate(t *testing.T) {
3132
g.Expect(p.Update(event.UpdateEvent{ObjectOld: gc, ObjectNew: gc2})).To(BeTrue())
3233
g.Expect(p.Update(event.UpdateEvent{ObjectOld: gc2, ObjectNew: gc})).To(BeTrue())
3334
g.Expect(p.Update(event.UpdateEvent{ObjectOld: gc2, ObjectNew: gc2})).To(BeFalse())
35+
g.Expect(p.Delete(event.DeleteEvent{Object: nil})).To(BeFalse())
36+
g.Expect(p.Delete(event.DeleteEvent{Object: gc2})).To(BeFalse())
37+
g.Expect(p.Delete(event.DeleteEvent{Object: &v1.HTTPRoute{}})).To(BeFalse())
3438
}

0 commit comments

Comments
 (0)