Skip to content

Commit 753b14a

Browse files
committed
create function to add to priority to not repeat logic
Signed-off-by: Troy Connor <[email protected]>
1 parent cca9e85 commit 753b14a

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

pkg/handler/enqueue.go

+3-15
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,7 @@ func (e *TypedEnqueueRequestForObject[T]) Create(ctx context.Context, evt event.
6464
q.Add(item)
6565
return
6666
}
67-
var priority int
68-
if isObjectUnchanged(evt) {
69-
priority = LowPriority
70-
}
71-
priorityQueue.AddWithOpts(priorityqueue.AddOpts{Priority: priority}, item)
67+
addToPriorityQueueCreate(priorityQueue, evt, item)
7268
}
7369

7470
// Update implements EventHandler.
@@ -85,11 +81,7 @@ func (e *TypedEnqueueRequestForObject[T]) Update(ctx context.Context, evt event.
8581
q.Add(item)
8682
return
8783
}
88-
var priority int
89-
if evt.ObjectOld.GetResourceVersion() == evt.ObjectNew.GetResourceVersion() {
90-
priority = LowPriority
91-
}
92-
priorityQueue.AddWithOpts(priorityqueue.AddOpts{Priority: priority}, item)
84+
addToPriorityQueueUpdate(priorityQueue, evt, item)
9385
case !isNil(evt.ObjectOld):
9486
item := reconcile.Request{NamespacedName: types.NamespacedName{
9587
Name: evt.ObjectOld.GetName(),
@@ -101,11 +93,7 @@ func (e *TypedEnqueueRequestForObject[T]) Update(ctx context.Context, evt event.
10193
q.Add(item)
10294
return
10395
}
104-
var priority int
105-
if evt.ObjectOld.GetResourceVersion() == evt.ObjectNew.GetResourceVersion() {
106-
priority = LowPriority
107-
}
108-
priorityQueue.AddWithOpts(priorityqueue.AddOpts{Priority: priority}, item)
96+
addToPriorityQueueUpdate(priorityQueue, evt, item)
10997
default:
11098
enqueueLog.Error(nil, "UpdateEvent received with no metadata", "event", evt)
11199
}

pkg/handler/enqueue_owner.go

+11
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"k8s.io/apimachinery/pkg/types"
2828
"k8s.io/client-go/util/workqueue"
2929
"sigs.k8s.io/controller-runtime/pkg/client"
30+
"sigs.k8s.io/controller-runtime/pkg/controller/priorityqueue"
3031
"sigs.k8s.io/controller-runtime/pkg/event"
3132
logf "sigs.k8s.io/controller-runtime/pkg/internal/log"
3233
"sigs.k8s.io/controller-runtime/pkg/reconcile"
@@ -109,6 +110,11 @@ func (e *enqueueRequestForOwner[object]) Create(ctx context.Context, evt event.T
109110
reqs := map[reconcile.Request]empty{}
110111
e.getOwnerReconcileRequest(evt.Object, reqs)
111112
for req := range reqs {
113+
priorityQueue, isPriorityQueue := q.(priorityqueue.PriorityQueue[reconcile.Request])
114+
if isPriorityQueue {
115+
addToPriorityQueueCreate(priorityQueue, evt, req)
116+
continue
117+
}
112118
q.Add(req)
113119
}
114120
}
@@ -119,6 +125,11 @@ func (e *enqueueRequestForOwner[object]) Update(ctx context.Context, evt event.T
119125
e.getOwnerReconcileRequest(evt.ObjectOld, reqs)
120126
e.getOwnerReconcileRequest(evt.ObjectNew, reqs)
121127
for req := range reqs {
128+
priorityQueue, isPriorityQueue := q.(priorityqueue.PriorityQueue[reconcile.Request])
129+
if isPriorityQueue {
130+
addToPriorityQueueUpdate(priorityQueue, evt, req)
131+
continue
132+
}
122133
q.Add(req)
123134
}
124135
}

pkg/handler/eventhandler.go

+20
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,23 @@ func (w workqueueWithCustomAddFunc[request]) Add(item request) {
199199
func isObjectUnchanged[object client.Object](e event.TypedCreateEvent[object]) bool {
200200
return e.Object.GetCreationTimestamp().Time.Before(time.Now().Add(-time.Minute))
201201
}
202+
203+
// addToPriorityQueueCreate adds the reconcile.Request to the priorityqueue in the handler
204+
// for Create requests if and only if the workqueue being used is of type priorityqueue.PriorityQueue[reconcile.Request]
205+
func addToPriorityQueueCreate[T client.Object](q priorityqueue.PriorityQueue[reconcile.Request], evt event.TypedCreateEvent[T], item reconcile.Request) {
206+
var priority int
207+
if isObjectUnchanged(evt) {
208+
priority = LowPriority
209+
}
210+
q.AddWithOpts(priorityqueue.AddOpts{Priority: priority}, item)
211+
}
212+
213+
// addToPriorityQueueUpdate adds the reconcile.Request to the priorityqueue in the handler
214+
// for Update requests if and only if the workqueue being used is of type priorityqueue.PriorityQueue[reconcile.Request]
215+
func addToPriorityQueueUpdate[T client.Object](q priorityqueue.PriorityQueue[reconcile.Request], evt event.TypedUpdateEvent[T], item reconcile.Request) {
216+
var priority int
217+
if evt.ObjectOld.GetResourceVersion() == evt.ObjectNew.GetResourceVersion() {
218+
priority = LowPriority
219+
}
220+
q.AddWithOpts(priorityqueue.AddOpts{Priority: priority}, item)
221+
}

0 commit comments

Comments
 (0)