diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index cc304120ee5..866205206f6 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -63113,7 +63113,7 @@ "type": "string" }, "failedJobsHistoryLimit": { - "description": "The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.", + "description": "The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", "type": "integer", "format": "int32" }, @@ -63131,7 +63131,7 @@ "format": "int64" }, "successfulJobsHistoryLimit": { - "description": "The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.", + "description": "The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.", "type": "integer", "format": "int32" }, diff --git a/api/swagger-spec/batch_v1beta1.json b/api/swagger-spec/batch_v1beta1.json index 366230779b1..b53a81323b8 100644 --- a/api/swagger-spec/batch_v1beta1.json +++ b/api/swagger-spec/batch_v1beta1.json @@ -1497,12 +1497,12 @@ "successfulJobsHistoryLimit": { "type": "integer", "format": "int32", - "description": "The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified." + "description": "The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3." }, "failedJobsHistoryLimit": { "type": "integer", "format": "int32", - "description": "The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified." + "description": "The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1." } } }, diff --git a/docs/api-reference/batch/v1beta1/definitions.html b/docs/api-reference/batch/v1beta1/definitions.html index c12abd10008..b0aef880643 100755 --- a/docs/api-reference/batch/v1beta1/definitions.html +++ b/docs/api-reference/batch/v1beta1/definitions.html @@ -3428,14 +3428,14 @@ When an object is created, the system will populate this list with the current s

successfulJobsHistoryLimit

-

The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.

+

The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.

false

integer (int32)

failedJobsHistoryLimit

-

The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.

+

The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.

false

integer (int32)

