Skip to content

Commit 6e9b0d9

Browse files
committed
Mirror ReadyCondition with the actual current condition
This patch covers two things: - Mirror() relies on sorting conditions in each condition group by their LastTransitionTime, so it swaps the RestoreLastTransitionTimes() call with the Mirror() call in the defer function; - It setup ReadyCondition as Unknown instead of False, so we can avoid it to be the only one Mirrored in the top-level status: this allows the other conditions to compete for mirroring Signed-off-by: Francesco Pantano <[email protected]>
1 parent 47e8a3c commit 6e9b0d9

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

controllers/glance_controller.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,12 @@ func (r *GlanceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (res
137137
// Always patch the instance status when exiting this function so we can
138138
// persist any changes.
139139
defer func() {
140-
// Always mirror the condition status (useful in case of failures)
141-
instance.Status.Conditions.Set(
142-
instance.Status.Conditions.Mirror(condition.ReadyCondition))
143140
condition.RestoreLastTransitionTimes(
144141
&instance.Status.Conditions, savedConditions)
142+
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {
143+
instance.Status.Conditions.Set(
144+
instance.Status.Conditions.Mirror(condition.ReadyCondition))
145+
}
145146
err := helper.PatchInstance(ctx, instance)
146147
if err != nil {
147148
_err = err
@@ -152,8 +153,11 @@ func (r *GlanceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (res
152153
// initialize conditions used later as Status=Unknown, except the ReadyCondition
153154
// that should be False when we start
154155
cl := condition.CreateList(
155-
// Mark ReadyCondition as False from the beginning
156-
condition.FalseCondition(condition.ReadyCondition, condition.InitReason, condition.SeverityInfo, condition.ReadyInitMessage),
156+
// Mark ReadyCondition as Unknown from the beginning, because the
157+
// Reconcile function is in progress. If this condition is not marked
158+
// as True and is still in the "Unknown" state, we `Mirror(` the actual
159+
// failure
160+
condition.UnknownCondition(condition.ReadyCondition, condition.InitReason, condition.ReadyInitMessage),
157161
condition.UnknownCondition(condition.DBReadyCondition, condition.InitReason, condition.DBReadyInitMessage),
158162
condition.UnknownCondition(condition.DBSyncReadyCondition, condition.InitReason, condition.DBSyncReadyInitMessage),
159163
condition.UnknownCondition(condition.MemcachedReadyCondition, condition.InitReason, condition.MemcachedReadyInitMessage),

controllers/glanceapi_controller.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,12 @@ func (r *GlanceAPIReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
134134

135135
// Always patch the instance status when exiting this function so we can persist any changes.
136136
defer func() {
137-
// Always mirror the Condition from the sub level CRs
138-
instance.Status.Conditions.Set(instance.Status.Conditions.Mirror(condition.ReadyCondition))
139-
condition.RestoreLastTransitionTimes(&instance.Status.Conditions, savedConditions)
137+
condition.RestoreLastTransitionTimes(
138+
&instance.Status.Conditions, savedConditions)
139+
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {
140+
instance.Status.Conditions.Set(
141+
instance.Status.Conditions.Mirror(condition.ReadyCondition))
142+
}
140143
err := helper.PatchInstance(ctx, instance)
141144
if err != nil {
142145
_err = err
@@ -146,6 +149,11 @@ func (r *GlanceAPIReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
146149

147150
// initialize conditions used later as Status=Unknown
148151
cl := condition.CreateList(
152+
// Mark ReadyCondition as Unknown from the beginning, because the
153+
// Reconcile function is in progress. If this condition is not marked
154+
// as True and is still in the "Unknown" state, we `Mirror(` the actual
155+
// failure
156+
condition.UnknownCondition(condition.ReadyCondition, condition.InitReason, condition.ReadyInitMessage),
149157
condition.UnknownCondition(glancev1.CinderCondition, condition.InitReason, glancev1.CinderInitMessage),
150158
condition.UnknownCondition(condition.ExposeServiceReadyCondition, condition.InitReason, condition.ExposeServiceReadyInitMessage),
151159
condition.UnknownCondition(condition.InputReadyCondition, condition.InitReason, condition.InputReadyInitMessage),

0 commit comments

Comments
 (0)