Skip to content

Commit 1443a67

Browse files
committed
Sync'd latest round of changes
Signed-off-by: michaelawyu <[email protected]>
1 parent 451f0a1 commit 1443a67

14 files changed

+654
-38
lines changed

pkg/controllers/updaterun/controller.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,11 +196,19 @@ func (r *Reconciler) ensureFinalizer(ctx context.Context, updateRun *placementv1
196196

197197
// recordUpdateRunSucceeded records the succeeded condition in the ClusterStagedUpdateRun status.
198198
func (r *Reconciler) recordUpdateRunSucceeded(ctx context.Context, updateRun *placementv1beta1.ClusterStagedUpdateRun) error {
199+
meta.SetStatusCondition(&updateRun.Status.Conditions, metav1.Condition{
200+
Type: string(placementv1beta1.StagedUpdateRunConditionProgressing),
201+
Status: metav1.ConditionFalse,
202+
ObservedGeneration: updateRun.Generation,
203+
Reason: condition.UpdateRunSucceededReason,
204+
Message: "All stages are completed",
205+
})
199206
meta.SetStatusCondition(&updateRun.Status.Conditions, metav1.Condition{
200207
Type: string(placementv1beta1.StagedUpdateRunConditionSucceeded),
201208
Status: metav1.ConditionTrue,
202209
ObservedGeneration: updateRun.Generation,
203210
Reason: condition.UpdateRunSucceededReason,
211+
Message: "All stages are completed successfully",
204212
})
205213
if updateErr := r.Client.Status().Update(ctx, updateRun); updateErr != nil {
206214
klog.ErrorS(updateErr, "Failed to update the ClusterStagedUpdateRun status as succeeded", "clusterStagedUpdateRun", klog.KObj(updateRun))
@@ -212,6 +220,13 @@ func (r *Reconciler) recordUpdateRunSucceeded(ctx context.Context, updateRun *pl
212220

213221
// recordUpdateRunFailed records the failed condition in the ClusterStagedUpdateRun status.
214222
func (r *Reconciler) recordUpdateRunFailed(ctx context.Context, updateRun *placementv1beta1.ClusterStagedUpdateRun, message string) error {
223+
meta.SetStatusCondition(&updateRun.Status.Conditions, metav1.Condition{
224+
Type: string(placementv1beta1.StagedUpdateRunConditionProgressing),
225+
Status: metav1.ConditionFalse,
226+
ObservedGeneration: updateRun.Generation,
227+
Reason: condition.UpdateRunFailedReason,
228+
Message: "The stages are aborted due to a non-recoverable error",
229+
})
215230
meta.SetStatusCondition(&updateRun.Status.Conditions, metav1.Condition{
216231
Type: string(placementv1beta1.StagedUpdateRunConditionSucceeded),
217232
Status: metav1.ConditionFalse,

pkg/controllers/updaterun/controller_integration_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,8 @@ func generateFalseCondition(obj client.Object, condType any) metav1.Condition {
570570
switch cond {
571571
case placementv1beta1.StageUpdatingConditionSucceeded:
572572
reason = condition.StageUpdatingFailedReason
573+
case placementv1beta1.StageUpdatingConditionProgressing:
574+
reason = condition.StageUpdatingWaitingReason
573575
}
574576
typeStr = string(cond)
575577
case placementv1beta1.ClusterUpdatingStatusConditionType:
@@ -592,3 +594,24 @@ func generateFalseCondition(obj client.Object, condType any) metav1.Condition {
592594
Reason: reason,
593595
}
594596
}
597+
598+
func generateFalseProgressingCondition(obj client.Object, condType any, succeeded bool) metav1.Condition {
599+
falseCond := generateFalseCondition(obj, condType)
600+
reason := ""
601+
switch condType {
602+
case placementv1beta1.StagedUpdateRunConditionProgressing:
603+
if succeeded {
604+
reason = condition.UpdateRunSucceededReason
605+
} else {
606+
reason = condition.UpdateRunFailedReason
607+
}
608+
case placementv1beta1.StageUpdatingConditionProgressing:
609+
if succeeded {
610+
reason = condition.StageUpdatingSucceededReason
611+
} else {
612+
reason = condition.StageUpdatingFailedReason
613+
}
614+
}
615+
falseCond.Reason = reason
616+
return falseCond
617+
}

pkg/controllers/updaterun/execution.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ func (r *Reconciler) updateApprovalRequestAccepted(ctx context.Context, appReq *
391391
Status: metav1.ConditionTrue,
392392
ObservedGeneration: appReq.Generation,
393393
Reason: condition.ApprovalRequestApprovalAcceptedReason,
394+
Message: "The approval request has been approved and cannot be reverted",
394395
}
395396
meta.SetStatusCondition(&appReq.Status.Conditions, cond)
396397
if err := r.Client.Status().Update(ctx, appReq); err != nil {
@@ -454,6 +455,7 @@ func markUpdateRunStarted(updateRun *placementv1beta1.ClusterStagedUpdateRun) {
454455
Status: metav1.ConditionTrue,
455456
ObservedGeneration: updateRun.Generation,
456457
Reason: condition.UpdateRunStartedReason,
458+
Message: "The stages started updating",
457459
})
458460
}
459461

@@ -467,6 +469,7 @@ func markStageUpdatingStarted(stageUpdatingStatus *placementv1beta1.StageUpdatin
467469
Status: metav1.ConditionTrue,
468470
ObservedGeneration: generation,
469471
Reason: condition.StageUpdatingStartedReason,
472+
Message: "Clusters in the stage started updating",
470473
})
471474
}
472475

@@ -477,6 +480,7 @@ func markStageUpdatingWaiting(stageUpdatingStatus *placementv1beta1.StageUpdatin
477480
Status: metav1.ConditionFalse,
478481
ObservedGeneration: generation,
479482
Reason: condition.StageUpdatingWaitingReason,
483+
Message: "All clusters in the stage are updated, waiting for after-stage tasks to complete",
480484
})
481485
}
482486

@@ -485,11 +489,19 @@ func markStageUpdatingSucceeded(stageUpdatingStatus *placementv1beta1.StageUpdat
485489
if stageUpdatingStatus.EndTime == nil {
486490
stageUpdatingStatus.EndTime = &metav1.Time{Time: time.Now()}
487491
}
492+
meta.SetStatusCondition(&stageUpdatingStatus.Conditions, metav1.Condition{
493+
Type: string(placementv1beta1.StageUpdatingConditionProgressing),
494+
Status: metav1.ConditionFalse,
495+
ObservedGeneration: generation,
496+
Reason: condition.StageUpdatingSucceededReason,
497+
Message: "All clusters in the stage are updated and after-stage tasks are completed",
498+
})
488499
meta.SetStatusCondition(&stageUpdatingStatus.Conditions, metav1.Condition{
489500
Type: string(placementv1beta1.StageUpdatingConditionSucceeded),
490501
Status: metav1.ConditionTrue,
491502
ObservedGeneration: generation,
492503
Reason: condition.StageUpdatingSucceededReason,
504+
Message: "Stage update completed successfully",
493505
})
494506
}
495507

@@ -498,6 +510,13 @@ func markStageUpdatingFailed(stageUpdatingStatus *placementv1beta1.StageUpdating
498510
if stageUpdatingStatus.EndTime == nil {
499511
stageUpdatingStatus.EndTime = &metav1.Time{Time: time.Now()}
500512
}
513+
meta.SetStatusCondition(&stageUpdatingStatus.Conditions, metav1.Condition{
514+
Type: string(placementv1beta1.StageUpdatingConditionProgressing),
515+
Status: metav1.ConditionFalse,
516+
ObservedGeneration: generation,
517+
Reason: condition.StageUpdatingFailedReason,
518+
Message: "Stage update aborted due to a non-recoverable error",
519+
})
501520
meta.SetStatusCondition(&stageUpdatingStatus.Conditions, metav1.Condition{
502521
Type: string(placementv1beta1.StageUpdatingConditionSucceeded),
503522
Status: metav1.ConditionFalse,
@@ -514,6 +533,7 @@ func markClusterUpdatingStarted(clusterUpdatingStatus *placementv1beta1.ClusterU
514533
Status: metav1.ConditionTrue,
515534
ObservedGeneration: generation,
516535
Reason: condition.ClusterUpdatingStartedReason,
536+
Message: "Cluster update started",
517537
})
518538
}
519539

@@ -524,6 +544,7 @@ func markClusterUpdatingSucceeded(clusterUpdatingStatus *placementv1beta1.Cluste
524544
Status: metav1.ConditionTrue,
525545
ObservedGeneration: generation,
526546
Reason: condition.ClusterUpdatingSucceededReason,
547+
Message: "Cluster update completed successfully",
527548
})
528549
}
529550

@@ -545,6 +566,7 @@ func markAfterStageRequestCreated(afterStageTaskStatus *placementv1beta1.AfterSt
545566
Status: metav1.ConditionTrue,
546567
ObservedGeneration: generation,
547568
Reason: condition.AfterStageTaskApprovalRequestCreatedReason,
569+
Message: "ClusterApprovalRequest is created",
548570
})
549571
}
550572

