mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Validate that cronjob names are less than 52 characters
This commit is contained in:
		@@ -20,6 +20,7 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -22,6 +22,7 @@ import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	unversionedvalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	apimachineryvalidation "k8s.io/apimachinery/pkg/util/validation"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/validation/field"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	apivalidation "k8s.io/kubernetes/pkg/api/validation"
 | 
			
		||||
@@ -162,6 +163,13 @@ func ValidateCronJob(scheduledJob *batch.CronJob) field.ErrorList {
 | 
			
		||||
	// CronJobs and rcs have the same name validation
 | 
			
		||||
	allErrs := apivalidation.ValidateObjectMeta(&scheduledJob.ObjectMeta, true, apivalidation.ValidateReplicationControllerName, field.NewPath("metadata"))
 | 
			
		||||
	allErrs = append(allErrs, ValidateCronJobSpec(&scheduledJob.Spec, field.NewPath("spec"))...)
 | 
			
		||||
	if len(scheduledJob.ObjectMeta.Name) > apimachineryvalidation.DNS1035LabelMaxLength-11 {
 | 
			
		||||
		// The cronjob controller appends a 11-character suffix to the cronjob (`-$TIMESTAMP`) when
 | 
			
		||||
		// creating a job. The job name length limit is 63 characters.
 | 
			
		||||
		// Therefore cronjob names must have length <= 63-11=52. If we don't validate this here,
 | 
			
		||||
		// then job creation will fail later.
 | 
			
		||||
		allErrs = append(allErrs, field.Invalid(field.NewPath("metadata").Child("name"), scheduledJob.ObjectMeta.Name, "must be no more than 52 characters"))
 | 
			
		||||
	}
 | 
			
		||||
	return allErrs
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -520,6 +520,22 @@ func TestValidateCronJob(t *testing.T) {
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		"metadata.name: must be no more than 52 characters": {
 | 
			
		||||
			ObjectMeta: metav1.ObjectMeta{
 | 
			
		||||
				Name:      "10000000002000000000300000000040000000005000000000123",
 | 
			
		||||
				Namespace: metav1.NamespaceDefault,
 | 
			
		||||
				UID:       types.UID("1a2b3c"),
 | 
			
		||||
			},
 | 
			
		||||
			Spec: batch.CronJobSpec{
 | 
			
		||||
				Schedule:          "* * * * ?",
 | 
			
		||||
				ConcurrencyPolicy: batch.AllowConcurrent,
 | 
			
		||||
				JobTemplate: batch.JobTemplateSpec{
 | 
			
		||||
					Spec: batch.JobSpec{
 | 
			
		||||
						Template: validPodTemplateSpec,
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		"spec.jobTemplate.spec.manualSelector: Unsupported value": {
 | 
			
		||||
			ObjectMeta: metav1.ObjectMeta{
 | 
			
		||||
				Name:      "mycronjob",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user