Fixes from review, updated tests cases

This commit is contained in:
Sreeram Venkitesh
2024-11-07 11:02:11 +05:30
parent 7d1d7182f3
commit 385d2b198c
2 changed files with 84 additions and 101 deletions

View File

@@ -5515,10 +5515,8 @@ func ValidatePodResize(newPod, oldPod *core.Pod, opts PodValidationOptions) fiel
allErrs = append(allErrs, field.Invalid(specPath, newPod.Status.QOSClass, "Pod QOS Class may not change as a result of resizing")) allErrs = append(allErrs, field.Invalid(specPath, newPod.Status.QOSClass, "Pod QOS Class may not change as a result of resizing"))
} }
isPodResizeRequestValid := isPodResizeRequestSupported(*oldPod) if !isPodResizeRequestSupported(*oldPod) {
allErrs = append(allErrs, field.Forbidden(specPath, "Pod running on node without support for resize"))
if !isPodResizeRequestValid {
allErrs = append(allErrs, field.Forbidden(specPath, "Pod running on node without InPlacePodVerticalScaling feature gate enabled may not be updated"))
} }
// Ensure that only CPU and memory resources are mutable. // Ensure that only CPU and memory resources are mutable.

View File

@@ -25092,121 +25092,108 @@ func TestValidatePodResize(t *testing.T) {
} }
tests := []struct { tests := []struct {
test string test string
old *core.Pod old *core.Pod
new *core.Pod new *core.Pod
enableInPlacePodVerticalScaling bool err string
err string
}{ }{
{ {
test: "cpu limit change", test: "cpu limit change",
old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", "")), old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", "")),
new: mkPod(core.ResourceList{}, getResources("200m", "0", "1Gi", "")), new: mkPod(core.ResourceList{}, getResources("200m", "0", "1Gi", "")),
enableInPlacePodVerticalScaling: true, err: "",
err: "",
}, { }, {
test: "memory limit change", test: "memory limit change",
old: mkPod(core.ResourceList{}, getResources("100m", "200Mi", "", "")), old: mkPod(core.ResourceList{}, getResources("100m", "200Mi", "", "")),
new: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "", "")), new: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "", "")),
enableInPlacePodVerticalScaling: true, err: "",
err: "",
}, { }, {
test: "memory limit change without feature gate enabled", test: "storage limit change",
old: mkPod(core.ResourceList{}, getResources("100m", "200Mi", "", "")), old: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "2Gi", "")),
new: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "", "")), new: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "1Gi", "")),
enableInPlacePodVerticalScaling: false, err: "spec: Forbidden: only cpu and memory resources are mutable",
err: "spec: Forbidden: Pod running on node without InPlacePodVerticalScaling feature gate enabled may not be updated",
}, { }, {
test: "CPU limit change without feature gate enabled", test: "cpu request change",
old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", "")), old: mkPod(getResources("200m", "0", "", ""), core.ResourceList{}),
new: mkPod(core.ResourceList{}, getResources("200m", "0", "1Gi", "")), new: mkPod(getResources("100m", "0", "", ""), core.ResourceList{}),
enableInPlacePodVerticalScaling: false, err: "",
err: "spec: Forbidden: Pod running on node without InPlacePodVerticalScaling feature gate enabled may not be updated",
}, { }, {
test: "storage limit change", test: "memory request change",
old: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "2Gi", "")), old: mkPod(getResources("0", "100Mi", "", ""), core.ResourceList{}),
new: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "1Gi", "")), new: mkPod(getResources("0", "200Mi", "", ""), core.ResourceList{}),
enableInPlacePodVerticalScaling: true, err: "",
err: "spec: Forbidden: only cpu and memory resources are mutable",
}, { }, {
test: "cpu request change", test: "storage request change",
old: mkPod(getResources("200m", "0", "", ""), core.ResourceList{}), old: mkPod(getResources("100m", "0", "1Gi", ""), core.ResourceList{}),
new: mkPod(getResources("100m", "0", "", ""), core.ResourceList{}), new: mkPod(getResources("100m", "0", "2Gi", ""), core.ResourceList{}),
enableInPlacePodVerticalScaling: true, err: "spec: Forbidden: only cpu and memory resources are mutable",
err: "",
}, { }, {
test: "memory request change", test: "Pod QoS unchanged, guaranteed -> guaranteed",
old: mkPod(getResources("0", "100Mi", "", ""), core.ResourceList{}), old: mkPod(getResources("100m", "100Mi", "1Gi", ""), getResources("100m", "100Mi", "1Gi", "")),
new: mkPod(getResources("0", "200Mi", "", ""), core.ResourceList{}), new: mkPod(getResources("200m", "400Mi", "1Gi", ""), getResources("200m", "400Mi", "1Gi", "")),
enableInPlacePodVerticalScaling: true, err: "",
err: "",
}, { }, {
test: "storage request change", test: "Pod QoS unchanged, burstable -> burstable",
old: mkPod(getResources("100m", "0", "1Gi", ""), core.ResourceList{}), old: mkPod(getResources("200m", "200Mi", "1Gi", ""), getResources("400m", "400Mi", "2Gi", "")),
new: mkPod(getResources("100m", "0", "2Gi", ""), core.ResourceList{}), new: mkPod(getResources("100m", "100Mi", "1Gi", ""), getResources("200m", "200Mi", "2Gi", "")),
enableInPlacePodVerticalScaling: true, err: "",
err: "spec: Forbidden: only cpu and memory resources are mutable",
}, { }, {
test: "Pod QoS unchanged, guaranteed -> guaranteed", test: "Pod QoS unchanged, burstable -> burstable, add limits",
old: mkPod(getResources("100m", "100Mi", "1Gi", ""), getResources("100m", "100Mi", "1Gi", "")), old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
new: mkPod(getResources("200m", "400Mi", "1Gi", ""), getResources("200m", "400Mi", "1Gi", "")), new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
enableInPlacePodVerticalScaling: true, err: "",
err: "",
}, { }, {
test: "Pod QoS unchanged, burstable -> burstable", test: "Pod QoS unchanged, burstable -> burstable, remove limits",
old: mkPod(getResources("200m", "200Mi", "1Gi", ""), getResources("400m", "400Mi", "2Gi", "")), old: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
new: mkPod(getResources("100m", "100Mi", "1Gi", ""), getResources("200m", "200Mi", "2Gi", "")), new: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
enableInPlacePodVerticalScaling: true, err: "",
err: "",
}, { }, {
test: "Pod QoS unchanged, burstable -> burstable, add limits", test: "Pod QoS unchanged, burstable -> burstable, add requests",
old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}), old: mkPod(core.ResourceList{}, getResources("200m", "500Mi", "1Gi", "")),
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")), new: mkPod(getResources("300m", "", "", ""), getResources("400m", "", "1Gi", "")),
enableInPlacePodVerticalScaling: true, err: "",
err: "",
}, { }, {
test: "Pod QoS unchanged, burstable -> burstable, remove limits", test: "Pod QoS unchanged, burstable -> burstable, remove requests",
old: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")), old: mkPod(getResources("100m", "200Mi", "", ""), getResources("200m", "300Mi", "2Gi", "")),
new: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}), new: mkPod(core.ResourceList{}, getResources("400m", "500Mi", "2Gi", "")),
enableInPlacePodVerticalScaling: true, err: "",
err: "",
}, { }, {
test: "Pod QoS unchanged, burstable -> burstable, add requests", test: "Pod QoS change, guaranteed -> burstable",
old: mkPod(core.ResourceList{}, getResources("200m", "500Mi", "1Gi", "")), old: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "100Mi", "", "")),
new: mkPod(getResources("300m", "", "", ""), getResources("400m", "", "1Gi", "")), new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
enableInPlacePodVerticalScaling: true, err: "Pod QOS Class may not change as a result of resizing",
err: "",
}, { }, {
test: "Pod QoS unchanged, burstable -> burstable, remove requests", test: "Pod QoS change, burstable -> guaranteed",
old: mkPod(getResources("100m", "200Mi", "", ""), getResources("200m", "300Mi", "2Gi", "")), old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
new: mkPod(core.ResourceList{}, getResources("400m", "500Mi", "2Gi", "")), new: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "100Mi", "", "")),
enableInPlacePodVerticalScaling: true, err: "Pod QOS Class may not change as a result of resizing",
err: "",
}, { }, {
test: "Pod QoS change, guaranteed -> burstable", test: "Pod QoS change, besteffort -> burstable",
old: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "100Mi", "", "")), old: mkPod(core.ResourceList{}, core.ResourceList{}),
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")), new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
enableInPlacePodVerticalScaling: true, err: "Pod QOS Class may not change as a result of resizing",
err: "Pod QOS Class may not change as a result of resizing",
}, { }, {
test: "Pod QoS change, burstable -> guaranteed", test: "Pod QoS change, burstable -> guaranteed",
old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}), old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "100Mi", "", "")), new: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "100Mi", "", "")),
enableInPlacePodVerticalScaling: true, err: "Pod QOS Class may not change as a result of resizing",
err: "Pod QOS Class may not change as a result of resizing",
}, { }, {
test: "Pod QoS change, besteffort -> burstable", test: "Pod QoS change, besteffort -> burstable",
old: mkPod(core.ResourceList{}, core.ResourceList{}), old: mkPod(core.ResourceList{}, core.ResourceList{}),
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")), new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
enableInPlacePodVerticalScaling: true, err: "Pod QOS Class may not change as a result of resizing",
err: "Pod QOS Class may not change as a result of resizing",
}, { }, {
test: "Pod QoS change, burstable -> besteffort", test: "Pod QoS change, burstable -> besteffort",
old: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")), old: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
new: mkPod(core.ResourceList{}, core.ResourceList{}), new: mkPod(core.ResourceList{}, core.ResourceList{}),
enableInPlacePodVerticalScaling: true, err: "Pod QOS Class may not change as a result of resizing",
err: "Pod QOS Class may not change as a result of resizing",
}, { }, {
test: "Pod QoS change, burstable -> besteffort",
old: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
new: mkPod(core.ResourceList{}, core.ResourceList{}),
err: "Pod QOS Class may not change as a result of resizing",
},
{
test: "windows pod, no resource change", test: "windows pod, no resource change",
old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", ""), podtest.SetOS(core.Windows)), old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", ""), podtest.SetOS(core.Windows)),
new: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", ""), podtest.SetOS(core.Windows)), new: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", ""), podtest.SetOS(core.Windows)),
@@ -25220,8 +25207,6 @@ func TestValidatePodResize(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.InPlacePodVerticalScaling, test.enableInPlacePodVerticalScaling)
test.new.ObjectMeta.ResourceVersion = "1" test.new.ObjectMeta.ResourceVersion = "1"
test.old.ObjectMeta.ResourceVersion = "1" test.old.ObjectMeta.ResourceVersion = "1"