Fix validation.go to validate without StatefulSetStartOrdinal feature gate check. Adds test case to validate regression fix of validation failing when spec.ordinals set and feature gate disabled

This commit is contained in:
Peter Schuurman
2023-02-23 16:22:56 -08:00
parent 35f3fc59c1
commit a714e9e485
2 changed files with 31 additions and 22 deletions

View File

@@ -86,8 +86,6 @@ func TestValidateStatefulSet(t *testing.T) {
const enableStatefulSetAutoDeletePVC = "[enable StatefulSetAutoDeletePVC]"
const enableStatefulSetStartOrdinal = "[enable StatefulSetStartOrdinal]"
type testCase struct {
name string
set apps.StatefulSet
@@ -196,7 +194,7 @@ func TestValidateStatefulSet(t *testing.T) {
},
},
{
name: "ordinals.start positive value " + enableStatefulSetStartOrdinal,
name: "ordinals.start positive value",
set: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
@@ -682,7 +680,7 @@ func TestValidateStatefulSet(t *testing.T) {
},
},
{
name: "invalid ordinals.start " + enableStatefulSetStartOrdinal,
name: "invalid ordinals.start ",
set: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
@@ -714,9 +712,6 @@ func TestValidateStatefulSet(t *testing.T) {
if strings.Contains(name, enableStatefulSetAutoDeletePVC) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.StatefulSetAutoDeletePVC, true)()
}
if strings.Contains(name, enableStatefulSetStartOrdinal) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.StatefulSetStartOrdinal, true)()
}
errs := ValidateStatefulSet(&testCase.set, pod.GetValidationOptionsFromPodTemplate(&testCase.set.Spec.Template, nil))
wantErrs := testCase.errs
@@ -1211,6 +1206,30 @@ func TestValidateStatefulSetUpdate(t *testing.T) {
},
},
},
{
name: "update existing instance with .spec.ordinals.start",
old: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc.123.example", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
update: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc.123.example", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
Ordinals: &apps.StatefulSetOrdinals{
Start: 3,
},
},
},
},
}
errorCases := []testCase{