Skip to content

Commit

Permalink
addressed comments
Browse files Browse the repository at this point in the history
  • Loading branch information
vicentefb committed Apr 30, 2024
1 parent bfea73e commit a300db0
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 27 deletions.
47 changes: 26 additions & 21 deletions pkg/controller/core/workload_controller.go
Expand Up @@ -257,6 +257,9 @@ func (r *WorkloadReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
}

func (r *WorkloadReconciler) isScaledDown(wl *kueue.Workload) bool {
if !features.Enabled(features.ResizableJobs) {
return false
}
podSetSize := len(wl.Spec.PodSets)
for i := 1; i < podSetSize; i++ {
if ptr.Deref(wl.Status.Admission.PodSetAssignments[i].Count, 0) > wl.Spec.PodSets[i].Count {
Expand All @@ -267,32 +270,34 @@ func (r *WorkloadReconciler) isScaledDown(wl *kueue.Workload) bool {
}

func (r *WorkloadReconciler) downSizeJobIfNecessary(wl *kueue.Workload, ctx context.Context) error {
statusUpdate := false
updateStatus := false
podSetSize := len(wl.Spec.PodSets)
for i := 1; i < podSetSize; i++ {
if ptr.Deref(wl.Status.Admission.PodSetAssignments[i].Count, 0) > wl.Spec.PodSets[i].Count {
// Get Resource Requests and Usage values
originalResourceRequests := limitrange.TotalRequests(&wl.Spec.PodSets[i].Template.Spec)
currentAssignedResourceUsage := wl.Status.Admission.PodSetAssignments[i].ResourceUsage

diff := ptr.Deref(wl.Status.Admission.PodSetAssignments[i].Count, 0) - wl.Spec.PodSets[i].Count
for k := range currentAssignedResourceUsage {
resourceQuantity := originalResourceRequests[k]
resourceQuantity.Mul(int64(diff))
originalResourceRequests[k] = resourceQuantity

assignedResourceQuantity := currentAssignedResourceUsage[k]
assignedResourceQuantity.Sub(originalResourceRequests[k])
currentAssignedResourceUsage[k] = assignedResourceQuantity
}
if ptr.Deref(wl.Status.Admission.PodSetAssignments[i].Count, 0) <= wl.Spec.PodSets[i].Count {
continue
}
// Get Resource Requests and Usage values
originalResourceRequests := limitrange.TotalRequests(&wl.Spec.PodSets[i].Template.Spec)
currentAssignedResourceUsage := wl.Status.Admission.PodSetAssignments[i].ResourceUsage

diff := ptr.Deref(wl.Status.Admission.PodSetAssignments[i].Count, 0) - wl.Spec.PodSets[i].Count
for k := range currentAssignedResourceUsage {
resourceQuantity := originalResourceRequests[k]
resourceQuantity.Mul(int64(diff))
originalResourceRequests[k] = resourceQuantity

assignedResourceQuantity := currentAssignedResourceUsage[k]
assignedResourceQuantity.Sub(originalResourceRequests[k])
currentAssignedResourceUsage[k] = assignedResourceQuantity
}

wl.Status.Admission.PodSetAssignments[i].Count = ptr.To(wl.Spec.PodSets[i].Count)
wl.Status.Admission.PodSetAssignments[i].ResourceUsage = currentAssignedResourceUsage
wl.Status.Admission.PodSetAssignments[i].Count = ptr.To(wl.Spec.PodSets[i].Count)
wl.Status.Admission.PodSetAssignments[i].ResourceUsage = currentAssignedResourceUsage

updateStatus = true

statusUpdate = true
}
}
if statusUpdate {
if updateStatus {
// Update Status
workload.SyncAdmittedCondition(wl)
if err := workload.ApplyAdmissionStatus(ctx, r.client, wl, true); err != nil {
Expand Down
14 changes: 8 additions & 6 deletions pkg/controller/jobs/raycluster/raycluster_controller.go
Expand Up @@ -89,14 +89,16 @@ func (j *RayCluster) GVK() schema.GroupVersionKind {
}

func (j *RayCluster) IsResizable(wl *kueue.Workload) bool {
if features.Enabled(features.ResizableJobs) {
pods := j.PodSets()
for i := 1; i < len(pods); i++ {
if wl.Spec.PodSets[i].Count > pods[i].Count {
return true
}
if !features.Enabled(features.ResizableJobs) {
return false
}
pods := j.PodSets()
for i := 1; i < len(pods); i++ {
if wl.Spec.PodSets[i].Count > pods[i].Count {
return true
}
}

return false
}

Expand Down

0 comments on commit a300db0

Please sign in to comment.