@@ -555,6 +577,7 @@ func markAfterStageRequestApproved(afterStageTaskStatus *placementv1beta1.AfterS
555577
Status: metav1.ConditionTrue,
556578
ObservedGeneration: generation,
557579
Reason: condition.AfterStageTaskApprovalRequestApprovedReason,
580+
Message: "ClusterApprovalRequest is approved",
558581
})
559582
}
560583

@@ -565,5 +588,6 @@ func markAfterStageWaitTimeElapsed(afterStageTaskStatus *placementv1beta1.AfterS
565588
Status: metav1.ConditionTrue,
566589
ObservedGeneration: generation,
567590
Reason: condition.AfterStageTaskWaitTimeElapsedReason,
591+
Message: "Wait time elapsed",
568592
})
569593
}

pkg/controllers/updaterun/execution_integration_test.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -268,10 +268,8 @@ var _ = Describe("UpdateRun execution tests", func() {
268268
Expect(k8sClient.Status().Update(ctx, binding)).Should(Succeed(), "failed to update the binding status")
269269

270270
By("Validating the 5th cluster has succeeded and stage waiting for AfterStageTasks")
271-
stageWaitingCondition := generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing)
272-
stageWaitingCondition.Reason = condition.StageUpdatingWaitingReason
273271
wantStatus.StagesStatus[0].Clusters[4].Conditions = append(wantStatus.StagesStatus[0].Clusters[4].Conditions, generateTrueCondition(updateRun, placementv1beta1.ClusterUpdatingConditionSucceeded))
274-
wantStatus.StagesStatus[0].Conditions[0] = stageWaitingCondition // The progressing condition now becomes false with waiting reason.
272+
wantStatus.StagesStatus[0].Conditions[0] = generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing) // The progressing condition now becomes false with waiting reason.
275273
wantStatus.StagesStatus[0].AfterStageTaskStatus[1].Conditions = append(wantStatus.StagesStatus[0].AfterStageTaskStatus[1].Conditions,
276274
generateTrueCondition(updateRun, placementv1beta1.AfterStageTaskConditionApprovalRequestCreated))
277275
validateClusterStagedUpdateRunStatus(ctx, updateRun, wantStatus, "")
@@ -318,7 +316,8 @@ var _ = Describe("UpdateRun execution tests", func() {
318316
// Approval afterStageTask completed.
319317
wantStatus.StagesStatus[0].AfterStageTaskStatus[1].Conditions = append(wantStatus.StagesStatus[0].AfterStageTaskStatus[1].Conditions,
320318
generateTrueCondition(updateRun, placementv1beta1.AfterStageTaskConditionApprovalRequestApproved))
321-
// 1st stage completed.
319+
// 1st stage completed, mark progressing condition reason as succeeded and add succeeded condition.
320+
wantStatus.StagesStatus[0].Conditions[0] = generateFalseProgressingCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing, true)
322321
wantStatus.StagesStatus[0].Conditions = append(wantStatus.StagesStatus[0].Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionSucceeded))
323322
// 2nd stage started.
324323
wantStatus.StagesStatus[1].Conditions = append(wantStatus.StagesStatus[1].Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing))
@@ -414,9 +413,7 @@ var _ = Describe("UpdateRun execution tests", func() {
414413

415414
By("Validating the 5th cluster has succeeded and the stage waiting for AfterStageTask")
416415
wantStatus.StagesStatus[1].Clusters[4].Conditions = append(wantStatus.StagesStatus[1].Clusters[4].Conditions, generateTrueCondition(updateRun, placementv1beta1.ClusterUpdatingConditionSucceeded))
417-
stageWaitingCondition := generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing)
418-
stageWaitingCondition.Reason = condition.StageUpdatingWaitingReason
419-
wantStatus.StagesStatus[1].Conditions[0] = stageWaitingCondition // The progressing condition now becomes false with waiting reason.
416+
wantStatus.StagesStatus[1].Conditions[0] = generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing) // The progressing condition now becomes false with waiting reason.
420417
wantStatus.StagesStatus[1].AfterStageTaskStatus[0].Conditions = append(wantStatus.StagesStatus[1].AfterStageTaskStatus[0].Conditions,
421418
generateTrueCondition(updateRun, placementv1beta1.AfterStageTaskConditionApprovalRequestCreated))
422419
validateClusterStagedUpdateRunStatus(ctx, updateRun, wantStatus, "")
@@ -461,6 +458,7 @@ var _ = Describe("UpdateRun execution tests", func() {
461458
generateTrueCondition(updateRun, placementv1beta1.AfterStageTaskConditionApprovalRequestApproved))
462459
wantStatus.StagesStatus[1].AfterStageTaskStatus[1].Conditions = append(wantStatus.StagesStatus[1].AfterStageTaskStatus[1].Conditions,
463460
generateTrueCondition(updateRun, placementv1beta1.AfterStageTaskConditionWaitTimeElapsed))
461+
wantStatus.StagesStatus[1].Conditions[0] = generateFalseProgressingCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing, true)
464462
wantStatus.StagesStatus[1].Conditions = append(wantStatus.StagesStatus[1].Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionSucceeded))
465463

