Skip to content

Commit 844a0a2

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 844a0a2

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
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: 15 additions & 6 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 {
396+
397+
if instance.Status.DeployedVersion == nil {
401398
instance.Status.Conditions.Remove(corev1beta1.OpenStackVersionMinorUpdateAvailable)
399+
} else {
400+
if *instance.Status.AvailableVersion != *instance.Status.DeployedVersion {
401+
instance.Status.Conditions.Set(condition.TrueCondition(
402+
corev1beta1.OpenStackVersionMinorUpdateAvailable,
403+
corev1beta1.OpenStackVersionMinorUpdateAvailableMessage))
404+
} else {
405+
instance.Status.Conditions.Set(condition.FalseCondition(
406+
corev1beta1.OpenStackVersionMinorUpdateAvailable,
407+
corev1beta1.OpenStackVersionMinorUpdateAtLatestKnownReason,
408+
condition.SeverityInfo,
409+
corev1beta1.OpenStackVersionMinorUpdateAtLatestKnownMessage))
410+
}
402411
}
403412

404413
return ctrl.Result{}, nil

tests/functional/ctlplane/openstackversion_controller_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -675,8 +675,14 @@ var _ = Describe("OpenStackOperator controller", func() {
675675
k8s_corev1.ConditionTrue,
676676
)
677677
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())
678+
// The `MinorUpdateAvailable` condition is False and the reason is `AtLatestKnown`
679+
// e.g. No update is available
680+
th.ExpectCondition(
681+
names.OpenStackVersionName,
682+
ConditionGetterFunc(OpenStackVersionConditionGetter),
683+
corev1.OpenStackVersionMinorUpdateAtLatestKnownReason,
684+
k8s_corev1.ConditionFalse,
685+
)
680686
}, timeout, interval).Should(Succeed())
681687

682688
})

0 commit comments

Comments
 (0)