diff --git a/pkg/apis/scheduler/v1beta1/container/resources/resources.go b/pkg/apis/scheduler/v1beta1/container/resources/resources.go index e6d45cff2..a31009b32 100644 --- a/pkg/apis/scheduler/v1beta1/container/resources/resources.go +++ b/pkg/apis/scheduler/v1beta1/container/resources/resources.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// Copyright 2024-2025 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -44,8 +44,7 @@ func (r *Resources) Apply(_ *core.PodTemplateSpec, template *core.Container) err res := r.GetResources() - template.Resources.Limits = kresources.UpscaleContainerResourceList(template.Resources.Limits, res.Limits) - template.Resources.Requests = kresources.UpscaleContainerResourceList(template.Resources.Requests, res.Requests) + template.Resources = kresources.MergeContainerResource(template.Resources, res) return nil } diff --git a/pkg/apis/scheduler/v1beta1/container/resources/resources_test.go b/pkg/apis/scheduler/v1beta1/container/resources/resources_test.go index 91941b66c..6bbe376c1 100644 --- a/pkg/apis/scheduler/v1beta1/container/resources/resources_test.go +++ b/pkg/apis/scheduler/v1beta1/container/resources/resources_test.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// Copyright 2024-2025 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -207,4 +207,30 @@ func Test_Resources(t *testing.T) { require.EqualValues(t, v8Mi, container.Resources.Requests[core.ResourceCPU]) }) }) + t.Run("Downscale", func(t *testing.T) { + applyResources(t, &core.PodTemplateSpec{}, &core.Container{ + Resources: core.ResourceRequirements{ + Requests: core.ResourceList{ + core.ResourceCPU: v8Mi, + }, + }, + }, &Resources{ + Resources: &core.ResourceRequirements{ + Limits: core.ResourceList{ + core.ResourceCPU: v1Mi, + }, + Requests: core.ResourceList{ + core.ResourceCPU: v1Mi, + }, + }, + })(func(t *testing.T, pod *core.PodTemplateSpec, container *core.Container) { + require.Len(t, container.Resources.Limits, 1) + require.Contains(t, container.Resources.Limits, core.ResourceCPU) + require.EqualValues(t, v1Mi, container.Resources.Limits[core.ResourceCPU]) + + require.Len(t, container.Resources.Requests, 1) + require.Contains(t, container.Resources.Requests, core.ResourceCPU) + require.EqualValues(t, v1Mi, container.Resources.Requests[core.ResourceCPU]) + }) + }) }