@@ -25463,6 +25463,8 @@ func TestValidateSELinuxChangePolicy(t *testing.T) {
25463
25463
}
25464
25464
25465
25465
func TestValidatePodResize(t *testing.T) {
25466
+ featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SidecarContainers, true)
25467
+
25466
25468
mkPod := func(req, lim core.ResourceList, tweaks ...podtest.Tweak) *core.Pod {
25467
25469
return podtest.MakePod("pod", append(tweaks,
25468
25470
podtest.SetContainers(
@@ -25479,6 +25481,23 @@ func TestValidatePodResize(t *testing.T) {
25479
25481
)...)
25480
25482
}
25481
25483
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
+
25482
25501
tests := []struct {
25483
25502
test string
25484
25503
old *core.Pod
@@ -25672,20 +25691,10 @@ func TestValidatePodResize(t *testing.T) {
25672
25691
old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
25673
25692
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
25674
25693
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: "",
25680
25694
}, {
25681
25695
test: "Pod QoS unchanged, burstable -> burstable, add requests",
25682
25696
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", "")),
25689
25698
err: "",
25690
25699
}, {
25691
25700
test: "Pod QoS change, guaranteed -> burstable",
@@ -25717,6 +25726,71 @@ func TestValidatePodResize(t *testing.T) {
25717
25726
old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", ""), podtest.SetOS(core.Windows)),
25718
25727
new: mkPod(core.ResourceList{}, getResources("200m", "0", "1Gi", ""), podtest.SetOS(core.Windows)),
25719
25728
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",
25720
25794
},
25721
25795
{
25722
25796
test: "Pod with nil Resource field in Status",
0 commit comments