Move resource.Quantity rounding to defaulter

This reverts commit feb56cc486.
This commit is contained in:
Clayton Coleman 2016-10-26 12:18:33 -04:00
parent d089eda524
commit 3ff5cb6ec7
No known key found for this signature in database
GPG Key ID: 3D16906B4F1C5CB3
3 changed files with 40 additions and 3 deletions

View File

@ -739,15 +739,15 @@ func Convert_v1_ResourceList_To_api_ResourceList(in *ResourceList, out *api.Reso
if *in == nil { if *in == nil {
return nil return nil
} }
if *out == nil { if *out == nil {
*out = make(api.ResourceList, len(*in)) *out = make(api.ResourceList, len(*in))
} }
for key, val := range *in { for key, val := range *in {
// Moved to defaults
// TODO(#18538): We round up resource values to milli scale to maintain API compatibility. // TODO(#18538): We round up resource values to milli scale to maintain API compatibility.
// In the future, we should instead reject values that need rounding. // In the future, we should instead reject values that need rounding.
const milliScale = -3 // const milliScale = -3
val.RoundUp(milliScale) // val.RoundUp(milliScale)
(*out)[api.ResourceName(key)] = val (*out)[api.ResourceName(key)] = val
} }

View File

@ -52,9 +52,21 @@ func addDefaultingFuncs(scheme *runtime.Scheme) error {
SetDefaults_LimitRangeItem, SetDefaults_LimitRangeItem,
SetDefaults_ConfigMap, SetDefaults_ConfigMap,
SetDefaults_RBDVolumeSource, SetDefaults_RBDVolumeSource,
SetDefaults_ResourceList,
) )
} }
func SetDefaults_ResourceList(obj *ResourceList) {
for key, val := range *obj {
// TODO(#18538): We round up resource values to milli scale to maintain API compatibility.
// In the future, we should instead reject values that need rounding.
const milliScale = -3
val.RoundUp(milliScale)
(*obj)[ResourceName(key)] = val
}
}
func SetDefaults_PodExecOptions(obj *PodExecOptions) { func SetDefaults_PodExecOptions(obj *PodExecOptions) {
obj.Stdout = true obj.Stdout = true
obj.Stderr = true obj.Stderr = true

View File

@ -574,6 +574,31 @@ func TestSetDefaultObjectFieldSelectorAPIVersion(t *testing.T) {
} }
} }
func TestSetMinimumScalePod(t *testing.T) {
// verify we default if limits are specified (and that request=0 is preserved)
s := versioned.PodSpec{}
s.Containers = []versioned.Container{
{
Resources: versioned.ResourceRequirements{
Requests: versioned.ResourceList{
versioned.ResourceMemory: resource.MustParse("1n"),
},
Limits: versioned.ResourceList{
versioned.ResourceCPU: resource.MustParse("2n"),
},
},
},
}
pod := &versioned.Pod{
Spec: s,
}
versioned.SetObjectDefaults_Pod(pod)
if expect := resource.MustParse("1m"); expect.Cmp(pod.Spec.Containers[0].Resources.Requests[versioned.ResourceMemory]) != 0 {
t.Errorf("did not round resources: %#v", pod.Spec.Containers[0].Resources)
}
}
func TestSetDefaultRequestsPod(t *testing.T) { func TestSetDefaultRequestsPod(t *testing.T) {
// verify we default if limits are specified (and that request=0 is preserved) // verify we default if limits are specified (and that request=0 is preserved)
s := versioned.PodSpec{} s := versioned.PodSpec{}