mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Merge pull request #105980 from ahg-g/ahg-mutable
Make job pod template annotations and labels mutable for suspended jobs that never started
This commit is contained in:
commit
36e69a3303
@ -263,6 +263,8 @@ func validatePodTemplateUpdate(spec, oldSpec batch.JobSpec, fldPath *field.Path,
|
|||||||
}
|
}
|
||||||
oldTemplate.Spec.NodeSelector = template.Spec.NodeSelector // +k8s:verify-mutation:reason=clone
|
oldTemplate.Spec.NodeSelector = template.Spec.NodeSelector // +k8s:verify-mutation:reason=clone
|
||||||
oldTemplate.Spec.Tolerations = template.Spec.Tolerations // +k8s:verify-mutation:reason=clone
|
oldTemplate.Spec.Tolerations = template.Spec.Tolerations // +k8s:verify-mutation:reason=clone
|
||||||
|
oldTemplate.Annotations = template.Annotations // +k8s:verify-mutation:reason=clone
|
||||||
|
oldTemplate.Labels = template.Labels // +k8s:verify-mutation:reason=clone
|
||||||
}
|
}
|
||||||
allErrs = append(allErrs, apivalidation.ValidateImmutableField(template, oldTemplate, fldPath.Child("template"))...)
|
allErrs = append(allErrs, apivalidation.ValidateImmutableField(template, oldTemplate, fldPath.Child("template"))...)
|
||||||
return allErrs
|
return allErrs
|
||||||
|
@ -647,6 +647,72 @@ func TestValidateJobUpdate(t *testing.T) {
|
|||||||
AllowMutableSchedulingDirectives: true,
|
AllowMutableSchedulingDirectives: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"immutable annotations": {
|
||||||
|
old: batch.Job{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
|
||||||
|
Spec: batch.JobSpec{
|
||||||
|
Selector: validGeneratedSelector,
|
||||||
|
Template: validPodTemplateSpecForGenerated,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
update: func(job *batch.Job) {
|
||||||
|
job.Spec.Template.Annotations = map[string]string{"foo": "baz"}
|
||||||
|
},
|
||||||
|
err: &field.Error{
|
||||||
|
Type: field.ErrorTypeInvalid,
|
||||||
|
Field: "spec.template",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"mutable annotations": {
|
||||||
|
old: batch.Job{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
|
||||||
|
Spec: batch.JobSpec{
|
||||||
|
Selector: validGeneratedSelector,
|
||||||
|
Template: validPodTemplateSpecForGenerated,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
update: func(job *batch.Job) {
|
||||||
|
job.Spec.Template.Annotations = map[string]string{"foo": "baz"}
|
||||||
|
},
|
||||||
|
opts: JobValidationOptions{
|
||||||
|
AllowMutableSchedulingDirectives: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"immutable labels": {
|
||||||
|
old: batch.Job{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
|
||||||
|
Spec: batch.JobSpec{
|
||||||
|
Selector: validGeneratedSelector,
|
||||||
|
Template: validPodTemplateSpecForGenerated,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
update: func(job *batch.Job) {
|
||||||
|
newLabels := getValidGeneratedSelector().MatchLabels
|
||||||
|
newLabels["bar"] = "baz"
|
||||||
|
job.Spec.Template.Labels = newLabels
|
||||||
|
},
|
||||||
|
err: &field.Error{
|
||||||
|
Type: field.ErrorTypeInvalid,
|
||||||
|
Field: "spec.template",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"mutable labels": {
|
||||||
|
old: batch.Job{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
|
||||||
|
Spec: batch.JobSpec{
|
||||||
|
Selector: validGeneratedSelector,
|
||||||
|
Template: validPodTemplateSpecForGenerated,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
update: func(job *batch.Job) {
|
||||||
|
newLabels := getValidGeneratedSelector().MatchLabels
|
||||||
|
newLabels["bar"] = "baz"
|
||||||
|
job.Spec.Template.Labels = newLabels
|
||||||
|
},
|
||||||
|
opts: JobValidationOptions{
|
||||||
|
AllowMutableSchedulingDirectives: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
ignoreValueAndDetail := cmpopts.IgnoreFields(field.Error{}, "BadValue", "Detail")
|
ignoreValueAndDetail := cmpopts.IgnoreFields(field.Error{}, "BadValue", "Detail")
|
||||||
for k, tc := range cases {
|
for k, tc := range cases {
|
||||||
|
Loading…
Reference in New Issue
Block a user