Skip to content

Commit aeeaeef

Browse files
committed
Don't add finalizer if Workload doesn't have TopologyAssignment.
1 parent 2fc42a2 commit aeeaeef

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

slice/internal/controller/workload_controller.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,22 @@ func (r *WorkloadReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
8989
}
9090

9191
func (r *WorkloadReconciler) shouldFinalize(wl *kueue.Workload) bool {
92-
return !wl.DeletionTimestamp.IsZero() || workload.IsFinished(wl) || workload.IsEvicted(wl) || !workload.IsActive(wl)
92+
return !wl.DeletionTimestamp.IsZero() ||
93+
workload.IsFinished(wl) ||
94+
workload.IsEvicted(wl) ||
95+
!workload.IsActive(wl) ||
96+
!r.hasTopologyAssignment(wl)
97+
}
98+
99+
func (r *WorkloadReconciler) hasTopologyAssignment(wl *kueue.Workload) bool {
100+
if wl.Status.Admission != nil && wl.Status.Admission.PodSetAssignments != nil {
101+
for _, psa := range wl.Status.Admission.PodSetAssignments {
102+
if psa.TopologyAssignment != nil {
103+
return true
104+
}
105+
}
106+
}
107+
return false
93108
}
94109

95110
func (r *WorkloadReconciler) newEmptySlice(wl *kueue.Workload) *v1alpha1.Slice {
@@ -149,13 +164,6 @@ func (r *WorkloadReconciler) createSliceIfNotExist(ctx context.Context, wl *kueu
149164
return err
150165
}
151166

152-
// We should wait for TopologyAssignments.
153-
if len(slice.Spec.NodeSelector) == 0 {
154-
log := ctrl.LoggerFrom(ctx)
155-
log.V(2).Info("Workload does not have TopologyAssignments. Skipping Slice creation for now.")
156-
return nil
157-
}
158-
159167
return r.client.Create(ctx, slice)
160168
}
161169

slice/internal/controller/workload_controller_test.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,19 @@ func TestWorkloadReconciler(t *testing.T) {
9090
slice: baseSliceWrapper.DeepCopy(),
9191
wantWorkloads: []kueue.Workload{*baseWorkloadWrapper.Clone().Active(false).Obj()},
9292
},
93-
"should add a finalizer but shouldn't create a Slice because there's no TopologyAssignment yet": {
94-
request: baseRequest,
95-
workload: baseWorkloadWrapper.Clone().UID(types.UID(baseWorkloadName)).Obj(),
93+
"should delete finalizer because workload doesn't have PodSetAssignment": {
94+
request: baseRequest,
95+
workload: baseWorkloadWrapper.Clone().Obj(),
96+
wantWorkloads: []kueue.Workload{*baseWorkloadWrapper.Clone().Obj()},
97+
},
98+
"should delete finalizer because workload doesn't have TopologyAssignment": {
99+
request: baseRequest,
100+
workload: baseWorkloadWrapper.Clone().
101+
PodSetAssignments(utiltesting.MakePodSetAssignment("psa1").Obj()).
102+
Obj(),
96103
wantWorkloads: []kueue.Workload{
97104
*baseWorkloadWrapper.Clone().
98-
UID(types.UID(baseWorkloadName)).
99-
Finalizers(CleanupSliceFinalizerName).
105+
PodSetAssignments(utiltesting.MakePodSetAssignment("psa1").Obj()).
100106
Obj(),
101107
},
102108
},

0 commit comments

Comments
 (0)