diff --git a/pkg/apis/batch/fuzzer/fuzzer.go b/pkg/apis/batch/fuzzer/fuzzer.go index 07a8cc1ed59..4b0a8b9064d 100644 --- a/pkg/apis/batch/fuzzer/fuzzer.go +++ b/pkg/apis/batch/fuzzer/fuzzer.go @@ -53,14 +53,10 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} { sds := int64(c.RandUint64()) sj.StartingDeadlineSeconds = &sds sj.Schedule = c.RandString() - if hasSuccessLimit := c.RandBool(); hasSuccessLimit { - successfulJobsHistoryLimit := int32(c.Rand.Int31()) - sj.SuccessfulJobsHistoryLimit = &successfulJobsHistoryLimit - } - if hasFailedLimit := c.RandBool(); hasFailedLimit { - failedJobsHistoryLimit := int32(c.Rand.Int31()) - sj.FailedJobsHistoryLimit = &failedJobsHistoryLimit - } + successfulJobsHistoryLimit := int32(c.Rand.Int31()) + sj.SuccessfulJobsHistoryLimit = &successfulJobsHistoryLimit + failedJobsHistoryLimit := int32(c.Rand.Int31()) + sj.FailedJobsHistoryLimit = &failedJobsHistoryLimit }, func(cp *batch.ConcurrencyPolicy, c fuzz.Continue) { policies := []batch.ConcurrencyPolicy{batch.AllowConcurrent, batch.ForbidConcurrent, batch.ReplaceConcurrent} diff --git a/pkg/apis/batch/v1beta1/defaults.go b/pkg/apis/batch/v1beta1/defaults.go index 9ae68472480..58fee5f5834 100644 --- a/pkg/apis/batch/v1beta1/defaults.go +++ b/pkg/apis/batch/v1beta1/defaults.go @@ -32,4 +32,12 @@ func SetDefaults_CronJob(obj *batchv1beta1.CronJob) { if obj.Spec.Suspend == nil { obj.Spec.Suspend = new(bool) } + if obj.Spec.SuccessfulJobsHistoryLimit == nil { + obj.Spec.SuccessfulJobsHistoryLimit = new(int32) + *obj.Spec.SuccessfulJobsHistoryLimit = 3 + } + if obj.Spec.FailedJobsHistoryLimit == nil { + obj.Spec.FailedJobsHistoryLimit = new(int32) + *obj.Spec.FailedJobsHistoryLimit = 1 + } } diff --git a/pkg/apis/batch/v1beta1/defaults_test.go b/pkg/apis/batch/v1beta1/defaults_test.go index 8c23ae19222..1f11b0566df 100644 --- a/pkg/apis/batch/v1beta1/defaults_test.go +++ b/pkg/apis/batch/v1beta1/defaults_test.go @@ -38,22 +38,28 @@ func TestSetDefaultCronJob(t *testing.T) { original: &batchv1beta1.CronJob{}, expected: &batchv1beta1.CronJob{ Spec: batchv1beta1.CronJobSpec{ - ConcurrencyPolicy: batchv1beta1.AllowConcurrent, - Suspend: newBool(false), + ConcurrencyPolicy: batchv1beta1.AllowConcurrent, + Suspend: newBool(false), + SuccessfulJobsHistoryLimit: newInt32(3), + FailedJobsHistoryLimit: newInt32(1), }, }, }, "set fields should not be defaulted": { original: &batchv1beta1.CronJob{ Spec: batchv1beta1.CronJobSpec{ - ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, - Suspend: newBool(true), + ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, + Suspend: newBool(true), + SuccessfulJobsHistoryLimit: newInt32(5), + FailedJobsHistoryLimit: newInt32(5), }, }, expected: &batchv1beta1.CronJob{ Spec: batchv1beta1.CronJobSpec{ - ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, - Suspend: newBool(true), + ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, + Suspend: newBool(true), + SuccessfulJobsHistoryLimit: newInt32(5), + FailedJobsHistoryLimit: newInt32(5), }, }, }, @@ -74,6 +80,12 @@ func TestSetDefaultCronJob(t *testing.T) { if *actual.Spec.Suspend != *expected.Spec.Suspend { t.Errorf("%s: got different suspend than expected: %v %v", name, *actual.Spec.Suspend, *expected.Spec.Suspend) } + if *actual.Spec.SuccessfulJobsHistoryLimit != *expected.Spec.SuccessfulJobsHistoryLimit { + t.Errorf("%s: got different successfulJobsHistoryLimit than expected: %v %v", name, *actual.Spec.SuccessfulJobsHistoryLimit, *expected.Spec.SuccessfulJobsHistoryLimit) + } + if *actual.Spec.FailedJobsHistoryLimit != *expected.Spec.FailedJobsHistoryLimit { + t.Errorf("%s: got different failedJobsHistoryLimit than expected: %v %v", name, *actual.Spec.FailedJobsHistoryLimit, *expected.Spec.FailedJobsHistoryLimit) + } } } @@ -102,3 +114,9 @@ func newBool(val bool) *bool { *p = val return p } + +func newInt32(val int32) *int32 { + p := new(int32) + *p = val + return p +} diff --git a/staging/src/k8s.io/api/batch/v1beta1/generated.proto b/staging/src/k8s.io/api/batch/v1beta1/generated.proto index f8aa2f32841..f7b871632b2 100644 --- a/staging/src/k8s.io/api/batch/v1beta1/generated.proto +++ b/staging/src/k8s.io/api/batch/v1beta1/generated.proto @@ -85,11 +85,13 @@ message CronJobSpec { // The number of successful finished jobs to retain. // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 3. // +optional optional int32 successfulJobsHistoryLimit = 6; // The number of failed finished jobs to retain. // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 1. // +optional optional int32 failedJobsHistoryLimit = 7; } diff --git a/staging/src/k8s.io/api/batch/v1beta1/types.go b/staging/src/k8s.io/api/batch/v1beta1/types.go index 43e447473d5..ad13bba2f92 100644 --- a/staging/src/k8s.io/api/batch/v1beta1/types.go +++ b/staging/src/k8s.io/api/batch/v1beta1/types.go @@ -114,11 +114,13 @@ type CronJobSpec struct { // The number of successful finished jobs to retain. // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 3. // +optional SuccessfulJobsHistoryLimit *int32 `json:"successfulJobsHistoryLimit,omitempty" protobuf:"varint,6,opt,name=successfulJobsHistoryLimit"` // The number of failed finished jobs to retain. // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 1. // +optional FailedJobsHistoryLimit *int32 `json:"failedJobsHistoryLimit,omitempty" protobuf:"varint,7,opt,name=failedJobsHistoryLimit"` } diff --git a/staging/src/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go index 6da290d1f01..f4c74e4327e 100644 --- a/staging/src/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go +++ b/staging/src/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go @@ -55,8 +55,8 @@ var map_CronJobSpec = map[string]string{ "concurrencyPolicy": "Specifies how to treat concurrent executions of a Job. Defaults to Allow.", "suspend": "This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.", "jobTemplate": "Specifies the job that will be created when executing a CronJob.", - "successfulJobsHistoryLimit": "The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.", - "failedJobsHistoryLimit": "The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.", + "successfulJobsHistoryLimit": "The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.", + "failedJobsHistoryLimit": "The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", } func (CronJobSpec) SwaggerDoc() map[string]string {