@@ -25463,6 +25463,8 @@ func TestValidateSELinuxChangePolicy(t *testing.T) {
2546325463}
2546425464
2546525465func TestValidatePodResize(t *testing.T) {
25466+ featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SidecarContainers, true)
25467+
2546625468 mkPod := func(req, lim core.ResourceList, tweaks ...podtest.Tweak) *core.Pod {
2546725469 return podtest.MakePod("pod", append(tweaks,
2546825470 podtest.SetContainers(
@@ -25479,6 +25481,23 @@ func TestValidatePodResize(t *testing.T) {
2547925481 )...)
2548025482 }
2548125483
25484+ mkPodWithInitContainers := func(req, lim core.ResourceList, restartPolicy core.ContainerRestartPolicy, tweaks ...podtest.Tweak) *core.Pod {
25485+ return podtest.MakePod("pod", append(tweaks,
25486+ podtest.SetInitContainers(
25487+ podtest.MakeContainer(
25488+ "container",
25489+ podtest.SetContainerResources(
25490+ core.ResourceRequirements{
25491+ Requests: req,
25492+ Limits: lim,
25493+ },
25494+ ),
25495+ podtest.SetContainerRestartPolicy(restartPolicy),
25496+ ),
25497+ ),
25498+ )...)
25499+ }
25500+
2548225501 tests := []struct {
2548325502 test string
2548425503 old *core.Pod
@@ -25672,20 +25691,10 @@ func TestValidatePodResize(t *testing.T) {
2567225691 old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
2567325692 new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
2567425693 err: "",
25675- }, {
25676- test: "Pod QoS unchanged, burstable -> burstable, remove limits",
25677- old: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
25678- new: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
25679- err: "",
2568025694 }, {
2568125695 test: "Pod QoS unchanged, burstable -> burstable, add requests",
2568225696 old: mkPod(core.ResourceList{}, getResources("200m", "500Mi", "1Gi", "")),
25683- new: mkPod(getResources("300m", "", "", ""), getResources("400m", "", "1Gi", "")),
25684- err: "",
25685- }, {
25686- test: "Pod QoS unchanged, burstable -> burstable, remove requests",
25687- old: mkPod(getResources("100m", "200Mi", "", ""), getResources("200m", "300Mi", "2Gi", "")),
25688- new: mkPod(core.ResourceList{}, getResources("400m", "500Mi", "2Gi", "")),
25697+ new: mkPod(getResources("300m", "", "", ""), getResources("400m", "500Mi", "1Gi", "")),
2568925698 err: "",
2569025699 }, {
2569125700 test: "Pod QoS change, guaranteed -> burstable",
@@ -25717,6 +25726,71 @@ func TestValidatePodResize(t *testing.T) {
2571725726 old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", ""), podtest.SetOS(core.Windows)),
2571825727 new: mkPod(core.ResourceList{}, getResources("200m", "0", "1Gi", ""), podtest.SetOS(core.Windows)),
2571925728 err: "Forbidden: windows pods cannot be resized",
25729+ }, {
25730+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu limit",
25731+ old: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "", "")),
25732+ new: mkPod(core.ResourceList{}, getResources("", "100Mi", "", "")),
25733+ err: "spec.containers[0].resources.limits: Forbidden: resource limits cannot be removed",
25734+ }, {
25735+ test: "Pod QoS unchanged, burstable -> burstable, remove memory limit",
25736+ old: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "", "")),
25737+ new: mkPod(core.ResourceList{}, getResources("100m", "", "", "")),
25738+ err: "spec.containers[0].resources.limits: Forbidden: resource limits cannot be removed",
25739+ }, {
25740+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu request",
25741+ old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
25742+ new: mkPod(getResources("", "100Mi", "", ""), core.ResourceList{}),
25743+ err: "spec.containers[0].resources.requests: Forbidden: resource requests cannot be removed",
25744+ }, {
25745+ test: "Pod QoS unchanged, burstable -> burstable, remove memory request",
25746+ old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
25747+ new: mkPod(getResources("100m", "", "", ""), core.ResourceList{}),
25748+ err: "spec.containers[0].resources.requests: Forbidden: resource requests cannot be removed",
25749+ }, {
25750+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory limits",
25751+ old: mkPod(getResources("100m", "", "", ""), getResources("100m", "100Mi", "", "")),
25752+ new: mkPod(getResources("100m", "", "", ""), core.ResourceList{}),
25753+ err: "spec.containers[0].resources.limits: Forbidden: resource limits cannot be removed",
25754+ }, {
25755+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory requests",
25756+ old: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "", "", "")),
25757+ new: mkPod(core.ResourceList{}, getResources("100m", "", "", "")),
25758+ err: "spec.containers[0].resources.requests: Forbidden: resource requests cannot be removed",
25759+ }, {
25760+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu limit",
25761+ old: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "100Mi", "", ""), core.ContainerRestartPolicyAlways),
25762+ new: mkPodWithInitContainers(core.ResourceList{}, getResources("", "100Mi", "", ""), core.ContainerRestartPolicyAlways),
25763+ err: "spec.initContainers[0].resources.limits: Forbidden: resource limits cannot be removed",
25764+ }, {
25765+ test: "Pod QoS unchanged, burstable -> burstable, remove memory limit",
25766+ old: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "100Mi", "", ""), core.ContainerRestartPolicyAlways),
25767+ new: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "", "", ""), core.ContainerRestartPolicyAlways),
25768+ err: "spec.initContainers[0].resources.limits: Forbidden: resource limits cannot be removed",
25769+ }, {
25770+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu request",
25771+ old: mkPodWithInitContainers(getResources("100m", "100Mi", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25772+ new: mkPodWithInitContainers(getResources("", "100Mi", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25773+ err: "spec.initContainers[0].resources.requests: Forbidden: resource requests cannot be removed",
25774+ }, {
25775+ test: "Pod QoS unchanged, burstable -> burstable, remove memory request",
25776+ old: mkPodWithInitContainers(getResources("100m", "100Mi", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25777+ new: mkPodWithInitContainers(getResources("100m", "", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25778+ err: "spec.initContainers[0].resources.requests: Forbidden: resource requests cannot be removed",
25779+ }, {
25780+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory limits",
25781+ old: mkPodWithInitContainers(getResources("100m", "", "", ""), getResources("100m", "100Mi", "", ""), core.ContainerRestartPolicyAlways),
25782+ new: mkPodWithInitContainers(getResources("100m", "", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25783+ err: "spec.initContainers[0].resources.limits: Forbidden: resource limits cannot be removed",
25784+ }, {
25785+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory requests",
25786+ old: mkPodWithInitContainers(getResources("100m", "100Mi", "", ""), getResources("100m", "", "", ""), core.ContainerRestartPolicyAlways),
25787+ new: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "", "", ""), core.ContainerRestartPolicyAlways),
25788+ err: "spec.initContainers[0].resources.requests: Forbidden: resource requests cannot be removed",
25789+ }, {
25790+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory requests",
25791+ old: mkPodWithInitContainers(getResources("100m", "100Mi", "", ""), getResources("100m", "", "", ""), ""),
25792+ new: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "", "", ""), ""),
25793+ err: "spec: Forbidden: only cpu and memory resources are mutable",
2572025794 },
2572125795 {
2572225796 test: "Pod with nil Resource field in Status",
0 commit comments