diff --git a/pkg/apis/core/validation/validation.go b/pkg/apis/core/validation/validation.go index a272ed75ba8..06e95146d3d 100644 --- a/pkg/apis/core/validation/validation.go +++ b/pkg/apis/core/validation/validation.go @@ -5508,10 +5508,10 @@ func ValidatePodResize(newPod, oldPod *core.Pod, opts PodValidationOptions) fiel } // Ensure that only CPU and memory resources are mutable. - mungedPodSpec := *newPod.Spec.DeepCopy() + originalCPUMemPodSpec := *newPod.Spec.DeepCopy() var newContainers []core.Container - for ix, container := range mungedPodSpec.Containers { - mungeCPUMemResources := func(resourceList, oldResourceList core.ResourceList) core.ResourceList { + for ix, container := range originalCPUMemPodSpec.Containers { + dropCPUMemoryUpdates := func(resourceList, oldResourceList core.ResourceList) core.ResourceList { if oldResourceList == nil { return nil } @@ -5531,17 +5531,17 @@ func ValidatePodResize(newPod, oldPod *core.Pod, opts PodValidationOptions) fiel } return mungedResourceList } - lim := mungeCPUMemResources(container.Resources.Limits, oldPod.Spec.Containers[ix].Resources.Limits) - req := mungeCPUMemResources(container.Resources.Requests, oldPod.Spec.Containers[ix].Resources.Requests) + lim := dropCPUMemoryUpdates(container.Resources.Limits, oldPod.Spec.Containers[ix].Resources.Limits) + req := dropCPUMemoryUpdates(container.Resources.Requests, oldPod.Spec.Containers[ix].Resources.Requests) container.Resources = core.ResourceRequirements{Limits: lim, Requests: req} container.ResizePolicy = oldPod.Spec.Containers[ix].ResizePolicy // +k8s:verify-mutation:reason=clone newContainers = append(newContainers, container) } - mungedPodSpec.Containers = newContainers - if !apiequality.Semantic.DeepEqual(mungedPodSpec, oldPod.Spec) { + originalCPUMemPodSpec.Containers = newContainers + if !apiequality.Semantic.DeepEqual(originalCPUMemPodSpec, oldPod.Spec) { // This likely means that the user has made changes to resources other than CPU and Memory. - specDiff := cmp.Diff(oldPod.Spec, mungedPodSpec) - errs := field.Forbidden(specPath, fmt.Sprintf("pod resize may not change fields other than cpu and memory\n%v", specDiff)) + specDiff := cmp.Diff(oldPod.Spec, originalCPUMemPodSpec) + errs := field.Forbidden(specPath, fmt.Sprintf("only cpu and memory resources are mutable\n%v", specDiff)) allErrs = append(allErrs, errs) } return allErrs diff --git a/pkg/apis/core/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go index 9b52f479170..dde5004d37e 100644 --- a/pkg/apis/core/validation/validation_test.go +++ b/pkg/apis/core/validation/validation_test.go @@ -25113,7 +25113,7 @@ func TestValidatePodResize(t *testing.T) { test: "storage limit change", old: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "2Gi", "")), new: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "1Gi", "")), - err: "spec: Forbidden: pod resize may not change fields other than cpu and memory", + err: "spec: Forbidden: only cpu and memory resources are mutable", }, { test: "cpu request change", old: mkPod(getResources("200m", "0", "", ""), core.ResourceList{}), @@ -25128,7 +25128,7 @@ func TestValidatePodResize(t *testing.T) { test: "storage request change", old: mkPod(getResources("100m", "0", "1Gi", ""), core.ResourceList{}), new: mkPod(getResources("100m", "0", "2Gi", ""), core.ResourceList{}), - err: "spec: Forbidden: pod resize may not change fields other than cpu and memory", + err: "spec: Forbidden: only cpu and memory resources are mutable", }, { test: "Pod QoS unchanged, guaranteed -> guaranteed", old: mkPod(getResources("100m", "100Mi", "1Gi", ""), getResources("100m", "100Mi", "1Gi", "")),