mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 05:03:09 +00:00
Merge pull request #59291 from bsalamat/fix_validation
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Remove validation failure of Pod priority when the feature is disabled **What this PR does / why we need it**: I learned that fields specified in the API should be silently ignored when the feature is disabled. This makes sense as downgrading a cluster would fail otherwise. This PR removes the validation logic that ensures Pod priority is not set when priority feature is disabled. **Special notes for your reviewer**: **Release note**: ```release-note Pod priority can be specified ins PodSpec even when the feature is disabled, but it will be effective only when the feature is enabled. ``` /sig scheduling ref: #57471
This commit is contained in:
commit
245ca8ef1f
@ -2917,19 +2917,13 @@ func ValidatePodSpec(spec *core.PodSpec, fldPath *field.Path) field.ErrorList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(spec.PriorityClassName) > 0 {
|
if len(spec.PriorityClassName) > 0 {
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(features.PodPriority) {
|
if utilfeature.DefaultFeatureGate.Enabled(features.PodPriority) {
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath.Child("priorityClassName"), "Pod priority is disabled by feature-gate"))
|
|
||||||
} else {
|
|
||||||
for _, msg := range ValidatePriorityClassName(spec.PriorityClassName, false) {
|
for _, msg := range ValidatePriorityClassName(spec.PriorityClassName, false) {
|
||||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("priorityClassName"), spec.PriorityClassName, msg))
|
allErrs = append(allErrs, field.Invalid(fldPath.Child("priorityClassName"), spec.PriorityClassName, msg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if spec.Priority != nil && !utilfeature.DefaultFeatureGate.Enabled(features.PodPriority) {
|
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath.Child("priority"), "Pod priority is disabled by feature-gate"))
|
|
||||||
}
|
|
||||||
|
|
||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5970,34 +5970,6 @@ func TestValidatePodSpec(t *testing.T) {
|
|||||||
t.Errorf("expected failure for %q", k)
|
t.Errorf("expected failure for %q", k)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = utilfeature.DefaultFeatureGate.Set("PodPriority=false")
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Failed to disable feature gate for PodPriority: %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
priority := int32(100)
|
|
||||||
featuregatedCases := map[string]core.PodSpec{
|
|
||||||
"set PriorityClassName": {
|
|
||||||
Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
|
|
||||||
Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
|
|
||||||
RestartPolicy: core.RestartPolicyAlways,
|
|
||||||
DNSPolicy: core.DNSClusterFirst,
|
|
||||||
PriorityClassName: "valid-name",
|
|
||||||
},
|
|
||||||
"set Priority": {
|
|
||||||
Volumes: []core.Volume{{Name: "vol", VolumeSource: core.VolumeSource{EmptyDir: &core.EmptyDirVolumeSource{}}}},
|
|
||||||
Containers: []core.Container{{Name: "ctr", Image: "image", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}},
|
|
||||||
RestartPolicy: core.RestartPolicyAlways,
|
|
||||||
DNSPolicy: core.DNSClusterFirst,
|
|
||||||
Priority: &priority,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for k, v := range featuregatedCases {
|
|
||||||
if errs := ValidatePodSpec(&v, field.NewPath("field")); len(errs) == 0 {
|
|
||||||
t.Errorf("expected failure due to gated feature: %q", k)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func extendPodSpecwithTolerations(in core.PodSpec, tolerations []core.Toleration) core.PodSpec {
|
func extendPodSpecwithTolerations(in core.PodSpec, tolerations []core.Toleration) core.PodSpec {
|
||||||
|
Loading…
Reference in New Issue
Block a user