From d8f290b0ada5710f969bf138cd7cd8eca15c037e Mon Sep 17 00:00:00 2001 From: Kan Wu Date: Thu, 28 Mar 2024 13:30:03 +0800 Subject: [PATCH] refactor: update the PodUpdateStrategyType from ReplaceUpdate to Replace (#175) * refactor: update the PodUpdateStrategyType from ReplaceUpdate to Replace * refactor: fix ut --- apis/apps/v1alpha1/collaset_types.go | 7 +++---- pkg/controllers/collaset/collaset_controller_test.go | 10 +++++----- pkg/controllers/collaset/synccontrol/sync_control.go | 6 +++--- pkg/controllers/collaset/synccontrol/update.go | 2 +- .../generic/collaset/collaset_validating_handler.go | 4 ++-- .../collaset/collaset_validating_handler_test.go | 2 +- 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/apis/apps/v1alpha1/collaset_types.go b/apis/apps/v1alpha1/collaset_types.go index 6c470572..9469395b 100644 --- a/apis/apps/v1alpha1/collaset_types.go +++ b/apis/apps/v1alpha1/collaset_types.go @@ -58,10 +58,9 @@ const ( // CollaSetInPlaceOnlyPodUpdateStrategyType indicates that CollaSet will always update Pod in-place, instead of // recreating pod. It will encounter an error on original Kubernetes cluster. CollaSetInPlaceOnlyPodUpdateStrategyType PodUpdateStrategyType = "InPlaceOnly" - - // CollaSetReplaceUpdatePodUpdateStrategyType indicates that CollaSet will always update Pod by replace, it will - // create a new Pod and delete update pod when new created pod service available. - CollaSetReplaceUpdatePodUpdateStrategyType PodUpdateStrategyType = "ReplaceUpdate" + // CollaSetReplacePodUpdateStrategyType indicates that CollaSet will always update Pod by replace, it will + // create a new Pod and delete the old pod when the new one service available. + CollaSetReplacePodUpdateStrategyType PodUpdateStrategyType = "Replace" ) // CollaSetSpec defines the desired state of CollaSet diff --git a/pkg/controllers/collaset/collaset_controller_test.go b/pkg/controllers/collaset/collaset_controller_test.go index fa663134..9627c2d0 100644 --- a/pkg/controllers/collaset/collaset_controller_test.go +++ b/pkg/controllers/collaset/collaset_controller_test.go @@ -651,7 +651,7 @@ var _ = Describe("collaset controller", func() { }, UpdateStrategy: appsv1alpha1.UpdateStrategy{ OperationDelaySeconds: int32Pointer(1), - PodUpdatePolicy: appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType, + PodUpdatePolicy: appsv1alpha1.CollaSetReplacePodUpdateStrategyType, }, }, } @@ -786,7 +786,7 @@ var _ = Describe("collaset controller", func() { }, UpdateStrategy: appsv1alpha1.UpdateStrategy{ OperationDelaySeconds: int32Pointer(1), - PodUpdatePolicy: appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType, + PodUpdatePolicy: appsv1alpha1.CollaSetReplacePodUpdateStrategyType, }, }, } @@ -940,7 +940,7 @@ var _ = Describe("collaset controller", func() { }, UpdateStrategy: appsv1alpha1.UpdateStrategy{ OperationDelaySeconds: int32Pointer(1), - PodUpdatePolicy: appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType, + PodUpdatePolicy: appsv1alpha1.CollaSetReplacePodUpdateStrategyType, }, }, } @@ -1041,7 +1041,7 @@ var _ = Describe("collaset controller", func() { }, UpdateStrategy: appsv1alpha1.UpdateStrategy{ OperationDelaySeconds: int32Pointer(1), - PodUpdatePolicy: appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType, + PodUpdatePolicy: appsv1alpha1.CollaSetReplacePodUpdateStrategyType, }, }, } @@ -1599,7 +1599,7 @@ var _ = Describe("collaset controller", func() { Partition: &partition, }, } - cls.Spec.UpdateStrategy.PodUpdatePolicy = appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType + cls.Spec.UpdateStrategy.PodUpdatePolicy = appsv1alpha1.CollaSetReplacePodUpdateStrategyType cls.Spec.ScaleStrategy.OperationDelaySeconds = int32Pointer(1) cls.Spec.Template.Spec.Containers[0].Image = "nginx:v2" return true diff --git a/pkg/controllers/collaset/synccontrol/sync_control.go b/pkg/controllers/collaset/synccontrol/sync_control.go index 172131aa..136f03e1 100644 --- a/pkg/controllers/collaset/synccontrol/sync_control.go +++ b/pkg/controllers/collaset/synccontrol/sync_control.go @@ -352,7 +352,7 @@ func dealReplacePods(pods []*corev1.Pod, instance *appsv1alpha1.CollaSet) (needR needReplacePods = append(needReplacePods, pod) } - isReplaceUpdate := instance.Spec.UpdateStrategy.PodUpdatePolicy == appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType + isReplaceUpdate := instance.Spec.UpdateStrategy.PodUpdatePolicy == appsv1alpha1.CollaSetReplacePodUpdateStrategyType // deal pods need to delete when pod update strategy is not replace update for _, pod := range pods { @@ -709,7 +709,7 @@ func (r *RealSyncControl) Update( updating := false analysedPod := sets.NewString() - if cls.Spec.UpdateStrategy.PodUpdatePolicy != appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType { + if cls.Spec.UpdateStrategy.PodUpdatePolicy != appsv1alpha1.CollaSetReplacePodUpdateStrategyType { // 3. prepare Pods to begin PodOpsLifecycle for i, podInfo := range podToUpdate { if podInfo.IsUpdatedRevision && !podInfo.PodDecorationChanged { @@ -852,7 +852,7 @@ func (r *RealSyncControl) Update( return err } } - } else if cls.Spec.UpdateStrategy.PodUpdatePolicy == appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType { + } else if cls.Spec.UpdateStrategy.PodUpdatePolicy == appsv1alpha1.CollaSetReplacePodUpdateStrategyType { return nil } else { // 6.2 if pod has changes not in-place supported, recreate it diff --git a/pkg/controllers/collaset/synccontrol/update.go b/pkg/controllers/collaset/synccontrol/update.go index 0045c4a4..afbc6cf5 100644 --- a/pkg/controllers/collaset/synccontrol/update.go +++ b/pkg/controllers/collaset/synccontrol/update.go @@ -268,7 +268,7 @@ func newPodUpdater(ctx context.Context, client client.Client, cls *appsv1alpha1. // In case of using native K8s, Pod is only allowed to update with container image, so InPlaceOnly policy is // implemented with InPlaceIfPossible policy as default for compatibility. return &inPlaceIfPossibleUpdater{collaSet: cls, ctx: ctx, Client: client} - case appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType: + case appsv1alpha1.CollaSetReplacePodUpdateStrategyType: return &replaceUpdatePodUpdater{collaSet: cls, ctx: ctx, Client: client} default: return &inPlaceIfPossibleUpdater{collaSet: cls, ctx: ctx, Client: client} diff --git a/pkg/webhook/server/generic/collaset/collaset_validating_handler.go b/pkg/webhook/server/generic/collaset/collaset_validating_handler.go index 98a7d08a..3fb737eb 100644 --- a/pkg/webhook/server/generic/collaset/collaset_validating_handler.go +++ b/pkg/webhook/server/generic/collaset/collaset_validating_handler.go @@ -115,13 +115,13 @@ func (h *ValidatingHandler) validateUpdateStrategy(cls *appsv1alpha1.CollaSet, f case appsv1alpha1.CollaSetRecreatePodUpdateStrategyType, appsv1alpha1.CollaSetInPlaceOnlyPodUpdateStrategyType, appsv1alpha1.CollaSetInPlaceIfPossiblePodUpdateStrategyType, - appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType: + appsv1alpha1.CollaSetReplacePodUpdateStrategyType: default: allErrs = append(allErrs, field.NotSupported(fSpec.Child("updateStrategy", "podUpdatePolicy"), cls.Spec.UpdateStrategy.PodUpdatePolicy, []string{string(appsv1alpha1.CollaSetRecreatePodUpdateStrategyType), string(appsv1alpha1.CollaSetInPlaceIfPossiblePodUpdateStrategyType), string(appsv1alpha1.CollaSetInPlaceOnlyPodUpdateStrategyType), - string(appsv1alpha1.CollaSetReplaceUpdatePodUpdateStrategyType)})) + string(appsv1alpha1.CollaSetReplacePodUpdateStrategyType)})) } if cls.Spec.UpdateStrategy.RollingUpdate != nil && cls.Spec.UpdateStrategy.RollingUpdate.ByPartition != nil && diff --git a/pkg/webhook/server/generic/collaset/collaset_validating_handler_test.go b/pkg/webhook/server/generic/collaset/collaset_validating_handler_test.go index b35d777f..35c71ff3 100644 --- a/pkg/webhook/server/generic/collaset/collaset_validating_handler_test.go +++ b/pkg/webhook/server/generic/collaset/collaset_validating_handler_test.go @@ -208,7 +208,7 @@ func TestValidatingCollaSet(t *testing.T) { }, }, "invalid-update-policy": { - messageKeyWords: "supported values: \"ReCreate\", \"InPlaceIfPossible\", \"InPlaceOnly\", \"ReplaceUpdate\"", + messageKeyWords: "supported values: \"ReCreate\", \"InPlaceIfPossible\", \"InPlaceOnly\", \"Replace\"", cls: &appsv1alpha1.CollaSet{ ObjectMeta: metav1.ObjectMeta{ Name: "foo",