Skip to content

Commit

Permalink
Merge pull request #7809 from rsgowman/fix_panic
Browse files Browse the repository at this point in the history
Fix a panic in GetContainersResources()
  • Loading branch information
k8s-ci-robot authored Feb 6, 2025
2 parents 14e6347 + 1e96217 commit 95acfef
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,13 @@ func GetContainersResources(pod *core.Pod, vpaResourcePolicy *vpa_types.PodResou
// If the recommendation only contains CPU or Memory (if the VPA was configured this way), we need to make sure we "backfill" the other.
// Only do this when the addAll flag is true.
if addAll {
if resources[i].Requests == nil {
resources[i].Requests = core.ResourceList{}
}
if resources[i].Limits == nil {
resources[i].Limits = core.ResourceList{}
}

cpuRequest, hasCpuRequest := container.Resources.Requests[core.ResourceCPU]
if _, ok := resources[i].Requests[core.ResourceCPU]; !ok && hasCpuRequest {
resources[i].Requests[core.ResourceCPU] = cpuRequest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,20 @@ func TestGetContainersResources(t *testing.T) {
expectedCPULimit: mustParseResourcePointer("20"),
addAll: true,
},
{
name: "CPU only recommendation, only CPU request and limit set, ContainerControlledValuesRequestOnly",
container: test.Container().WithName("container").
WithCPURequest(resource.MustParse("1")).
WithCPULimit(resource.MustParse("10")).
Get(),
vpa: test.VerticalPodAutoscaler().WithContainer("container").
WithControlledValues("container", vpa_types.ContainerControlledValuesRequestsOnly).
WithTargetResource(apiv1.ResourceCPU, "2").
Get(),
expectedCPU: mustParseResourcePointer("2"),
expectedCPULimit: mustParseResourcePointer("10"),
addAll: true,
},
{
name: "Memory only recommendation, request and limits set",
container: test.Container().WithName("container").WithCPURequest(resource.MustParse("1")).WithMemRequest(resource.MustParse("1M")).WithCPULimit(resource.MustParse("10")).WithMemLimit(resource.MustParse("10M")).Get(),
Expand Down Expand Up @@ -456,6 +470,20 @@ func TestGetContainersResources(t *testing.T) {
expectedMemLimit: mustParseResourcePointer("20M"),
addAll: true,
},
{
name: "Memory only recommendation, only memory request and limit set, ContainerControlledValuesRequestOnly",
container: test.Container().WithName("container").
WithMemRequest(resource.MustParse("1M")).
WithMemLimit(resource.MustParse("10M")).
Get(),
vpa: test.VerticalPodAutoscaler().WithContainer("container").
WithControlledValues("container", vpa_types.ContainerControlledValuesRequestsOnly).
WithTargetResource(apiv1.ResourceMemory, "2M").
Get(),
expectedMem: mustParseResourcePointer("2M"),
expectedMemLimit: mustParseResourcePointer("10M"),
addAll: true,
},
{
name: "CPU and Memory recommendation, request and limits set, addAll false",
container: test.Container().WithName("container").WithCPURequest(resource.MustParse("1")).WithMemRequest(resource.MustParse("1M")).WithCPULimit(resource.MustParse("10")).WithMemLimit(resource.MustParse("10M")).Get(),
Expand Down

0 comments on commit 95acfef

Please sign in to comment.