Update doc comments and change name of feature gate

This commit is contained in:
Peter Schuurman
2022-11-01 17:20:31 -07:00
parent 8a9c126eca
commit 366997951b
18 changed files with 182 additions and 95 deletions

View File

@@ -128,9 +128,11 @@ func dropStatefulSetDisabledFields(newSS *apps.StatefulSet, oldSS *apps.Stateful
newSS.Spec.UpdateStrategy.RollingUpdate.MaxUnavailable = nil
}
}
if !utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetSlice) {
// Reset Spec.Ordinals to the default value (nil).
newSS.Spec.Ordinals = nil
if !utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetStartOrdinal) {
if oldSS == nil || oldSS.Spec.Ordinals == nil {
// Reset Spec.Ordinals to the default value (nil).
newSS.Spec.Ordinals = nil
}
}
}

View File

@@ -328,14 +328,29 @@ func getMaxUnavailable(maxUnavailable int) *int {
return &maxUnavailable
}
func createOrdinalsWithStart(start int) *apps.StatefulSetOrdinals {
return &apps.StatefulSetOrdinals{
Start: int32(start),
}
}
func makeStatefulSetWithStatefulSetOrdinals(ordinals *apps.StatefulSetOrdinals) *apps.StatefulSet {
return &apps.StatefulSet{
Spec: apps.StatefulSetSpec{
Ordinals: ordinals,
},
}
}
// TestDropStatefulSetDisabledFields tests if the drop functionality is working fine or not
func TestDropStatefulSetDisabledFields(t *testing.T) {
testCases := []struct {
name string
enableMaxUnavailable bool
ss *apps.StatefulSet
oldSS *apps.StatefulSet
expectedSS *apps.StatefulSet
name string
enableMaxUnavailable bool
enableStatefulSetStartOrdinal bool
ss *apps.StatefulSet
oldSS *apps.StatefulSet
expectedSS *apps.StatefulSet
}{
{
name: "set minReadySeconds, no update",
@@ -388,11 +403,39 @@ func TestDropStatefulSetDisabledFields(t *testing.T) {
ss: makeStatefulSetWithMaxUnavailable(getMaxUnavailable(1)),
oldSS: makeStatefulSetWithMaxUnavailable(getMaxUnavailable(3)),
expectedSS: makeStatefulSetWithMaxUnavailable(getMaxUnavailable(1)),
}, {
name: "StatefulSetStartOrdinal disabled, ordinals in use in new only",
enableStatefulSetStartOrdinal: false,
ss: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(2)),
oldSS: nil,
expectedSS: makeStatefulSetWithStatefulSetOrdinals(nil),
},
{
name: "StatefulSetStartOrdinal disabled, ordinals in use in both old and new",
enableStatefulSetStartOrdinal: false,
ss: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(2)),
oldSS: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(1)),
expectedSS: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(2)),
},
{
name: "StatefulSetStartOrdinal enabled, ordinals in use in new only",
enableStatefulSetStartOrdinal: true,
ss: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(2)),
oldSS: nil,
expectedSS: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(2)),
},
{
name: "StatefulSetStartOrdinal enabled, ordinals in use in both old and new",
enableStatefulSetStartOrdinal: true,
ss: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(2)),
oldSS: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(1)),
expectedSS: makeStatefulSetWithStatefulSetOrdinals(createOrdinalsWithStart(2)),
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.MaxUnavailableStatefulSet, tc.enableMaxUnavailable)()
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.StatefulSetStartOrdinal, tc.enableStatefulSetStartOrdinal)()
old := tc.oldSS.DeepCopy()
dropStatefulSetDisabledFields(tc.ss, tc.oldSS)