@@ -25090,6 +25090,8 @@ func TestValidateSELinuxChangePolicy(t *testing.T) {
25090
25090
}
25091
25091
25092
25092
func TestValidatePodResize(t *testing.T) {
25093
+ featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SidecarContainers, true)
25094
+
25093
25095
mkPod := func(req, lim core.ResourceList, tweaks ...podtest.Tweak) *core.Pod {
25094
25096
return podtest.MakePod("pod", append(tweaks,
25095
25097
podtest.SetContainers(
@@ -25106,6 +25108,23 @@ func TestValidatePodResize(t *testing.T) {
25106
25108
)...)
25107
25109
}
25108
25110
25111
+ mkPodWithInitContainers := func(req, lim core.ResourceList, restartPolicy core.ContainerRestartPolicy, tweaks ...podtest.Tweak) *core.Pod {
25112
+ return podtest.MakePod("pod", append(tweaks,
25113
+ podtest.SetInitContainers(
25114
+ podtest.MakeContainer(
25115
+ "container",
25116
+ podtest.SetContainerResources(
25117
+ core.ResourceRequirements{
25118
+ Requests: req,
25119
+ Limits: lim,
25120
+ },
25121
+ ),
25122
+ podtest.SetContainerRestartPolicy(restartPolicy),
25123
+ ),
25124
+ ),
25125
+ )...)
25126
+ }
25127
+
25109
25128
tests := []struct {
25110
25129
test string
25111
25130
old *core.Pod
@@ -25157,20 +25176,10 @@ func TestValidatePodResize(t *testing.T) {
25157
25176
old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
25158
25177
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
25159
25178
err: "",
25160
- }, {
25161
- test: "Pod QoS unchanged, burstable -> burstable, remove limits",
25162
- old: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
25163
- new: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
25164
- err: "",
25165
25179
}, {
25166
25180
test: "Pod QoS unchanged, burstable -> burstable, add requests",
25167
25181
old: mkPod(core.ResourceList{}, getResources("200m", "500Mi", "1Gi", "")),
25168
- new: mkPod(getResources("300m", "", "", ""), getResources("400m", "", "1Gi", "")),
25169
- err: "",
25170
- }, {
25171
- test: "Pod QoS unchanged, burstable -> burstable, remove requests",
25172
- old: mkPod(getResources("100m", "200Mi", "", ""), getResources("200m", "300Mi", "2Gi", "")),
25173
- new: mkPod(core.ResourceList{}, getResources("400m", "500Mi", "2Gi", "")),
25182
+ new: mkPod(getResources("300m", "", "", ""), getResources("400m", "500Mi", "1Gi", "")),
25174
25183
err: "",
25175
25184
}, {
25176
25185
test: "Pod QoS change, guaranteed -> burstable",
@@ -25202,6 +25211,71 @@ func TestValidatePodResize(t *testing.T) {
25202
25211
old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", ""), podtest.SetOS(core.Windows)),
25203
25212
new: mkPod(core.ResourceList{}, getResources("200m", "0", "1Gi", ""), podtest.SetOS(core.Windows)),
25204
25213
err: "Forbidden: windows pods cannot be resized",
25214
+ }, {
25215
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu limit",
25216
+ old: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "", "")),
25217
+ new: mkPod(core.ResourceList{}, getResources("", "100Mi", "", "")),
25218
+ err: "spec.containers[0].resources.limits: Forbidden: resource limits cannot be removed",
25219
+ }, {
25220
+ test: "Pod QoS unchanged, burstable -> burstable, remove memory limit",
25221
+ old: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "", "")),
25222
+ new: mkPod(core.ResourceList{}, getResources("100m", "", "", "")),
25223
+ err: "spec.containers[0].resources.limits: Forbidden: resource limits cannot be removed",
25224
+ }, {
25225
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu request",
25226
+ old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
25227
+ new: mkPod(getResources("", "100Mi", "", ""), core.ResourceList{}),
25228
+ err: "spec.containers[0].resources.requests: Forbidden: resource requests cannot be removed",
25229
+ }, {
25230
+ test: "Pod QoS unchanged, burstable -> burstable, remove memory request",
25231
+ old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
25232
+ new: mkPod(getResources("100m", "", "", ""), core.ResourceList{}),
25233
+ err: "spec.containers[0].resources.requests: Forbidden: resource requests cannot be removed",
25234
+ }, {
25235
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory limits",
25236
+ old: mkPod(getResources("100m", "", "", ""), getResources("100m", "100Mi", "", "")),
25237
+ new: mkPod(getResources("100m", "", "", ""), core.ResourceList{}),
25238
+ err: "spec.containers[0].resources.limits: Forbidden: resource limits cannot be removed",
25239
+ }, {
25240
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory requests",
25241
+ old: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "", "", "")),
25242
+ new: mkPod(core.ResourceList{}, getResources("100m", "", "", "")),
25243
+ err: "spec.containers[0].resources.requests: Forbidden: resource requests cannot be removed",
25244
+ }, {
25245
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu limit",
25246
+ old: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "100Mi", "", ""), core.ContainerRestartPolicyAlways),
25247
+ new: mkPodWithInitContainers(core.ResourceList{}, getResources("", "100Mi", "", ""), core.ContainerRestartPolicyAlways),
25248
+ err: "spec.initContainers[0].resources.limits: Forbidden: resource limits cannot be removed",
25249
+ }, {
25250
+ test: "Pod QoS unchanged, burstable -> burstable, remove memory limit",
25251
+ old: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "100Mi", "", ""), core.ContainerRestartPolicyAlways),
25252
+ new: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "", "", ""), core.ContainerRestartPolicyAlways),
25253
+ err: "spec.initContainers[0].resources.limits: Forbidden: resource limits cannot be removed",
25254
+ }, {
25255
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu request",
25256
+ old: mkPodWithInitContainers(getResources("100m", "100Mi", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25257
+ new: mkPodWithInitContainers(getResources("", "100Mi", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25258
+ err: "spec.initContainers[0].resources.requests: Forbidden: resource requests cannot be removed",
25259
+ }, {
25260
+ test: "Pod QoS unchanged, burstable -> burstable, remove memory request",
25261
+ old: mkPodWithInitContainers(getResources("100m", "100Mi", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25262
+ new: mkPodWithInitContainers(getResources("100m", "", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25263
+ err: "spec.initContainers[0].resources.requests: Forbidden: resource requests cannot be removed",
25264
+ }, {
25265
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory limits",
25266
+ old: mkPodWithInitContainers(getResources("100m", "", "", ""), getResources("100m", "100Mi", "", ""), core.ContainerRestartPolicyAlways),
25267
+ new: mkPodWithInitContainers(getResources("100m", "", "", ""), core.ResourceList{}, core.ContainerRestartPolicyAlways),
25268
+ err: "spec.initContainers[0].resources.limits: Forbidden: resource limits cannot be removed",
25269
+ }, {
25270
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory requests",
25271
+ old: mkPodWithInitContainers(getResources("100m", "100Mi", "", ""), getResources("100m", "", "", ""), core.ContainerRestartPolicyAlways),
25272
+ new: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "", "", ""), core.ContainerRestartPolicyAlways),
25273
+ err: "spec.initContainers[0].resources.requests: Forbidden: resource requests cannot be removed",
25274
+ }, {
25275
+ test: "Pod QoS unchanged, burstable -> burstable, remove cpu and memory requests",
25276
+ old: mkPodWithInitContainers(getResources("100m", "100Mi", "", ""), getResources("100m", "", "", ""), ""),
25277
+ new: mkPodWithInitContainers(core.ResourceList{}, getResources("100m", "", "", ""), ""),
25278
+ err: "spec: Forbidden: only cpu and memory resources are mutable",
25205
25279
},
25206
25280
{
25207
25281
test: "Pod with nil Resource field in Status",
0 commit comments