mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
test: cleanup validation tests
This commit is contained in:
parent
dc3c4ed559
commit
7ac302b47a
@ -5504,7 +5504,7 @@ func ValidatePodResize(newPod, oldPod *core.Pod, opts PodValidationOptions) fiel
|
|||||||
// newPod.Spec.Containers[].Resources are allowed.
|
// newPod.Spec.Containers[].Resources are allowed.
|
||||||
specPath := field.NewPath("spec")
|
specPath := field.NewPath("spec")
|
||||||
if qos.GetPodQOS(oldPod) != qos.ComputePodQOS(newPod) {
|
if qos.GetPodQOS(oldPod) != qos.ComputePodQOS(newPod) {
|
||||||
allErrs = append(allErrs, field.Invalid(specPath, newPod.Status.QOSClass, "Pod QOS Class must not change"))
|
allErrs = append(allErrs, field.Invalid(specPath, newPod.Status.QOSClass, "Pod QOS Class may not change as a result of resizing"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure that only CPU and memory resources are mutable.
|
// Ensure that only CPU and memory resources are mutable.
|
||||||
@ -5539,7 +5539,7 @@ func ValidatePodResize(newPod, oldPod *core.Pod, opts PodValidationOptions) fiel
|
|||||||
}
|
}
|
||||||
mungedPodSpec.Containers = newContainers
|
mungedPodSpec.Containers = newContainers
|
||||||
if !apiequality.Semantic.DeepEqual(mungedPodSpec, oldPod.Spec) {
|
if !apiequality.Semantic.DeepEqual(mungedPodSpec, oldPod.Spec) {
|
||||||
// This likely means that the user has made changes to CPU and Memory resources.
|
// This likely means that the user has made changes to resources other than CPU and Memory.
|
||||||
specDiff := cmp.Diff(oldPod.Spec, mungedPodSpec)
|
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))
|
errs := field.Forbidden(specPath, fmt.Sprintf("pod resize may not change fields other than cpu and memory\n%v", specDiff))
|
||||||
allErrs = append(allErrs, errs)
|
allErrs = append(allErrs, errs)
|
||||||
|
@ -7795,14 +7795,7 @@ func TestValidateResizePolicy(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getResourceLimits(cpu, memory string) core.ResourceList {
|
func getResources(cpu, memory, ephemeralStorage, persistentStorage string) core.ResourceList {
|
||||||
res := core.ResourceList{}
|
|
||||||
res[core.ResourceCPU] = resource.MustParse(cpu)
|
|
||||||
res[core.ResourceMemory] = resource.MustParse(memory)
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
func getResources(cpu, memory, storage string) core.ResourceList {
|
|
||||||
res := core.ResourceList{}
|
res := core.ResourceList{}
|
||||||
if cpu != "" {
|
if cpu != "" {
|
||||||
res[core.ResourceCPU] = resource.MustParse(cpu)
|
res[core.ResourceCPU] = resource.MustParse(cpu)
|
||||||
@ -7810,8 +7803,11 @@ func getResources(cpu, memory, storage string) core.ResourceList {
|
|||||||
if memory != "" {
|
if memory != "" {
|
||||||
res[core.ResourceMemory] = resource.MustParse(memory)
|
res[core.ResourceMemory] = resource.MustParse(memory)
|
||||||
}
|
}
|
||||||
if storage != "" {
|
if ephemeralStorage != "" {
|
||||||
res[core.ResourceEphemeralStorage] = resource.MustParse(storage)
|
res[core.ResourceEphemeralStorage] = resource.MustParse(ephemeralStorage)
|
||||||
|
}
|
||||||
|
if persistentStorage != "" {
|
||||||
|
res[core.ResourceStorage] = resource.MustParse(persistentStorage)
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
@ -8945,7 +8941,7 @@ func TestValidateContainers(t *testing.T) {
|
|||||||
Name: "abc-123",
|
Name: "abc-123",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Resources: core.ResourceRequirements{
|
Resources: core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("-10", "0"),
|
Limits: getResources("-10", "0", "", ""),
|
||||||
},
|
},
|
||||||
ImagePullPolicy: "IfNotPresent",
|
ImagePullPolicy: "IfNotPresent",
|
||||||
TerminationMessagePolicy: "File",
|
TerminationMessagePolicy: "File",
|
||||||
@ -8958,7 +8954,7 @@ func TestValidateContainers(t *testing.T) {
|
|||||||
Name: "abc-123",
|
Name: "abc-123",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Resources: core.ResourceRequirements{
|
Resources: core.ResourceRequirements{
|
||||||
Requests: getResourceLimits("-10", "0"),
|
Requests: getResources("-10", "0", "", ""),
|
||||||
},
|
},
|
||||||
ImagePullPolicy: "IfNotPresent",
|
ImagePullPolicy: "IfNotPresent",
|
||||||
TerminationMessagePolicy: "File",
|
TerminationMessagePolicy: "File",
|
||||||
@ -8971,7 +8967,7 @@ func TestValidateContainers(t *testing.T) {
|
|||||||
Name: "abc-123",
|
Name: "abc-123",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Resources: core.ResourceRequirements{
|
Resources: core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("0", "-10"),
|
Limits: getResources("0", "-10", "", ""),
|
||||||
},
|
},
|
||||||
ImagePullPolicy: "IfNotPresent",
|
ImagePullPolicy: "IfNotPresent",
|
||||||
TerminationMessagePolicy: "File",
|
TerminationMessagePolicy: "File",
|
||||||
@ -8984,8 +8980,8 @@ func TestValidateContainers(t *testing.T) {
|
|||||||
Name: "abc-123",
|
Name: "abc-123",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Resources: core.ResourceRequirements{
|
Resources: core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("5", "3"),
|
Limits: getResources("5", "3", "", ""),
|
||||||
Requests: getResourceLimits("6", "3"),
|
Requests: getResources("6", "3", "", ""),
|
||||||
},
|
},
|
||||||
ImagePullPolicy: "IfNotPresent",
|
ImagePullPolicy: "IfNotPresent",
|
||||||
TerminationMessagePolicy: "File",
|
TerminationMessagePolicy: "File",
|
||||||
@ -9016,8 +9012,8 @@ func TestValidateContainers(t *testing.T) {
|
|||||||
Name: "abc-123",
|
Name: "abc-123",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Resources: core.ResourceRequirements{
|
Resources: core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("5", "3"),
|
Limits: getResources("5", "3", "", ""),
|
||||||
Requests: getResourceLimits("6", "3"),
|
Requests: getResources("6", "3", "", ""),
|
||||||
},
|
},
|
||||||
ImagePullPolicy: "IfNotPresent",
|
ImagePullPolicy: "IfNotPresent",
|
||||||
TerminationMessagePolicy: "File",
|
TerminationMessagePolicy: "File",
|
||||||
@ -9030,8 +9026,8 @@ func TestValidateContainers(t *testing.T) {
|
|||||||
Name: "abc-123",
|
Name: "abc-123",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Resources: core.ResourceRequirements{
|
Resources: core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("5", "3"),
|
Limits: getResources("5", "3", "", ""),
|
||||||
Requests: getResourceLimits("5", "4"),
|
Requests: getResources("5", "4", "", ""),
|
||||||
},
|
},
|
||||||
ImagePullPolicy: "IfNotPresent",
|
ImagePullPolicy: "IfNotPresent",
|
||||||
TerminationMessagePolicy: "File",
|
TerminationMessagePolicy: "File",
|
||||||
@ -12317,10 +12313,10 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
new core.Pod
|
|
||||||
old core.Pod
|
|
||||||
err string
|
|
||||||
test string
|
test string
|
||||||
|
old core.Pod
|
||||||
|
new core.Pod
|
||||||
|
err string
|
||||||
}{
|
}{
|
||||||
{new: *podtest.MakePod(""), old: *podtest.MakePod(""), err: "", test: "nothing"}, {
|
{new: *podtest.MakePod(""), old: *podtest.MakePod(""), err: "", test: "nothing"}, {
|
||||||
new: *podtest.MakePod("foo"),
|
new: *podtest.MakePod("foo"),
|
||||||
@ -12486,13 +12482,13 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("200m", "0", "1Gi"),
|
Limits: getResources("200m", "0", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("100m", "0", "1Gi"),
|
Limits: getResources("100m", "0", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12501,13 +12497,13 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("100m", "100Mi"),
|
Limits: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("100m", "200Mi"),
|
Limits: getResources("100m", "200Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12516,13 +12512,13 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("100m", "100Mi", "1Gi"),
|
Limits: getResources("100m", "100Mi", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("100m", "100Mi", "2Gi"),
|
Limits: getResources("100m", "100Mi", "2Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "Forbidden: pod updates may not change fields other than",
|
err: "Forbidden: pod updates may not change fields other than",
|
||||||
@ -12531,13 +12527,13 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResourceLimits("100m", "0"),
|
Requests: getResources("100m", "0", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResourceLimits("200m", "0"),
|
Requests: getResources("200m", "0", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12546,13 +12542,13 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResourceLimits("0", "200Mi"),
|
Requests: getResources("0", "200Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResourceLimits("0", "100Mi"),
|
Requests: getResources("0", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12561,13 +12557,13 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResources("100m", "0", "2Gi"),
|
Requests: getResources("100m", "0", "2Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResources("100m", "0", "1Gi"),
|
Requests: getResources("100m", "0", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "Forbidden: pod updates may not change fields other than",
|
err: "Forbidden: pod updates may not change fields other than",
|
||||||
@ -12576,15 +12572,15 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("200m", "400Mi", "1Gi"),
|
Limits: getResources("200m", "400Mi", "1Gi", ""),
|
||||||
Requests: getResources("200m", "400Mi", "1Gi"),
|
Requests: getResources("200m", "400Mi", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("100m", "100Mi", "1Gi"),
|
Limits: getResources("100m", "100Mi", "1Gi", ""),
|
||||||
Requests: getResources("100m", "100Mi", "1Gi"),
|
Requests: getResources("100m", "100Mi", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12593,15 +12589,15 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("200m", "200Mi", "2Gi"),
|
Limits: getResources("200m", "200Mi", "2Gi", ""),
|
||||||
Requests: getResources("100m", "100Mi", "1Gi"),
|
Requests: getResources("100m", "100Mi", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("400m", "400Mi", "2Gi"),
|
Limits: getResources("400m", "400Mi", "2Gi", ""),
|
||||||
Requests: getResources("200m", "200Mi", "1Gi"),
|
Requests: getResources("200m", "200Mi", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12610,14 +12606,14 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
Limits: getResources("200m", "200Mi", "", ""),
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12626,14 +12622,14 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
Limits: getResources("200m", "200Mi", "", ""),
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12642,14 +12638,14 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("400m", "", "1Gi"),
|
Limits: getResources("400m", "", "1Gi", ""),
|
||||||
Requests: getResources("300m", "", "1Gi"),
|
Requests: getResources("300m", "", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("200m", "500Mi", "1Gi"),
|
Limits: getResources("200m", "500Mi", "1Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12658,14 +12654,14 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("400m", "500Mi", "2Gi"),
|
Limits: getResources("400m", "500Mi", "2Gi", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResources("200m", "300Mi", "2Gi"),
|
Limits: getResources("200m", "300Mi", "2Gi", ""),
|
||||||
Requests: getResourceLimits("100m", "200Mi"),
|
Requests: getResources("100m", "200Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12674,15 +12670,15 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
Limits: getResources("200m", "200Mi", "", ""),
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("100m", "100Mi"),
|
Limits: getResources("100m", "100Mi", "", ""),
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12691,14 +12687,14 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("100m", "100Mi"),
|
Limits: getResources("100m", "100Mi", "", ""),
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -12707,8 +12703,8 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
new: *podtest.MakePod("pod",
|
new: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
Limits: getResources("200m", "200Mi", "", ""),
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
old: *podtest.MakePod("pod"),
|
old: *podtest.MakePod("pod"),
|
||||||
@ -12719,8 +12715,8 @@ func TestValidatePodUpdate(t *testing.T) {
|
|||||||
old: *podtest.MakePod("pod",
|
old: *podtest.MakePod("pod",
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
podtest.SetContainers(podtest.MakeContainer("container",
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
podtest.SetContainerResources(core.ResourceRequirements{
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
Limits: getResources("200m", "200Mi", "", ""),
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
Requests: getResources("100m", "100Mi", "", ""),
|
||||||
}))),
|
}))),
|
||||||
),
|
),
|
||||||
err: "spec: Forbidden: pod updates may not change fields",
|
err: "spec: Forbidden: pod updates may not change fields",
|
||||||
@ -18692,33 +18688,6 @@ func TestValidateResourceNames(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getResourceList(cpu, memory string) core.ResourceList {
|
|
||||||
res := core.ResourceList{}
|
|
||||||
if cpu != "" {
|
|
||||||
res[core.ResourceCPU] = resource.MustParse(cpu)
|
|
||||||
}
|
|
||||||
if memory != "" {
|
|
||||||
res[core.ResourceMemory] = resource.MustParse(memory)
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
func getStorageResourceList(storage string) core.ResourceList {
|
|
||||||
res := core.ResourceList{}
|
|
||||||
if storage != "" {
|
|
||||||
res[core.ResourceStorage] = resource.MustParse(storage)
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
func getLocalStorageResourceList(ephemeralStorage string) core.ResourceList {
|
|
||||||
res := core.ResourceList{}
|
|
||||||
if ephemeralStorage != "" {
|
|
||||||
res[core.ResourceEphemeralStorage] = resource.MustParse(ephemeralStorage)
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidateLimitRangeForLocalStorage(t *testing.T) {
|
func TestValidateLimitRangeForLocalStorage(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
@ -18728,16 +18697,16 @@ func TestValidateLimitRangeForLocalStorage(t *testing.T) {
|
|||||||
spec: core.LimitRangeSpec{
|
spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePod,
|
Type: core.LimitTypePod,
|
||||||
Max: getLocalStorageResourceList("10000Mi"),
|
Max: getResources("", "", "10000Mi", ""),
|
||||||
Min: getLocalStorageResourceList("100Mi"),
|
Min: getResources("", "", "100Mi", ""),
|
||||||
MaxLimitRequestRatio: getLocalStorageResourceList(""),
|
MaxLimitRequestRatio: getResources("", "", "", ""),
|
||||||
}, {
|
}, {
|
||||||
Type: core.LimitTypeContainer,
|
Type: core.LimitTypeContainer,
|
||||||
Max: getLocalStorageResourceList("10000Mi"),
|
Max: getResources("", "", "10000Mi", ""),
|
||||||
Min: getLocalStorageResourceList("100Mi"),
|
Min: getResources("", "", "100Mi", ""),
|
||||||
Default: getLocalStorageResourceList("500Mi"),
|
Default: getResources("", "", "500Mi", ""),
|
||||||
DefaultRequest: getLocalStorageResourceList("200Mi"),
|
DefaultRequest: getResources("", "", "200Mi", ""),
|
||||||
MaxLimitRequestRatio: getLocalStorageResourceList(""),
|
MaxLimitRequestRatio: getResources("", "", "", ""),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -18760,20 +18729,20 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
spec: core.LimitRangeSpec{
|
spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePod,
|
Type: core.LimitTypePod,
|
||||||
Max: getResourceList("100m", "10000Mi"),
|
Max: getResources("100m", "10000Mi", "", ""),
|
||||||
Min: getResourceList("5m", "100Mi"),
|
Min: getResources("5m", "100Mi", "", ""),
|
||||||
MaxLimitRequestRatio: getResourceList("10", ""),
|
MaxLimitRequestRatio: getResources("10", "", "", ""),
|
||||||
}, {
|
}, {
|
||||||
Type: core.LimitTypeContainer,
|
Type: core.LimitTypeContainer,
|
||||||
Max: getResourceList("100m", "10000Mi"),
|
Max: getResources("100m", "10000Mi", "", ""),
|
||||||
Min: getResourceList("5m", "100Mi"),
|
Min: getResources("5m", "100Mi", "", ""),
|
||||||
Default: getResourceList("50m", "500Mi"),
|
Default: getResources("50m", "500Mi", "", ""),
|
||||||
DefaultRequest: getResourceList("10m", "200Mi"),
|
DefaultRequest: getResources("10m", "200Mi", "", ""),
|
||||||
MaxLimitRequestRatio: getResourceList("10", ""),
|
MaxLimitRequestRatio: getResources("10", "", "", ""),
|
||||||
}, {
|
}, {
|
||||||
Type: core.LimitTypePersistentVolumeClaim,
|
Type: core.LimitTypePersistentVolumeClaim,
|
||||||
Max: getStorageResourceList("10Gi"),
|
Max: getResources("", "", "", "10Gi"),
|
||||||
Min: getStorageResourceList("5Gi"),
|
Min: getResources("", "", "", "5Gi"),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
@ -18781,7 +18750,7 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
spec: core.LimitRangeSpec{
|
spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePersistentVolumeClaim,
|
Type: core.LimitTypePersistentVolumeClaim,
|
||||||
Min: getStorageResourceList("5Gi"),
|
Min: getResources("", "", "", "5Gi"),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
@ -18789,7 +18758,7 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
spec: core.LimitRangeSpec{
|
spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePersistentVolumeClaim,
|
Type: core.LimitTypePersistentVolumeClaim,
|
||||||
Max: getStorageResourceList("10Gi"),
|
Max: getResources("", "", "", "10Gi"),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
@ -18797,11 +18766,11 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
spec: core.LimitRangeSpec{
|
spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypeContainer,
|
Type: core.LimitTypeContainer,
|
||||||
Max: getResourceList("100m", "10000T"),
|
Max: getResources("100m", "10000T", "", ""),
|
||||||
Min: getResourceList("5m", "100Mi"),
|
Min: getResources("5m", "100Mi", "", ""),
|
||||||
Default: getResourceList("50m", "500Mi"),
|
Default: getResources("50m", "500Mi", "", ""),
|
||||||
DefaultRequest: getResourceList("10m", "200Mi"),
|
DefaultRequest: getResources("10m", "200Mi", "", ""),
|
||||||
MaxLimitRequestRatio: getResourceList("10", ""),
|
MaxLimitRequestRatio: getResources("10", "", "", ""),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
@ -18809,11 +18778,11 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
spec: core.LimitRangeSpec{
|
spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: "thirdparty.com/foo",
|
Type: "thirdparty.com/foo",
|
||||||
Max: getResourceList("100m", "10000T"),
|
Max: getResources("100m", "10000T", "", ""),
|
||||||
Min: getResourceList("5m", "100Mi"),
|
Min: getResources("5m", "100Mi", "", ""),
|
||||||
Default: getResourceList("50m", "500Mi"),
|
Default: getResources("50m", "500Mi", "", ""),
|
||||||
DefaultRequest: getResourceList("10m", "200Mi"),
|
DefaultRequest: getResources("10m", "200Mi", "", ""),
|
||||||
MaxLimitRequestRatio: getResourceList("10", ""),
|
MaxLimitRequestRatio: getResources("10", "", "", ""),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
@ -18821,11 +18790,11 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
spec: core.LimitRangeSpec{
|
spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: "thirdparty.com/foo",
|
Type: "thirdparty.com/foo",
|
||||||
Max: getStorageResourceList("10000T"),
|
Max: getResources("", "", "", "10000T"),
|
||||||
Min: getStorageResourceList("100Mi"),
|
Min: getResources("", "", "", "100Mi"),
|
||||||
Default: getStorageResourceList("500Mi"),
|
Default: getResources("", "", "", "500Mi"),
|
||||||
DefaultRequest: getStorageResourceList("200Mi"),
|
DefaultRequest: getResources("", "", "", "200Mi"),
|
||||||
MaxLimitRequestRatio: getStorageResourceList(""),
|
MaxLimitRequestRatio: getResources("", "", "", ""),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -18862,11 +18831,11 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePod,
|
Type: core.LimitTypePod,
|
||||||
Max: getResourceList("100m", "10000m"),
|
Max: getResources("100m", "10000m", "", ""),
|
||||||
Min: getResourceList("0m", "100m"),
|
Min: getResources("0m", "100m", "", ""),
|
||||||
}, {
|
}, {
|
||||||
Type: core.LimitTypePod,
|
Type: core.LimitTypePod,
|
||||||
Min: getResourceList("0m", "100m"),
|
Min: getResources("0m", "100m", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"",
|
"",
|
||||||
@ -18875,9 +18844,9 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePod,
|
Type: core.LimitTypePod,
|
||||||
Max: getResourceList("100m", "10000m"),
|
Max: getResources("100m", "10000m", "", ""),
|
||||||
Min: getResourceList("0m", "100m"),
|
Min: getResources("0m", "100m", "", ""),
|
||||||
Default: getResourceList("10m", "100m"),
|
Default: getResources("10m", "100m", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"may not be specified when `type` is 'Pod'",
|
"may not be specified when `type` is 'Pod'",
|
||||||
@ -18886,9 +18855,9 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePod,
|
Type: core.LimitTypePod,
|
||||||
Max: getResourceList("100m", "10000m"),
|
Max: getResources("100m", "10000m", "", ""),
|
||||||
Min: getResourceList("0m", "100m"),
|
Min: getResources("0m", "100m", "", ""),
|
||||||
DefaultRequest: getResourceList("10m", "100m"),
|
DefaultRequest: getResources("10m", "100m", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"may not be specified when `type` is 'Pod'",
|
"may not be specified when `type` is 'Pod'",
|
||||||
@ -18897,8 +18866,8 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePod,
|
Type: core.LimitTypePod,
|
||||||
Max: getResourceList("10m", ""),
|
Max: getResources("10m", "", "", ""),
|
||||||
Min: getResourceList("100m", ""),
|
Min: getResources("100m", "", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"min value 100m is greater than max value 10m",
|
"min value 100m is greater than max value 10m",
|
||||||
@ -18907,9 +18876,9 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypeContainer,
|
Type: core.LimitTypeContainer,
|
||||||
Max: getResourceList("1", ""),
|
Max: getResources("1", "", "", ""),
|
||||||
Min: getResourceList("100m", ""),
|
Min: getResources("100m", "", "", ""),
|
||||||
Default: getResourceList("2000m", ""),
|
Default: getResources("2000m", "", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"default value 2 is greater than max value 1",
|
"default value 2 is greater than max value 1",
|
||||||
@ -18918,9 +18887,9 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypeContainer,
|
Type: core.LimitTypeContainer,
|
||||||
Max: getResourceList("1", ""),
|
Max: getResources("1", "", "", ""),
|
||||||
Min: getResourceList("100m", ""),
|
Min: getResources("100m", "", "", ""),
|
||||||
DefaultRequest: getResourceList("2000m", ""),
|
DefaultRequest: getResources("2000m", "", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"default request value 2 is greater than max value 1",
|
"default request value 2 is greater than max value 1",
|
||||||
@ -18929,10 +18898,10 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypeContainer,
|
Type: core.LimitTypeContainer,
|
||||||
Max: getResourceList("2", ""),
|
Max: getResources("2", "", "", ""),
|
||||||
Min: getResourceList("100m", ""),
|
Min: getResources("100m", "", "", ""),
|
||||||
Default: getResourceList("500m", ""),
|
Default: getResources("500m", "", "", ""),
|
||||||
DefaultRequest: getResourceList("800m", ""),
|
DefaultRequest: getResources("800m", "", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"default request value 800m is greater than default limit value 500m",
|
"default request value 800m is greater than default limit value 500m",
|
||||||
@ -18941,7 +18910,7 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePod,
|
Type: core.LimitTypePod,
|
||||||
MaxLimitRequestRatio: getResourceList("800m", ""),
|
MaxLimitRequestRatio: getResources("800m", "", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"ratio 800m is less than 1",
|
"ratio 800m is less than 1",
|
||||||
@ -18950,9 +18919,9 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypeContainer,
|
Type: core.LimitTypeContainer,
|
||||||
Max: getResourceList("", "2Gi"),
|
Max: getResources("", "2Gi", "", ""),
|
||||||
Min: getResourceList("", "512Mi"),
|
Min: getResources("", "512Mi", "", ""),
|
||||||
MaxLimitRequestRatio: getResourceList("", "10"),
|
MaxLimitRequestRatio: getResources("", "10", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"ratio 10 is greater than max/min = 4.000000",
|
"ratio 10 is greater than max/min = 4.000000",
|
||||||
@ -18961,11 +18930,11 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: "foo",
|
Type: "foo",
|
||||||
Max: getStorageResourceList("10000T"),
|
Max: getResources("", "", "", "10000T"),
|
||||||
Min: getStorageResourceList("100Mi"),
|
Min: getResources("", "", "", "100Mi"),
|
||||||
Default: getStorageResourceList("500Mi"),
|
Default: getResources("", "", "", "500Mi"),
|
||||||
DefaultRequest: getStorageResourceList("200Mi"),
|
DefaultRequest: getResources("", "", "", "200Mi"),
|
||||||
MaxLimitRequestRatio: getStorageResourceList(""),
|
MaxLimitRequestRatio: getResources("", "", "", ""),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"must be a standard limit type or fully qualified",
|
"must be a standard limit type or fully qualified",
|
||||||
@ -18982,8 +18951,8 @@ func TestValidateLimitRange(t *testing.T) {
|
|||||||
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
core.LimitRange{ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: "foo"}, Spec: core.LimitRangeSpec{
|
||||||
Limits: []core.LimitRangeItem{{
|
Limits: []core.LimitRangeItem{{
|
||||||
Type: core.LimitTypePersistentVolumeClaim,
|
Type: core.LimitTypePersistentVolumeClaim,
|
||||||
Min: getStorageResourceList("10Gi"),
|
Min: getResources("", "", "", "10Gi"),
|
||||||
Max: getStorageResourceList("1Gi"),
|
Max: getResources("", "", "", "1Gi"),
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
"min value 10Gi is greater than max value 1Gi",
|
"min value 10Gi is greater than max value 1Gi",
|
||||||
@ -25106,255 +25075,110 @@ func TestValidateSELinuxChangePolicy(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestValidatePodResize(t *testing.T) {
|
func TestValidatePodResize(t *testing.T) {
|
||||||
|
mkPod := func(req, lim core.ResourceList, tweaks ...podtest.TweakContainer) *core.Pod {
|
||||||
|
return podtest.MakePod("pod",
|
||||||
|
podtest.SetContainers(
|
||||||
|
podtest.MakeContainer(
|
||||||
|
"container",
|
||||||
|
append(tweaks,
|
||||||
|
podtest.SetContainerResources(
|
||||||
|
core.ResourceRequirements{
|
||||||
|
Requests: req,
|
||||||
|
Limits: lim,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)...,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
new core.Pod
|
|
||||||
old core.Pod
|
|
||||||
err string
|
|
||||||
test string
|
test string
|
||||||
|
old *core.Pod
|
||||||
|
new *core.Pod
|
||||||
|
err string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
new: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("200m", "0", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("100m", "0", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
|
||||||
test: "cpu limit change",
|
test: "cpu limit change",
|
||||||
}, {
|
old: mkPod(core.ResourceList{}, getResources("100m", "0", "1Gi", "")),
|
||||||
new: *podtest.MakePod("pod",
|
new: mkPod(core.ResourceList{}, getResources("200m", "0", "1Gi", "")),
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("100m", "200Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
err: "",
|
||||||
|
}, {
|
||||||
test: "memory limit change",
|
test: "memory limit change",
|
||||||
|
old: mkPod(core.ResourceList{}, getResources("100m", "200Mi", "", "")),
|
||||||
|
new: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "", "")),
|
||||||
|
err: "",
|
||||||
}, {
|
}, {
|
||||||
new: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("100m", "100Mi", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("100m", "100Mi", "2Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "spec: Forbidden: pod resize may not change fields other than cpu and memory",
|
|
||||||
test: "storage limit change",
|
test: "storage limit change",
|
||||||
}, {
|
old: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "2Gi", "")),
|
||||||
new: *podtest.MakePod("pod",
|
new: mkPod(core.ResourceList{}, getResources("100m", "100Mi", "1Gi", "")),
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResourceLimits("100m", "0"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResourceLimits("200m", "0"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
|
||||||
test: "cpu request change",
|
|
||||||
}, {
|
|
||||||
new: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResourceLimits("0", "200Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResourceLimits("0", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
|
||||||
test: "memory request change",
|
|
||||||
}, {
|
|
||||||
new: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResources("100m", "0", "2Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResources("100m", "0", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "spec: Forbidden: pod resize may not change fields other than cpu and memory",
|
err: "spec: Forbidden: pod resize may not change fields other than cpu and memory",
|
||||||
|
}, {
|
||||||
|
test: "cpu request change",
|
||||||
|
old: mkPod(getResources("200m", "0", "", ""), core.ResourceList{}),
|
||||||
|
new: mkPod(getResources("100m", "0", "", ""), core.ResourceList{}),
|
||||||
|
err: "",
|
||||||
|
}, {
|
||||||
|
test: "memory request change",
|
||||||
|
old: mkPod(getResources("0", "100Mi", "", ""), core.ResourceList{}),
|
||||||
|
new: mkPod(getResources("0", "200Mi", "", ""), core.ResourceList{}),
|
||||||
|
err: "",
|
||||||
|
}, {
|
||||||
test: "storage request change",
|
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",
|
||||||
}, {
|
}, {
|
||||||
new: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("200m", "400Mi", "1Gi"),
|
|
||||||
Requests: getResources("200m", "400Mi", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("100m", "100Mi", "1Gi"),
|
|
||||||
Requests: getResources("100m", "100Mi", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
|
||||||
test: "Pod QoS unchanged, guaranteed -> guaranteed",
|
test: "Pod QoS unchanged, guaranteed -> guaranteed",
|
||||||
}, {
|
old: mkPod(getResources("100m", "100Mi", "1Gi", ""), getResources("100m", "100Mi", "1Gi", "")),
|
||||||
new: *podtest.MakePod("pod",
|
new: mkPod(getResources("200m", "400Mi", "1Gi", ""), getResources("200m", "400Mi", "1Gi", "")),
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("200m", "200Mi", "2Gi"),
|
|
||||||
Requests: getResources("100m", "100Mi", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("400m", "400Mi", "2Gi"),
|
|
||||||
Requests: getResources("200m", "200Mi", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
err: "",
|
||||||
|
}, {
|
||||||
test: "Pod QoS unchanged, burstable -> burstable",
|
test: "Pod QoS unchanged, burstable -> burstable",
|
||||||
}, {
|
old: mkPod(getResources("200m", "200Mi", "1Gi", ""), getResources("400m", "400Mi", "2Gi", "")),
|
||||||
new: *podtest.MakePod("pod",
|
new: mkPod(getResources("100m", "100Mi", "1Gi", ""), getResources("200m", "200Mi", "2Gi", "")),
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
err: "",
|
||||||
|
}, {
|
||||||
test: "Pod QoS unchanged, burstable -> burstable, add limits",
|
test: "Pod QoS unchanged, burstable -> burstable, add limits",
|
||||||
}, {
|
old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
|
||||||
new: *podtest.MakePod("pod",
|
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
err: "",
|
||||||
|
}, {
|
||||||
test: "Pod QoS unchanged, burstable -> burstable, remove limits",
|
test: "Pod QoS unchanged, burstable -> burstable, remove limits",
|
||||||
}, {
|
old: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
|
||||||
new: *podtest.MakePod("pod",
|
new: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("400m", "", "1Gi"),
|
|
||||||
Requests: getResources("300m", "", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("200m", "500Mi", "1Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
err: "",
|
||||||
|
}, {
|
||||||
test: "Pod QoS unchanged, burstable -> burstable, add requests",
|
test: "Pod QoS unchanged, burstable -> burstable, add requests",
|
||||||
}, {
|
old: mkPod(core.ResourceList{}, getResources("200m", "500Mi", "1Gi", "")),
|
||||||
new: *podtest.MakePod("pod",
|
new: mkPod(getResources("300m", "", "", ""), getResources("400m", "", "1Gi", "")),
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("400m", "500Mi", "2Gi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResources("200m", "300Mi", "2Gi"),
|
|
||||||
Requests: getResourceLimits("100m", "200Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "",
|
err: "",
|
||||||
|
}, {
|
||||||
test: "Pod QoS unchanged, burstable -> burstable, remove requests",
|
test: "Pod QoS unchanged, burstable -> burstable, remove requests",
|
||||||
|
old: mkPod(getResources("100m", "200Mi", "", ""), getResources("200m", "300Mi", "2Gi", "")),
|
||||||
|
new: mkPod(core.ResourceList{}, getResources("400m", "500Mi", "2Gi", "")),
|
||||||
|
err: "",
|
||||||
}, {
|
}, {
|
||||||
new: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("100m", "100Mi"),
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "Pod QOS Class must not change",
|
|
||||||
test: "Pod QoS change, guaranteed -> burstable",
|
test: "Pod QoS change, guaranteed -> burstable",
|
||||||
|
old: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "100Mi", "", "")),
|
||||||
|
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
|
||||||
|
err: "Pod QOS Class may not change as a result of resizing",
|
||||||
}, {
|
}, {
|
||||||
new: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("100m", "100Mi"),
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "Pod QOS Class must not change",
|
|
||||||
test: "Pod QoS change, burstable -> guaranteed",
|
test: "Pod QoS change, burstable -> guaranteed",
|
||||||
|
old: mkPod(getResources("100m", "100Mi", "", ""), core.ResourceList{}),
|
||||||
|
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("100m", "100Mi", "", "")),
|
||||||
|
err: "Pod QOS Class may not change as a result of resizing",
|
||||||
}, {
|
}, {
|
||||||
new: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
old: *podtest.MakePod("pod"),
|
|
||||||
err: "Pod QOS Class must not change",
|
|
||||||
test: "Pod QoS change, besteffort -> burstable",
|
test: "Pod QoS change, besteffort -> burstable",
|
||||||
|
old: mkPod(core.ResourceList{}, core.ResourceList{}),
|
||||||
|
new: mkPod(getResources("100m", "100Mi", "", ""), getResources("200m", "200Mi", "", "")),
|
||||||
|
err: "Pod QOS Class may not change as a result of resizing",
|
||||||
}, {
|
}, {
|
||||||
new: *podtest.MakePod("pod"),
|
|
||||||
old: *podtest.MakePod("pod",
|
|
||||||
podtest.SetContainers(podtest.MakeContainer("container",
|
|
||||||
podtest.SetContainerResources(core.ResourceRequirements{
|
|
||||||
Limits: getResourceLimits("200m", "200Mi"),
|
|
||||||
Requests: getResourceLimits("100m", "100Mi"),
|
|
||||||
}))),
|
|
||||||
),
|
|
||||||
err: "Pod QOS Class must not change",
|
|
||||||
test: "Pod QoS change, burstable -> besteffort",
|
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",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25384,7 +25208,7 @@ func TestValidatePodResize(t *testing.T) {
|
|||||||
test.old.Spec.RestartPolicy = "Always"
|
test.old.Spec.RestartPolicy = "Always"
|
||||||
}
|
}
|
||||||
|
|
||||||
errs := ValidatePodResize(&test.new, &test.old, PodValidationOptions{})
|
errs := ValidatePodResize(test.new, test.old, PodValidationOptions{})
|
||||||
if test.err == "" {
|
if test.err == "" {
|
||||||
if len(errs) != 0 {
|
if len(errs) != 0 {
|
||||||
t.Errorf("unexpected invalid: %s (%+v)\nA: %+v\nB: %+v", test.test, errs, test.new, test.old)
|
t.Errorf("unexpected invalid: %s (%+v)\nA: %+v\nB: %+v", test.test, errs, test.new, test.old)
|
||||||
|
Loading…
Reference in New Issue
Block a user