Skip to content

Commit 6f633cb

Browse files
committed
fixup
Signed-off-by: Anatolii Bazko <[email protected]>
1 parent dca26b2 commit 6f633cb

File tree

1 file changed

+22
-44
lines changed

1 file changed

+22
-44
lines changed

pkg/library/resources/helper.go

Lines changed: 22 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -264,58 +264,36 @@ func ApplyCaps(resources, caps *corev1.ResourceRequirements) *corev1.ResourceReq
264264
// Otherwise, keep existing request (it's already lower than or equal to caps)
265265
}
266266

267+
result = handleCapsEdgeCase(result, caps, corev1.ResourceMemory)
268+
result = handleCapsEdgeCase(result, caps, corev1.ResourceCPU)
269+
270+
return result
271+
}
272+
273+
func handleCapsEdgeCase(resources, caps *corev1.ResourceRequirements, resourceName corev1.ResourceName) *corev1.ResourceRequirements {
274+
result := resources.DeepCopy()
275+
267276
// Edge cases: after applying caps, we might create invalid resources (limit < request).
268277
// We need to adjust to ensure the result is still valid.
269-
memLimit := result.Limits[corev1.ResourceMemory]
270-
memRequest := result.Requests[corev1.ResourceMemory]
271-
if !memLimit.IsZero() && !memRequest.IsZero() && memLimit.Cmp(memRequest) < 0 {
272-
capMemLimit := caps.Limits[corev1.ResourceMemory]
273-
capMemRequest := caps.Requests[corev1.ResourceMemory]
274-
switch {
275-
case !capMemLimit.IsZero() && capMemRequest.IsZero():
276-
// Only a memory limit cap was set, and it caused the limit to be lower than the request.
277-
// Adjust the request down to match the capped limit.
278-
if memLimit.Equal(capMemLimit) {
279-
result.Requests[corev1.ResourceMemory] = capMemLimit
280-
} else {
281-
// The invalid state (limit < request) existed in the original resources before caps were applied.
282-
}
283-
case capMemLimit.IsZero() && !capMemRequest.IsZero():
284-
// Only a memory request cap was set, and it's higher than the existing limit.
285-
// Adjust the limit up to match the capped request.
286-
if memRequest.Equal(capMemRequest) {
287-
result.Limits[corev1.ResourceMemory] = capMemRequest
288-
} else {
289-
// The invalid state (limit < request) existed in the original resources before caps were applied.
290-
break
291-
}
292-
default:
293-
// Both limit and request caps were set (or neither was set), so the invalid state was present
294-
// in the original resources.
295-
break
296-
}
297-
}
298-
299-
cpuLimit := result.Limits[corev1.ResourceCPU]
300-
cpuRequest := result.Requests[corev1.ResourceCPU]
301-
if !cpuLimit.IsZero() && !cpuRequest.IsZero() && cpuLimit.Cmp(cpuRequest) < 0 {
302-
capCPULimit := caps.Limits[corev1.ResourceCPU]
303-
capCPURequest := caps.Requests[corev1.ResourceCPU]
278+
resLimit := resources.Limits[resourceName]
279+
resRequest := resources.Requests[resourceName]
280+
if !resLimit.IsZero() && !resRequest.IsZero() && resLimit.Cmp(resRequest) < 0 {
281+
capResLimit := caps.Limits[resourceName]
282+
capResRequest := caps.Requests[resourceName]
304283
switch {
305-
case !capCPULimit.IsZero() && capCPURequest.IsZero():
306-
// Only a CPU limit cap was set, and it caused the limit to be lower than the request.
284+
case !capResLimit.IsZero() && capResRequest.IsZero():
285+
// Only a resource limit cap was set, and it caused the limit to be lower than the request.
307286
// Adjust the request down to match the capped limit.
308-
if cpuLimit.Equal(capCPULimit) {
309-
result.Requests[corev1.ResourceCPU] = capCPULimit
287+
if resLimit.Equal(capResLimit) {
288+
result.Requests[resourceName] = capResLimit
310289
} else {
311290
// The invalid state (limit < request) existed in the original resources before caps were applied.
312-
break
313291
}
314-
case capCPULimit.IsZero() && !capCPURequest.IsZero():
315-
// Only a CPU request cap was set, and it's higher than the existing limit.
292+
case capResLimit.IsZero() && !capResRequest.IsZero():
293+
// Only a resource request cap was set, and it's higher than the existing limit.
316294
// Adjust the limit up to match the capped request.
317-
if cpuRequest.Equal(capCPURequest) {
318-
result.Limits[corev1.ResourceCPU] = capCPURequest
295+
if resRequest.Equal(capResRequest) {
296+
result.Limits[resourceName] = capResRequest
319297
} else {
320298
// The invalid state (limit < request) existed in the original resources before caps were applied.
321299
break

0 commit comments

Comments
 (0)