mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-13 11:25:19 +00:00
use original requests in NodeResourcesBalancedAllocation instead of NonZero (#105845)
This commit is contained in:
@@ -40,26 +40,27 @@ const (
|
||||
// GetNonzeroRequests returns the default cpu and memory resource request if none is found or
|
||||
// what is provided on the request.
|
||||
func GetNonzeroRequests(requests *v1.ResourceList) (int64, int64) {
|
||||
return GetNonzeroRequestForResource(v1.ResourceCPU, requests),
|
||||
GetNonzeroRequestForResource(v1.ResourceMemory, requests)
|
||||
return GetRequestForResource(v1.ResourceCPU, requests, true),
|
||||
GetRequestForResource(v1.ResourceMemory, requests, true)
|
||||
}
|
||||
|
||||
// GetNonzeroRequestForResource returns the default resource request if none is found or
|
||||
// what is provided on the request.
|
||||
func GetNonzeroRequestForResource(resource v1.ResourceName, requests *v1.ResourceList) int64 {
|
||||
// GetRequestForResource returns the requested values unless nonZero is true and there is no defined request
|
||||
// for CPU and memory.
|
||||
// If nonZero is true and the resource has no defined request for CPU or memory, it returns a default value.
|
||||
func GetRequestForResource(resource v1.ResourceName, requests *v1.ResourceList, nonZero bool) int64 {
|
||||
if requests == nil {
|
||||
return 0
|
||||
}
|
||||
switch resource {
|
||||
case v1.ResourceCPU:
|
||||
// Override if un-set, but not if explicitly set to zero
|
||||
if _, found := (*requests)[v1.ResourceCPU]; !found {
|
||||
if _, found := (*requests)[v1.ResourceCPU]; !found && nonZero {
|
||||
return DefaultMilliCPURequest
|
||||
}
|
||||
return requests.Cpu().MilliValue()
|
||||
case v1.ResourceMemory:
|
||||
// Override if un-set, but not if explicitly set to zero
|
||||
if _, found := (*requests)[v1.ResourceMemory]; !found {
|
||||
if _, found := (*requests)[v1.ResourceMemory]; !found && nonZero {
|
||||
return DefaultMemoryRequest
|
||||
}
|
||||
return requests.Memory().Value()
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
)
|
||||
|
||||
@@ -74,18 +74,20 @@ func TestGetNonZeroRequest(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetLeastRequestResource(t *testing.T) {
|
||||
func TestGetRequestForResource(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
requests v1.ResourceList
|
||||
resource v1.ResourceName
|
||||
expectedQuantity int64
|
||||
nonZero bool
|
||||
}{
|
||||
{
|
||||
"extended_resource_not_found",
|
||||
v1.ResourceList{},
|
||||
v1.ResourceName("intel.com/foo"),
|
||||
0,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"extended_resource_found",
|
||||
@@ -94,18 +96,21 @@ func TestGetLeastRequestResource(t *testing.T) {
|
||||
},
|
||||
v1.ResourceName("intel.com/foo"),
|
||||
4,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"cpu_not_found",
|
||||
v1.ResourceList{},
|
||||
v1.ResourceCPU,
|
||||
DefaultMilliCPURequest,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"memory_not_found",
|
||||
v1.ResourceList{},
|
||||
v1.ResourceMemory,
|
||||
DefaultMemoryRequest,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"cpu_exist",
|
||||
@@ -114,6 +119,7 @@ func TestGetLeastRequestResource(t *testing.T) {
|
||||
},
|
||||
v1.ResourceCPU,
|
||||
200,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"memory_exist",
|
||||
@@ -122,6 +128,7 @@ func TestGetLeastRequestResource(t *testing.T) {
|
||||
},
|
||||
v1.ResourceMemory,
|
||||
400 * 1024 * 1024,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"ephemeralStorage_exist",
|
||||
@@ -130,18 +137,34 @@ func TestGetLeastRequestResource(t *testing.T) {
|
||||
},
|
||||
v1.ResourceEphemeralStorage,
|
||||
400 * 1024 * 1024,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"ephemeralStorage_not_found",
|
||||
v1.ResourceList{},
|
||||
v1.ResourceEphemeralStorage,
|
||||
0,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"cpu_not_found, useRequested is true",
|
||||
v1.ResourceList{},
|
||||
v1.ResourceCPU,
|
||||
0,
|
||||
false,
|
||||
},
|
||||
{
|
||||
"memory_not_found, useRequested is true",
|
||||
v1.ResourceList{},
|
||||
v1.ResourceMemory,
|
||||
0,
|
||||
false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
realQuantity := GetNonzeroRequestForResource(test.resource, &test.requests)
|
||||
realQuantity := GetRequestForResource(test.resource, &test.requests, test.nonZero)
|
||||
assert.EqualValuesf(t, test.expectedQuantity, realQuantity, "Failed to test: %s", test.name)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user