466464
wantStatus.DeletionStageStatus.Conditions = append(wantStatus.DeletionStageStatus.Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing))
@@ -511,7 +509,11 @@ var _ = Describe("UpdateRun execution tests", func() {
511509
for i := range wantStatus.DeletionStageStatus.Clusters {
512510
wantStatus.DeletionStageStatus.Clusters[i].Conditions = append(wantStatus.DeletionStageStatus.Clusters[i].Conditions, generateTrueCondition(updateRun, placementv1beta1.ClusterUpdatingConditionSucceeded))
513511
}
512+
// Mark the stage progressing condition as false with succeeded reason and add succeeded condition.
513+
wantStatus.DeletionStageStatus.Conditions[0] = generateFalseProgressingCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing, true)
514514
wantStatus.DeletionStageStatus.Conditions = append(wantStatus.DeletionStageStatus.Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionSucceeded))
515+
// Mark updateRun progressing condition as false with succeeded reason and add succeeded condition.
516+
wantStatus.Conditions[1] = generateFalseProgressingCondition(updateRun, placementv1beta1.StagedUpdateRunConditionProgressing, true)
515517
wantStatus.Conditions = append(wantStatus.Conditions, generateTrueCondition(updateRun, placementv1beta1.StagedUpdateRunConditionSucceeded))
516518
validateClusterStagedUpdateRunStatus(ctx, updateRun, wantStatus, "")
517519
})
@@ -606,10 +608,8 @@ var _ = Describe("UpdateRun execution tests", func() {
606608
Expect(k8sClient.Status().Update(ctx, binding)).Should(Succeed(), "failed to update the binding status")
607609

608610
By("Validating the 5th cluster has succeeded and stage waiting for AfterStageTasks")
609-
stageWaitingCondition := generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing)
610-
stageWaitingCondition.Reason = condition.StageUpdatingWaitingReason
611611
wantStatus.StagesStatus[0].Clusters[4].Conditions = append(wantStatus.StagesStatus[0].Clusters[4].Conditions, generateTrueCondition(updateRun, placementv1beta1.ClusterUpdatingConditionSucceeded))
612-
wantStatus.StagesStatus[0].Conditions[0] = stageWaitingCondition // The progressing condition now becomes false with waiting reason.
612+
wantStatus.StagesStatus[0].Conditions[0] = generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing) // The progressing condition now becomes false with waiting reason.
613613
validateClusterStagedUpdateRunStatus(ctx, updateRun, wantStatus, "")
614614
})
615615

