mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-27 05:04:52 +00:00
Call conditional validation from create/update strategies
This commit is contained in:
@@ -18,6 +18,7 @@ go_library(
|
||||
"//pkg/api/pod:go_default_library",
|
||||
"//pkg/apis/batch:go_default_library",
|
||||
"//pkg/apis/batch/validation:go_default_library",
|
||||
"//pkg/apis/core/validation:go_default_library",
|
||||
"//staging/src/k8s.io/api/batch/v1beta1:go_default_library",
|
||||
"//staging/src/k8s.io/api/batch/v2alpha1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
|
@@ -31,6 +31,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api/pod"
|
||||
"k8s.io/kubernetes/pkg/apis/batch"
|
||||
"k8s.io/kubernetes/pkg/apis/batch/validation"
|
||||
corevalidation "k8s.io/kubernetes/pkg/apis/core/validation"
|
||||
)
|
||||
|
||||
// cronJobStrategy implements verification logic for Replication Controllers.
|
||||
@@ -83,7 +84,9 @@ func (cronJobStrategy) PrepareForUpdate(ctx context.Context, obj, old runtime.Ob
|
||||
// Validate validates a new scheduled job.
|
||||
func (cronJobStrategy) Validate(ctx context.Context, obj runtime.Object) field.ErrorList {
|
||||
cronJob := obj.(*batch.CronJob)
|
||||
return validation.ValidateCronJob(cronJob)
|
||||
allErrs := validation.ValidateCronJob(cronJob)
|
||||
allErrs = append(allErrs, corevalidation.ValidateConditionalPodTemplate(&cronJob.Spec.JobTemplate.Spec.Template, nil, field.NewPath("spec.jobTemplate.spec.template"))...)
|
||||
return allErrs
|
||||
}
|
||||
|
||||
// Canonicalize normalizes the object after validation.
|
||||
@@ -101,7 +104,14 @@ func (cronJobStrategy) AllowCreateOnUpdate() bool {
|
||||
|
||||
// ValidateUpdate is the default update validation for an end user.
|
||||
func (cronJobStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.Object) field.ErrorList {
|
||||
return validation.ValidateCronJobUpdate(obj.(*batch.CronJob), old.(*batch.CronJob))
|
||||
newCronJob := obj.(*batch.CronJob)
|
||||
oldCronJob := old.(*batch.CronJob)
|
||||
allErrs := validation.ValidateCronJobUpdate(newCronJob, oldCronJob)
|
||||
allErrs = append(allErrs, corevalidation.ValidateConditionalPodTemplate(
|
||||
&newCronJob.Spec.JobTemplate.Spec.Template,
|
||||
&oldCronJob.Spec.JobTemplate.Spec.Template,
|
||||
field.NewPath("spec.jobTemplate.spec.template"))...)
|
||||
return allErrs
|
||||
}
|
||||
|
||||
type cronJobStatusStrategy struct {
|
||||
|
@@ -18,6 +18,7 @@ go_library(
|
||||
"//pkg/api/pod:go_default_library",
|
||||
"//pkg/apis/batch:go_default_library",
|
||||
"//pkg/apis/batch/validation:go_default_library",
|
||||
"//pkg/apis/core/validation:go_default_library",
|
||||
"//pkg/features:go_default_library",
|
||||
"//staging/src/k8s.io/api/batch/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
|
@@ -38,6 +38,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api/pod"
|
||||
"k8s.io/kubernetes/pkg/apis/batch"
|
||||
"k8s.io/kubernetes/pkg/apis/batch/validation"
|
||||
corevalidation "k8s.io/kubernetes/pkg/apis/core/validation"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
)
|
||||
|
||||
@@ -103,7 +104,9 @@ func (jobStrategy) Validate(ctx context.Context, obj runtime.Object) field.Error
|
||||
if job.Spec.ManualSelector == nil || *job.Spec.ManualSelector == false {
|
||||
generateSelector(job)
|
||||
}
|
||||
return validation.ValidateJob(job)
|
||||
allErrs := validation.ValidateJob(job)
|
||||
allErrs = append(allErrs, corevalidation.ValidateConditionalPodTemplate(&job.Spec.Template, nil, field.NewPath("spec.template"))...)
|
||||
return allErrs
|
||||
}
|
||||
|
||||
// generateSelector adds a selector to a job and labels to its template
|
||||
@@ -171,8 +174,11 @@ func (jobStrategy) AllowCreateOnUpdate() bool {
|
||||
|
||||
// ValidateUpdate is the default update validation for an end user.
|
||||
func (jobStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.Object) field.ErrorList {
|
||||
validationErrorList := validation.ValidateJob(obj.(*batch.Job))
|
||||
updateErrorList := validation.ValidateJobUpdate(obj.(*batch.Job), old.(*batch.Job))
|
||||
job := obj.(*batch.Job)
|
||||
oldJob := old.(*batch.Job)
|
||||
validationErrorList := validation.ValidateJob(job)
|
||||
updateErrorList := validation.ValidateJobUpdate(job, oldJob)
|
||||
updateErrorList = append(updateErrorList, corevalidation.ValidateConditionalPodTemplate(&job.Spec.Template, &oldJob.Spec.Template, field.NewPath("spec.template"))...)
|
||||
return append(validationErrorList, updateErrorList...)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user