Skip to content

Commit 0b14ebd

Browse files
committed
Do not rm MinorUpdateAvailable condition
Instead of removing the condtion, let's set it to False, with severity Info and a message "AtLatestKnown". With the CLI it is not possible to wait for a condition to be removed, With this change we can do: `wait --for condition=MinorUpdateAvailable=True` Patch the targetVersion and wait for: `wait --for condition=MinorUpdateAvailable=False`
1 parent c1cdd8c commit 0b14ebd

File tree

3 files changed

+38
-10
lines changed

3 files changed

+38
-10
lines changed

apis/core/v1beta1/conditions.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,4 +540,13 @@ const (
540540

541541
// OpenStackVersionMinorUpdateAvailableMessage
542542
OpenStackVersionMinorUpdateAvailableMessage = "update available"
543+
544+
// OpenStackVersionMinorUpdateAtLatestKnownMessage
545+
OpenStackVersionMinorUpdateAtLatestKnownMessage = "at latest known"
546+
)
547+
548+
// Reasons used for API objects.
549+
const (
550+
// OpenStackVersionMinorUpdateAtLatestKnownReason
551+
OpenStackVersionMinorUpdateAtLatestKnownReason = "AtLatestKnown"
543552
)

controllers/core/openstackversion_controller.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
172172
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateKeystone, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
173173
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateControlplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
174174
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateDataplane, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
175+
*condition.UnknownCondition(corev1beta1.OpenStackVersionMinorUpdateAvailable, condition.InitReason, string(corev1beta1.OpenStackVersionMinorUpdateInitMessage)),
175176
)
176177
}
177178
instance.Status.Conditions.Init(&cl)
@@ -392,13 +393,21 @@ func (r *OpenStackVersionReconciler) Reconcile(ctx context.Context, req ctrl.Req
392393
Log.Info("Setting DeployedVersion")
393394
instance.Status.DeployedVersion = &instance.Spec.TargetVersion
394395
}
395-
if instance.Status.DeployedVersion != nil &&
396-
*instance.Status.AvailableVersion != *instance.Status.DeployedVersion {
397-
instance.Status.Conditions.Set(condition.TrueCondition(
398-
corev1beta1.OpenStackVersionMinorUpdateAvailable,
399-
corev1beta1.OpenStackVersionMinorUpdateAvailableMessage))
400-
} else {
401-
instance.Status.Conditions.Remove(corev1beta1.OpenStackVersionMinorUpdateAvailable)
396+
397+
if instance.Status.DeployedVersion != nil {
398+
399+
if *instance.Status.AvailableVersion != *instance.Status.DeployedVersion {
400+
instance.Status.Conditions.Set(condition.TrueCondition(
401+
corev1beta1.OpenStackVersionMinorUpdateAvailable,
402+
corev1beta1.OpenStackVersionMinorUpdateAvailableMessage))
403+
} else {
404+
instance.Status.Conditions.Set(condition.FalseCondition(
405+
corev1beta1.OpenStackVersionMinorUpdateAvailable,
406+
corev1beta1.OpenStackVersionMinorUpdateAtLatestKnownReason,
407+
condition.SeverityInfo,
408+
corev1beta1.OpenStackVersionMinorUpdateAtLatestKnownMessage))
409+
}
410+
402411
}
403412

404413
return ctrl.Result{}, nil

tests/functional/ctlplane/openstackversion_controller_test.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -668,15 +668,25 @@ var _ = Describe("OpenStackOperator controller", func() {
668668
osversion := GetOpenStackVersion(names.OpenStackVersionName)
669669
g.Expect(osversion).Should(Not(BeNil()))
670670
g.Expect(osversion.OwnerReferences).Should(HaveLen(1))
671+
// The `MinorUpdateAvailable` condition is False and the reason is `AtLatestKnown`
672+
// e.g. No update is available
673+
th.ExpectConditionWithDetails(
674+
names.OpenStackVersionName,
675+
ConditionGetterFunc(OpenStackVersionConditionGetter),
676+
corev1.OpenStackVersionMinorUpdateAvailable,
677+
k8s_corev1.ConditionFalse,
678+
corev1.OpenStackVersionMinorUpdateAtLatestKnownReason,
679+
corev1.OpenStackVersionMinorUpdateAtLatestKnownMessage,
680+
)
681+
g.Expect(osversion.Status.DeployedVersion).Should(Equal(&updatedVersion)) // we're done here
682+
671683
th.ExpectCondition(
672684
names.OpenStackVersionName,
673685
ConditionGetterFunc(OpenStackVersionConditionGetter),
674686
condition.ReadyCondition,
675687
k8s_corev1.ConditionTrue,
676688
)
677-
g.Expect(osversion.Status.DeployedVersion).Should(Equal(&updatedVersion)) // we're done here
678-
// no condition which reflects an update is available
679-
g.Expect(osversion.Status.Conditions.Has(corev1.OpenStackVersionMinorUpdateAvailable)).To(BeFalse())
689+
680690
}, timeout, interval).Should(Succeed())
681691

682692
})

0 commit comments

Comments
 (0)