@@ -619,6 +619,7 @@ var _ = Describe("UpdateRun execution tests", func() {
619619
wantStatus.StagesStatus[0].AfterStageTaskStatus[0].Conditions = append(wantStatus.StagesStatus[0].AfterStageTaskStatus[0].Conditions,
620620
generateTrueCondition(updateRun, placementv1beta1.AfterStageTaskConditionWaitTimeElapsed))
621621
// 1st stage completed.
622+
wantStatus.StagesStatus[0].Conditions[0] = generateFalseProgressingCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing, true)
622623
wantStatus.StagesStatus[0].Conditions = append(wantStatus.StagesStatus[0].Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionSucceeded))
623624
// 2nd stage started.
624625
wantStatus.StagesStatus[1].Conditions = append(wantStatus.StagesStatus[1].Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing))
@@ -710,9 +711,7 @@ var _ = Describe("UpdateRun execution tests", func() {
710711

711712
By("Validating the 5th cluster has succeeded and the stage waiting for AfterStageTask")
712713
wantStatus.StagesStatus[1].Clusters[4].Conditions = append(wantStatus.StagesStatus[1].Clusters[4].Conditions, generateTrueCondition(updateRun, placementv1beta1.ClusterUpdatingConditionSucceeded))
713-
stageWaitingCondition := generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing)
714-
stageWaitingCondition.Reason = condition.StageUpdatingWaitingReason
715-
wantStatus.StagesStatus[1].Conditions[0] = stageWaitingCondition // The progressing condition now becomes false with waiting reason.
714+
wantStatus.StagesStatus[1].Conditions[0] = generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing) // The progressing condition now becomes false with waiting reason.
716715
wantStatus.StagesStatus[1].AfterStageTaskStatus[0].Conditions = append(wantStatus.StagesStatus[1].AfterStageTaskStatus[0].Conditions,
717716
generateTrueCondition(updateRun, placementv1beta1.AfterStageTaskConditionApprovalRequestCreated))
718717
validateClusterStagedUpdateRunStatus(ctx, updateRun, wantStatus, "")
@@ -755,6 +754,7 @@ var _ = Describe("UpdateRun execution tests", func() {
755754
By("Validating the 2nd stage has completed and the delete stage has started")
756755
wantStatus.StagesStatus[1].AfterStageTaskStatus[0].Conditions = append(wantStatus.StagesStatus[1].AfterStageTaskStatus[0].Conditions,
757756
generateTrueCondition(updateRun, placementv1beta1.AfterStageTaskConditionApprovalRequestApproved))
757+
wantStatus.StagesStatus[1].Conditions[0] = generateFalseProgressingCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing, true)
758758
wantStatus.StagesStatus[1].Conditions = append(wantStatus.StagesStatus[1].Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionSucceeded))
759759

