Skip to content

Commit

Permalink
Address review feedback from raywainman (2)
Browse files Browse the repository at this point in the history
  • Loading branch information
ialidzhikov committed Feb 11, 2025
1 parent b7b30d4 commit 055affa
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"k8s.io/klog/v2"

apiv1 "k8s.io/api/core/v1"

vpa_types "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1"
vpa_utils "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/utils/vpa"
)
Expand Down
46 changes: 26 additions & 20 deletions vertical-pod-autoscaler/pkg/utils/vpa/capping.go
Original file line number Diff line number Diff line change
Expand Up @@ -193,30 +193,36 @@ func applyVPAPolicyForContainer(containerName string,
cappedRecommendations := containerRecommendation.DeepCopy()
containerPolicy := GetContainerResourcePolicy(containerName, policy)

var minAllowed apiv1.ResourceList
if containerPolicy != nil {
minAllowed = containerPolicy.MinAllowed
}

var maxAllowed apiv1.ResourceList
if containerPolicy != nil {
maxAllowed = containerPolicy.MaxAllowed
}
if maxAllowed == nil {
maxAllowed = globalMaxAllowed
} else {
// Set resources from the global max allowed if the VPA max allowed is missing them.
for resourceName, quantity := range globalMaxAllowed {
if _, ok := maxAllowed[resourceName]; !ok {
maxAllowed[resourceName] = quantity
}
}
}

process := func(recommendation apiv1.ResourceList) {
for resourceName, recommended := range recommendation {
var maxAllowed apiv1.ResourceList
// containerPolicy can be nil (user does not have to configure it).
if containerPolicy != nil {
cappedToMin, _ := maybeCapToPolicyMin(recommended, resourceName, containerPolicy)
for resourceName := range recommendation {
if minAllowed != nil {
cappedToMin, _ := maybeCapToMin(recommendation[resourceName], resourceName, minAllowed)
recommendation[resourceName] = cappedToMin

maxAllowed = containerPolicy.MaxAllowed
}

if maxAllowed == nil {
maxAllowed = globalMaxAllowed
} else {
// Set resources from the global maxAllowed if the VPA maxAllowed is missing them.
for resourceName, quantity := range globalMaxAllowed {
if _, ok := maxAllowed[resourceName]; !ok {
maxAllowed[resourceName] = quantity
}
}
if maxAllowed != nil {
cappedToMax, _ := maybeCapToMax(recommendation[resourceName], resourceName, maxAllowed)
recommendation[resourceName] = cappedToMax
}

cappedToMax, _ := maybeCapToMax(recommendation[resourceName], resourceName, maxAllowed)
recommendation[resourceName] = cappedToMax
}
}

Expand Down

0 comments on commit 055affa

Please sign in to comment.