Skip to content

Commit b69c839

Browse files
authored
Merge pull request kubernetes#84596 from akhinos/fix-statefulset-defaulting
UpdateStrategy.RollingUpdate.Partition is lost when UpdateStrategy.Type is not set
2 parents 825eb77 + ff69810 commit b69c839

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

pkg/apis/apps/v1/defaults.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,10 @@ func SetDefaults_StatefulSet(obj *appsv1.StatefulSet) {
9999
if obj.Spec.UpdateStrategy.Type == "" {
100100
obj.Spec.UpdateStrategy.Type = appsv1.RollingUpdateStatefulSetStrategyType
101101

102-
// UpdateStrategy.RollingUpdate will take default values below.
103-
obj.Spec.UpdateStrategy.RollingUpdate = &appsv1.RollingUpdateStatefulSetStrategy{}
102+
if obj.Spec.UpdateStrategy.RollingUpdate == nil {
103+
// UpdateStrategy.RollingUpdate will take default values below.
104+
obj.Spec.UpdateStrategy.RollingUpdate = &appsv1.RollingUpdateStatefulSetStrategy{}
105+
}
104106
}
105107

106108
if obj.Spec.UpdateStrategy.Type == appsv1.RollingUpdateStatefulSetStrategyType &&

pkg/apis/apps/v1/defaults_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ func TestSetDefaultStatefulSet(t *testing.T) {
173173
defaultLabels := map[string]string{"foo": "bar"}
174174
var defaultPartition int32 = 0
175175
var defaultReplicas int32 = 1
176+
var notTheDefaultPartition int32 = 42
176177

177178
period := int64(v1.DefaultTerminationGracePeriodSeconds)
178179
defaultTemplate := v1.PodTemplateSpec{
@@ -265,6 +266,35 @@ func TestSetDefaultStatefulSet(t *testing.T) {
265266
},
266267
},
267268
},
269+
{ // UpdateStrategy.RollingUpdate.Partition is not lost when UpdateStrategy.Type is not set
270+
original: &appsv1.StatefulSet{
271+
Spec: appsv1.StatefulSetSpec{
272+
Template: defaultTemplate,
273+
UpdateStrategy: appsv1.StatefulSetUpdateStrategy{
274+
RollingUpdate: &appsv1.RollingUpdateStatefulSetStrategy{
275+
Partition: &notTheDefaultPartition,
276+
},
277+
},
278+
},
279+
},
280+
expected: &appsv1.StatefulSet{
281+
ObjectMeta: metav1.ObjectMeta{
282+
Labels: defaultLabels,
283+
},
284+
Spec: appsv1.StatefulSetSpec{
285+
Replicas: &defaultReplicas,
286+
Template: defaultTemplate,
287+
PodManagementPolicy: appsv1.OrderedReadyPodManagement,
288+
UpdateStrategy: appsv1.StatefulSetUpdateStrategy{
289+
Type: appsv1.RollingUpdateStatefulSetStrategyType,
290+
RollingUpdate: &appsv1.RollingUpdateStatefulSetStrategy{
291+
Partition: &notTheDefaultPartition,
292+
},
293+
},
294+
RevisionHistoryLimit: utilpointer.Int32Ptr(10),
295+
},
296+
},
297+
},
268298
}
269299

270300
for i, test := range tests {

0 commit comments

Comments
 (0)