760760
wantStatus.DeletionStageStatus.Conditions = append(wantStatus.DeletionStageStatus.Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing))
@@ -795,7 +795,9 @@ var _ = Describe("UpdateRun execution tests", func() {
795795
for i := range wantStatus.DeletionStageStatus.Clusters {
796796
wantStatus.DeletionStageStatus.Clusters[i].Conditions = append(wantStatus.DeletionStageStatus.Clusters[i].Conditions, generateTrueCondition(updateRun, placementv1beta1.ClusterUpdatingConditionSucceeded))
797797
}
798+
wantStatus.DeletionStageStatus.Conditions[0] = generateFalseProgressingCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing, true)
798799
wantStatus.DeletionStageStatus.Conditions = append(wantStatus.DeletionStageStatus.Conditions, generateTrueCondition(updateRun, placementv1beta1.StageUpdatingConditionSucceeded))
800+
wantStatus.Conditions[1] = generateFalseProgressingCondition(updateRun, placementv1beta1.StagedUpdateRunConditionProgressing, true)
799801
wantStatus.Conditions = append(wantStatus.Conditions, generateTrueCondition(updateRun, placementv1beta1.StagedUpdateRunConditionSucceeded))
800802
validateClusterStagedUpdateRunStatus(ctx, updateRun, wantStatus, "")
801803
})
@@ -837,7 +839,9 @@ var _ = Describe("UpdateRun execution tests", func() {
837839

838840
By("Validating the updateRun has failed")
839841
wantStatus.StagesStatus[0].Clusters[0].Conditions = append(wantStatus.StagesStatus[0].Clusters[0].Conditions, generateFalseCondition(updateRun, placementv1beta1.ClusterUpdatingConditionSucceeded))
842+
wantStatus.StagesStatus[0].Conditions[0] = generateFalseProgressingCondition(updateRun, placementv1beta1.StageUpdatingConditionProgressing, false)
840843
wantStatus.StagesStatus[0].Conditions = append(wantStatus.StagesStatus[0].Conditions, generateFalseCondition(updateRun, placementv1beta1.StageUpdatingConditionSucceeded))
844+
wantStatus.Conditions[1] = generateFalseProgressingCondition(updateRun, placementv1beta1.StagedUpdateRunConditionProgressing, false)
841845
wantStatus.Conditions = append(wantStatus.Conditions, generateFalseCondition(updateRun, placementv1beta1.StagedUpdateRunConditionSucceeded))
842846
validateClusterStagedUpdateRunStatus(ctx, updateRun, wantStatus, "")
843847
})

0 commit comments

Comments
 (0)