diff --git a/e2e/suite/job_generate_test.go b/e2e/suite/job_generate_test.go index e36156aee7bd32b4b4d1d122dffde98929384699..b480c3eb81ac15ffb0164a21a09a5108d6a28661 100644 --- a/e2e/suite/job_generate_test.go +++ b/e2e/suite/job_generate_test.go @@ -51,9 +51,13 @@ var _ = Describe("Job Generation", func() { Expect(jobs[0].Status.Active).To(BeNumerically("==", 0)) Expect(jobs[0].Status.Failed).To(BeNumerically(">=", 1)) + Eventually(e2e.GetPlan). + WithArguments(plan.Name, metav1.GetOptions{}). + WithTimeout(30 * time.Second). + Should(WithTransform(upgradeapiv1.PlanComplete.IsTrue, BeFalse())) + plan, err = e2e.GetPlan(plan.Name, metav1.GetOptions{}) Expect(err).ToNot(HaveOccurred()) - plan.Spec.Upgrade.Args = []string{"exit 0"} plan, err = e2e.UpdatePlan(plan) Expect(err).ToNot(HaveOccurred()) @@ -67,6 +71,11 @@ var _ = Describe("Job Generation", func() { Expect(jobs[0].Status.Succeeded).To(BeNumerically("==", 1)) Expect(jobs[0].Status.Active).To(BeNumerically("==", 0)) Expect(jobs[0].Status.Failed).To(BeNumerically("==", 0)) + + Eventually(e2e.GetPlan). + WithArguments(plan.Name, metav1.GetOptions{}). + WithTimeout(30 * time.Second). + Should(WithTransform(upgradeapiv1.PlanComplete.IsTrue, BeTrue())) }) }) diff --git a/pkg/apis/upgrade.cattle.io/v1/types.go b/pkg/apis/upgrade.cattle.io/v1/types.go index 63fc5240ba1d4a67aee102621f8016db3ec7cf35..59a104051bddcfaa8d265599eac358fc2f5947b2 100644 --- a/pkg/apis/upgrade.cattle.io/v1/types.go +++ b/pkg/apis/upgrade.cattle.io/v1/types.go @@ -17,6 +17,8 @@ var ( PlanLatestResolved = condition.Cond("LatestResolved") // PlanSpecValidated indicates that the plan spec has been validated. PlanSpecValidated = condition.Cond("Validated") + // PlanComplete indicates that the latest version of the plan has completed on all selected nodes. + PlanComplete = condition.Cond("Complete") ) // +genclient diff --git a/pkg/upgrade/handle_upgrade.go b/pkg/upgrade/handle_upgrade.go index 95da018a986c0500cadf6e966b12a044009d20d6..876d1ee4a4908430c68d97d28dcfeac41e7cba21 100644 --- a/pkg/upgrade/handle_upgrade.go +++ b/pkg/upgrade/handle_upgrade.go @@ -93,6 +93,7 @@ func (ctl *Controller) handlePlans(ctx context.Context) error { concurrentNodeNames[i] = upgradenode.Hostname(node) } obj.Status.Applying = concurrentNodeNames[:] + upgradeapiv1.PlanComplete.SetStatusBool(obj, len(concurrentNodeNames) == 0) return objects, obj.Status, nil }, &generic.GeneratingHandlerOptions{