Skip to content

Commit 04fb7ac

Browse files
authored
Merge pull request kubernetes#130536 from tenzen-y/promote-successpolicy-to-ga
KEP-3998: Promote JobSuccessPolicy to Stable
2 parents 94cc4ba + 03f0475 commit 04fb7ac

File tree

15 files changed

+47
-40
lines changed

15 files changed

+47
-40
lines changed

api/openapi-spec/swagger.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/openapi-spec/v3/apis__batch__v1_openapi.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/batch/types.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,8 +336,6 @@ type JobSpec struct {
336336
// When the field is specified, it must be immutable and works only for the Indexed Jobs.
337337
// Once the Job meets the SuccessPolicy, the lingering pods are terminated.
338338
//
339-
// This field is beta-level. To use this field, you must enable the
340-
// `JobSuccessPolicy` feature gate (enabled by default).
341339
// +optional
342340
SuccessPolicy *SuccessPolicy
343341

pkg/controller/job/job_controller_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,6 +1253,9 @@ func TestControllerSyncJob(t *testing.T) {
12531253
if tc.podIndexLabelDisabled {
12541254
// TODO: this will be removed in 1.35 when 1.31 will fall out of support matrix
12551255
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, feature.DefaultFeatureGate, utilversion.MustParse("1.31"))
1256+
} else if !tc.jobSuccessPolicy {
1257+
// TODO: this will be removed in 1.36.
1258+
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, feature.DefaultFeatureGate, utilversion.MustParse("1.32"))
12561259
}
12571260
featuregatetesting.SetFeatureGateDuringTest(t, feature.DefaultFeatureGate, features.PodIndexLabel, !tc.podIndexLabelDisabled)
12581261
featuregatetesting.SetFeatureGateDuringTest(t, feature.DefaultFeatureGate, features.JobPodReplacementPolicy, tc.jobPodReplacementPolicy)
@@ -2437,7 +2440,7 @@ func TestTrackJobStatusAndRemoveFinalizers(t *testing.T) {
24372440
}
24382441
for name, tc := range cases {
24392442
t.Run(name, func(t *testing.T) {
2440-
if !tc.enableJobBackoffLimitPerIndex {
2443+
if !tc.enableJobBackoffLimitPerIndex || !tc.enableJobSuccessPolicy {
24412444
// TODO: this will be removed in 1.36
24422445
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, feature.DefaultFeatureGate, utilversion.MustParse("1.32"))
24432446
}
@@ -5175,7 +5178,7 @@ func TestSyncJobWithJobSuccessPolicy(t *testing.T) {
51755178
}
51765179
for name, tc := range testCases {
51775180
t.Run(name, func(t *testing.T) {
5178-
if !tc.enableBackoffLimitPerIndex {
5181+
if !tc.enableBackoffLimitPerIndex || !tc.enableJobSuccessPolicy {
51795182
// TODO: this will be removed in 1.36
51805183
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, feature.DefaultFeatureGate, utilversion.MustParse("1.32"))
51815184
}

pkg/controller/job/success_policy_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
"github.com/google/go-cmp/cmp"
2323
batch "k8s.io/api/batch/v1"
24+
utilversion "k8s.io/apimachinery/pkg/util/version"
2425
"k8s.io/apiserver/pkg/util/feature"
2526
featuregatetesting "k8s.io/component-base/featuregate/testing"
2627
"k8s.io/klog/v2/ktesting"
@@ -391,6 +392,10 @@ func TestMatchSuccessPolicy(t *testing.T) {
391392
}
392393
for name, tc := range testCases {
393394
t.Run(name, func(t *testing.T) {
395+
if !tc.enableJobSuccessPolicy {
396+
// TODO: this will be removed in 1.36.
397+
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, feature.DefaultFeatureGate, utilversion.MustParse("1.32"))
398+
}
394399
featuregatetesting.SetFeatureGateDuringTest(t, feature.DefaultFeatureGate, features.JobSuccessPolicy, tc.enableJobSuccessPolicy)
395400
logger := ktesting.NewLogger(t,
396401
ktesting.NewConfig(

pkg/features/versioned_kube_features.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate
424424
JobSuccessPolicy: {
425425
{Version: version.MustParse("1.30"), Default: false, PreRelease: featuregate.Alpha},
426426
{Version: version.MustParse("1.31"), Default: true, PreRelease: featuregate.Beta},
427+
{Version: version.MustParse("1.33"), Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.36
427428
},
428429

429430
KubeletCgroupDriverFromCRI: {

pkg/generated/openapi/zz_generated.openapi.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/registry/batch/job/strategy_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ func TestJobStrategy_PrepareForUpdate(t *testing.T) {
513513

514514
for name, tc := range cases {
515515
t.Run(name, func(t *testing.T) {
516-
if !tc.enableJobBackoffLimitPerIndex {
516+
if !tc.enableJobBackoffLimitPerIndex || !tc.enableJobSuccessPolicy {
517517
// TODO: this will be removed in 1.36
518518
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, utilfeature.DefaultFeatureGate, utilversion.MustParse("1.32"))
519519
}
@@ -898,7 +898,7 @@ func TestJobStrategy_PrepareForCreate(t *testing.T) {
898898

899899
for name, tc := range cases {
900900
t.Run(name, func(t *testing.T) {
901-
if !tc.enableJobBackoffLimitPerIndex {
901+
if !tc.enableJobBackoffLimitPerIndex || !tc.enableJobSuccessPolicy {
902902
// TODO: this will be removed in 1.36
903903
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, utilfeature.DefaultFeatureGate, utilversion.MustParse("1.32"))
904904
}
@@ -3538,6 +3538,10 @@ func TestStatusStrategy_ValidateUpdate(t *testing.T) {
35383538
}
35393539
for name, tc := range cases {
35403540
t.Run(name, func(t *testing.T) {
3541+
if !tc.enableJobSuccessPolicy {
3542+
// TODO: this will be removed in 1.36.
3543+
featuregatetesting.SetFeatureGateEmulationVersionDuringTest(t, utilfeature.DefaultFeatureGate, utilversion.MustParse("1.32"))
3544+
}
35413545
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.JobManagedBy, tc.enableJobManagedBy)
35423546
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.JobSuccessPolicy, tc.enableJobSuccessPolicy)
35433547
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.JobPodReplacementPolicy, tc.enableJobPodReplacementPolicy)

staging/src/k8s.io/api/batch/v1/generated.proto

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/api/batch/v1/types.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,6 @@ type JobSpec struct {
343343
// When the field is specified, it must be immutable and works only for the Indexed Jobs.
344344
// Once the Job meets the SuccessPolicy, the lingering pods are terminated.
345345
//
346-
// This field is beta-level. To use this field, you must enable the
347-
// `JobSuccessPolicy` feature gate (enabled by default).
348346
// +optional
349347
SuccessPolicy *SuccessPolicy `json:"successPolicy,omitempty" protobuf:"bytes,16,opt,name=successPolicy"`
350348

@@ -638,13 +636,9 @@ const (
638636
JobReasonFailedIndexes string = "FailedIndexes"
639637
// JobReasonSuccessPolicy reason indicates a SuccessCriteriaMet condition is added due to
640638
// a Job met successPolicy.
641-
// https://kep.k8s.io/3998
642-
// This is currently a beta field.
643639
JobReasonSuccessPolicy string = "SuccessPolicy"
644640
// JobReasonCompletionsReached reason indicates a SuccessCriteriaMet condition is added due to
645641
// a number of succeeded Job pods met completions.
646-
// - https://kep.k8s.io/3998
647-
// This is currently a beta field.
648642
JobReasonCompletionsReached string = "CompletionsReached"
649643
)
650644

0 commit comments

Comments
 (0)