Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update phase names #99

Merged
merged 2 commits into from
Sep 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions apis/apps/v1alpha1/well_known_labels.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ const (

PodPreCheckLabelPrefix = "pre-check.podopslifecycle.kusionstack.io" // indicate a pod is in pre-check phase
PodPreCheckedLabelPrefix = "pre-checked.podopslifecycle.kusionstack.io" // indicate a pod has finished pre-check phase
PodPrepareLabelPrefix = "prepare.podopslifecycle.kusionstack.io" // indicate a pod is in prepare phase
PodPreparingLabelPrefix = "preparing.podopslifecycle.kusionstack.io" // indicate a pod is preparing for operation
PodOperateLabelPrefix = "operate.podopslifecycle.kusionstack.io" // indicate a pod is in operate phase
PodOperatedLabelPrefix = "operated.podopslifecycle.kusionstack.io" // indicate a pod has finished operate phase
PodPostCheckLabelPrefix = "post-check.podopslifecycle.kusionstack.io" // indicate a pod is in post-check phase
PodPostCheckedLabelPrefix = "post-checked.podopslifecycle.kusionstack.io" // indicate a pod has finished post-check phase
PodCompleteLabelPrefix = "complete.podopslifecycle.kusionstack.io" // indicate a pod has finished all phases
PodCompletingLabelPrefix = "completing.podopslifecycle.kusionstack.io" // indicate a pod is completing operation

PodServiceAvailableLabel = "podopslifecycle.kusionstack.io/service-available" // indicate a pod is available to serve
PodDeletionIndicationLabelKey = "podopslifecycle.kusionstack.io/to-delete" // users can use this label to indicate a pod to delete
Expand All @@ -47,6 +47,6 @@ const (

var (
WellKnownLabelPrefixesWithID = []string{PodOperatingLabelPrefix, PodOperationTypeLabelPrefix, PodPreCheckLabelPrefix, PodPreCheckedLabelPrefix,
PodPrepareLabelPrefix, PodDoneOperationTypeLabelPrefix, PodUndoOperationTypeLabelPrefix, PodOperateLabelPrefix, PodOperatedLabelPrefix, PodPostCheckLabelPrefix,
PodPostCheckedLabelPrefix, PodCompleteLabelPrefix}
PodPreparingLabelPrefix, PodDoneOperationTypeLabelPrefix, PodUndoOperationTypeLabelPrefix, PodOperateLabelPrefix, PodOperatedLabelPrefix, PodPostCheckLabelPrefix,
PodPostCheckedLabelPrefix, PodCompletingLabelPrefix}
)
4 changes: 2 additions & 2 deletions apis/apps/v1alpha1/well_known_vars.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@ const (

// well known variables
const (
PodOpsLifecyclePreTrafficOffStage = "PreTrafficOff"
PodOpsLifecyclePreTrafficOnStage = "PreTrafficOn"
PodOpsLifecyclePreCheckStage = "PreCheck"
PodOpsLifecyclePostCheckStage = "PostCheck"
)
20 changes: 10 additions & 10 deletions pkg/controllers/podopslifecycle/podopslifecycle_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,10 +147,10 @@ func (r *ReconcilePodOpsLifecycle) Reconcile(ctx context.Context, request reconc
var labels map[string]string
if state.InStageAndPassed() {
switch state.Stage {
case v1alpha1.PodOpsLifecyclePreTrafficOffStage:
labels, err = r.preTrafficOffStage(pod, idToLabelsMap)
case v1alpha1.PodOpsLifecyclePreTrafficOnStage:
labels, err = r.preTrafficOnStage(pod, idToLabelsMap)
case v1alpha1.PodOpsLifecyclePreCheckStage:
labels, err = r.preCheckStage(pod, idToLabelsMap)
case v1alpha1.PodOpsLifecyclePostCheckStage:
labels, err = r.postCheckStage(pod, idToLabelsMap)
}
}
if err != nil {
Expand All @@ -163,8 +163,8 @@ func (r *ReconcilePodOpsLifecycle) Reconcile(ctx context.Context, request reconc
}

expected := map[string]bool{
v1alpha1.PodPrepareLabelPrefix: false, // set readiness gate to false, traffic off
v1alpha1.PodCompleteLabelPrefix: true, // set readiness gate to true, traffic on
v1alpha1.PodPreparingLabelPrefix: false, // set readiness gate to false, traffic off
v1alpha1.PodCompletingLabelPrefix: true, // set readiness gate to true, traffic on
}
for _, labels := range idToLabelsMap {
for k, v := range expected {
Expand Down Expand Up @@ -286,7 +286,7 @@ func (r *ReconcilePodOpsLifecycle) setServiceReadiness(pod *corev1.Pod, isReady
return true, fmt.Sprintf("update service readiness gate to: %s", string(status))
}

func (r *ReconcilePodOpsLifecycle) preTrafficOffStage(pod *corev1.Pod, idToLabelsMap map[string]map[string]string) (labels map[string]string, err error) {
func (r *ReconcilePodOpsLifecycle) preCheckStage(pod *corev1.Pod, idToLabelsMap map[string]map[string]string) (labels map[string]string, err error) {
labels = map[string]string{}
currentTime := strconv.FormatInt(time.Now().Unix(), 10)
for k, v := range idToLabelsMap {
Expand All @@ -309,7 +309,7 @@ func (r *ReconcilePodOpsLifecycle) preTrafficOffStage(pod *corev1.Pod, idToLabel
return
}

func (r *ReconcilePodOpsLifecycle) preTrafficOnStage(pod *corev1.Pod, idToLabelsMap map[string]map[string]string) (labels map[string]string, err error) {
func (r *ReconcilePodOpsLifecycle) postCheckStage(pod *corev1.Pod, idToLabelsMap map[string]map[string]string) (labels map[string]string, err error) {
labels = map[string]string{}
currentTime := strconv.FormatInt(time.Now().Unix(), 10)
for k := range idToLabelsMap {
Expand Down Expand Up @@ -353,11 +353,11 @@ func (r *ReconcilePodOpsLifecycle) addLabels(ctx context.Context, pod *corev1.Po
}

func (r *ReconcilePodOpsLifecycle) initPodTransitionRuleManager() {
r.podTransitionRuleManager.RegisterStage(v1alpha1.PodOpsLifecyclePreTrafficOffStage, func(po client.Object) bool {
r.podTransitionRuleManager.RegisterStage(v1alpha1.PodOpsLifecyclePreCheckStage, func(po client.Object) bool {
labels := po.GetLabels()
return labels != nil && labelHasPrefix(labels, v1alpha1.PodPreCheckLabelPrefix)
})
r.podTransitionRuleManager.RegisterStage(v1alpha1.PodOpsLifecyclePreTrafficOnStage, func(po client.Object) bool {
r.podTransitionRuleManager.RegisterStage(v1alpha1.PodOpsLifecyclePostCheckStage, func(po client.Object) bool {
labels := po.GetLabels()
return labels != nil && labelHasPrefix(labels, v1alpha1.PodPostCheckLabelPrefix)
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ var _ = Describe("podopslifecycle controller", func() {
Labels: map[string]string{
v1alpha1.ControlledByKusionStackLabelKey: "true",
fmt.Sprintf("%s/%s", v1alpha1.PodOperatingLabelPrefix, id): timestamp,
fmt.Sprintf("%s/%s", v1alpha1.PodPrepareLabelPrefix, id): timestamp,
fmt.Sprintf("%s/%s", v1alpha1.PodPreparingLabelPrefix, id): timestamp,
},
},
Spec: podSpec,
Expand Down Expand Up @@ -205,9 +205,9 @@ var _ = Describe("podopslifecycle controller", func() {
Name: "test",
Namespace: "default",
Labels: map[string]string{
v1alpha1.ControlledByKusionStackLabelKey: "true",
fmt.Sprintf("%s/%s", v1alpha1.PodOperateLabelPrefix, id): timestamp,
fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, id): timestamp,
v1alpha1.ControlledByKusionStackLabelKey: "true",
fmt.Sprintf("%s/%s", v1alpha1.PodOperateLabelPrefix, id): timestamp,
fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, id): timestamp,
},
},
Spec: podSpec,
Expand Down Expand Up @@ -264,9 +264,9 @@ var _ = Describe("podopslifecycle controller", func() {
Expect(err).NotTo(HaveOccurred())

pod.ObjectMeta.Labels = map[string]string{
v1alpha1.ControlledByKusionStackLabelKey: "true",
fmt.Sprintf("%s/%s", v1alpha1.PodOperateLabelPrefix, id): timestamp,
fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, id): timestamp,
v1alpha1.ControlledByKusionStackLabelKey: "true",
fmt.Sprintf("%s/%s", v1alpha1.PodOperateLabelPrefix, id): timestamp,
fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, id): timestamp,
}
err = mgr.GetClient().Update(context.Background(), pod)
Expect(err).NotTo(HaveOccurred())
Expand Down
16 changes: 8 additions & 8 deletions pkg/webhook/server/generic/pod/opslifecycle/mutating.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (lc *OpsLifecycle) Mutating(ctx context.Context, c client.Client, oldPod, n
v1alpha1.PodOperationTypeLabelPrefix,
v1alpha1.PodPreCheckLabelPrefix,
v1alpha1.PodPreCheckedLabelPrefix,
v1alpha1.PodPrepareLabelPrefix,
v1alpha1.PodPreparingLabelPrefix,
v1alpha1.PodOperateLabelPrefix} {

delete(newPod.Labels, fmt.Sprintf("%s/%s", v, id))
Expand All @@ -76,16 +76,16 @@ func (lc *OpsLifecycle) Mutating(ctx context.Context, c client.Client, oldPod, n
operatingCount++

if _, ok := labels[v1alpha1.PodPreCheckedLabelPrefix]; ok { // pre-checked
_, hasPrepare := labels[v1alpha1.PodPrepareLabelPrefix]
_, hasPrepare := labels[v1alpha1.PodPreparingLabelPrefix]
_, hasOperate := labels[v1alpha1.PodOperateLabelPrefix]

if !hasPrepare && !hasOperate {
delete(newPod.Labels, v1alpha1.PodServiceAvailableLabel)

lc.addLabelWithTime(newPod, fmt.Sprintf("%s/%s", v1alpha1.PodPrepareLabelPrefix, id)) // prepare
lc.addLabelWithTime(newPod, fmt.Sprintf("%s/%s", v1alpha1.PodPreparingLabelPrefix, id)) // prepare
} else if !hasOperate {
if ready, _ := lc.readyToUpgrade(newPod); ready {
delete(newPod.Labels, fmt.Sprintf("%s/%s", v1alpha1.PodPrepareLabelPrefix, id))
delete(newPod.Labels, fmt.Sprintf("%s/%s", v1alpha1.PodPreparingLabelPrefix, id))

lc.addLabelWithTime(newPod, fmt.Sprintf("%s/%s", v1alpha1.PodOperateLabelPrefix, id)) // operate
}
Expand All @@ -98,8 +98,8 @@ func (lc *OpsLifecycle) Mutating(ctx context.Context, c client.Client, oldPod, n
}

if _, ok := labels[v1alpha1.PodPostCheckedLabelPrefix]; ok { // post-checked
if _, ok := labels[v1alpha1.PodCompleteLabelPrefix]; !ok {
lc.addLabelWithTime(newPod, fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, id)) // complete
if _, ok := labels[v1alpha1.PodCompletingLabelPrefix]; !ok {
lc.addLabelWithTime(newPod, fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, id)) // complete
}
}

Expand All @@ -109,7 +109,7 @@ func (lc *OpsLifecycle) Mutating(ctx context.Context, c client.Client, oldPod, n
if _, ok := labels[v1alpha1.PodOperatedLabelPrefix]; ok {
operatedCount++
}
if _, ok := labels[v1alpha1.PodCompleteLabelPrefix]; ok { // complete
if _, ok := labels[v1alpha1.PodCompletingLabelPrefix]; ok { // complete
completeCount++
}
}
Expand Down Expand Up @@ -138,7 +138,7 @@ func (lc *OpsLifecycle) Mutating(ctx context.Context, c client.Client, oldPod, n
v1alpha1.PodDoneOperationTypeLabelPrefix,
v1alpha1.PodPostCheckLabelPrefix,
v1alpha1.PodPostCheckedLabelPrefix,
v1alpha1.PodCompleteLabelPrefix} {
v1alpha1.PodCompletingLabelPrefix} {

delete(newPod.Labels, fmt.Sprintf("%s/%s", v, id))
}
Expand Down
20 changes: 10 additions & 10 deletions pkg/webhook/server/generic/pod/opslifecycle/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ func TestMutating(t *testing.T) {
fmt.Sprintf("%s/%s", v1alpha1.PodPreCheckedLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodOperationPermissionLabelPrefix, "upgrade"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodPrepareLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPreparingLabelPrefix, "123"): "1402144848",
},

readyToUpgrade: readyToUpgradeReturnFalse,
Expand Down Expand Up @@ -222,7 +222,7 @@ func TestMutating(t *testing.T) {
fmt.Sprintf("%s/%s", v1alpha1.PodPreCheckedLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodOperationPermissionLabelPrefix, "replace"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodPrepareLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPreparingLabelPrefix, "456"): "1402144848",
},
readyToUpgrade: readyToUpgradeReturnFalse,
},
Expand All @@ -246,7 +246,7 @@ func TestMutating(t *testing.T) {
fmt.Sprintf("%s/%s", v1alpha1.PodPreCheckedLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodOperationPermissionLabelPrefix, "upgrade"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodPrepareLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPreparingLabelPrefix, "123"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodOperatingLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodOperationTypeLabelPrefix, "456"): "replace",
Expand All @@ -273,7 +273,7 @@ func TestMutating(t *testing.T) {
fmt.Sprintf("%s/%s", v1alpha1.PodPreCheckedLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodOperationPermissionLabelPrefix, "upgrade"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodPrepareLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPreparingLabelPrefix, "123"): "1402144848",
},
},

Expand Down Expand Up @@ -371,15 +371,15 @@ func TestMutating(t *testing.T) {
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckedLabelPrefix, "123"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, "123"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodOperateLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodOperatedLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodDoneOperationTypeLabelPrefix, "456"): "upgrade",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckedLabelPrefix, "456"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, "456"): "1402144848",
},
},

Expand All @@ -391,15 +391,15 @@ func TestMutating(t *testing.T) {
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckedLabelPrefix, "123"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, "123"): "1402144848",
},
expectedLabels: map[string]string{
fmt.Sprintf("%s/%s", v1alpha1.PodOperatedLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodDoneOperationTypeLabelPrefix, "123"): "upgrade",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckedLabelPrefix, "123"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, "123"): "1402144848",
},
},

Expand All @@ -412,15 +412,15 @@ func TestMutating(t *testing.T) {
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckedLabelPrefix, "123"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, "123"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, "123"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodOperateLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodOperatedLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodDoneOperationTypeLabelPrefix, "456"): "upgrade",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodPostCheckedLabelPrefix, "456"): "1402144848",

fmt.Sprintf("%s/%s", v1alpha1.PodCompleteLabelPrefix, "456"): "1402144848",
fmt.Sprintf("%s/%s", v1alpha1.PodCompletingLabelPrefix, "456"): "1402144848",
},
expectedLabels: map[string]string{},
},
Expand Down
Loading