Skip to content

Commit 4c59ff7

Browse files
committed
observedGeneration for all SetStatusCondition
1 parent 7da8c77 commit 4c59ff7

File tree

8 files changed

+266
-213
lines changed

8 files changed

+266
-213
lines changed

internal/controllers/database/init.go

+35-28
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ func (r *Reconciler) setInitPipelineStatus(
2424
) (bool, ctrl.Result, error) {
2525
if database.Status.State == DatabasePreparing {
2626
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
27-
Type: DatabaseInitializedCondition,
28-
Status: metav1.ConditionFalse,
29-
Reason: ReasonInProgress,
30-
Message: "Database has not been initialized yet",
27+
Type: DatabaseInitializedCondition,
28+
Status: metav1.ConditionFalse,
29+
Reason: ReasonInProgress,
30+
ObservedGeneration: database.Generation,
31+
Message: "Database has not been initialized yet",
3132
})
3233
database.Status.State = DatabaseInitializing
3334
return r.updateStatus(ctx, database, StatusUpdateRequeueDelay)
@@ -58,16 +59,18 @@ func (r *Reconciler) setInitDatabaseCompleted(
5859
message string,
5960
) (bool, ctrl.Result, error) {
6061
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
61-
Type: DatabaseInitializedCondition,
62-
Status: metav1.ConditionTrue,
63-
Reason: ReasonCompleted,
64-
Message: message,
62+
Type: DatabaseInitializedCondition,
63+
Status: metav1.ConditionTrue,
64+
Reason: ReasonCompleted,
65+
ObservedGeneration: database.Generation,
66+
Message: message,
6567
})
6668
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
67-
Type: CreateDatabaseOperationCondition,
68-
Status: metav1.ConditionTrue,
69-
Reason: ReasonCompleted,
70-
Message: "Tenant creation operation is completed",
69+
Type: CreateDatabaseOperationCondition,
70+
Status: metav1.ConditionTrue,
71+
Reason: ReasonCompleted,
72+
ObservedGeneration: database.Generation,
73+
Message: "Tenant creation operation is completed",
7174
})
7275
return r.updateStatus(ctx, database, StatusUpdateRequeueDelay)
7376
}
@@ -90,10 +93,11 @@ func (r *Reconciler) checkCreateDatabaseOperation(
9093
errMessage,
9194
)
9295
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
93-
Type: CreateDatabaseOperationCondition,
94-
Status: metav1.ConditionFalse,
95-
Reason: ReasonFailed,
96-
Message: errMessage,
96+
Type: CreateDatabaseOperationCondition,
97+
Status: metav1.ConditionFalse,
98+
Reason: ReasonFailed,
99+
ObservedGeneration: database.Generation,
100+
Message: errMessage,
97101
})
98102
return r.updateStatus(ctx, database, DatabaseInitializationRequeueDelay)
99103
}
@@ -124,10 +128,11 @@ func (r *Reconciler) checkCreateDatabaseOperation(
124128
errMessage,
125129
)
126130
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
127-
Type: CreateDatabaseOperationCondition,
128-
Status: metav1.ConditionFalse,
129-
Reason: ReasonCompleted,
130-
Message: errMessage,
131+
Type: CreateDatabaseOperationCondition,
132+
Status: metav1.ConditionFalse,
133+
Reason: ReasonCompleted,
134+
ObservedGeneration: database.Generation,
135+
Message: errMessage,
131136
})
132137
return r.updateStatus(ctx, database, DatabaseInitializationRequeueDelay)
133138
}
@@ -140,10 +145,11 @@ func (r *Reconciler) checkCreateDatabaseOperation(
140145
fmt.Sprintf("Tenant creation operation is not completed, operationID: %s", operationID),
141146
)
142147
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
143-
Type: CreateDatabaseOperationCondition,
144-
Status: metav1.ConditionUnknown,
145-
Reason: ReasonInProgress,
146-
Message: operationID,
148+
Type: CreateDatabaseOperationCondition,
149+
Status: metav1.ConditionUnknown,
150+
Reason: ReasonInProgress,
151+
ObservedGeneration: database.Generation,
152+
Message: operationID,
147153
})
148154
return r.updateStatus(ctx, database, DatabaseInitializationRequeueDelay)
149155
}
@@ -296,10 +302,11 @@ func (r *Reconciler) initializeTenant(
296302
fmt.Sprintf("Tenant creation operation in progress, operationID: %s", operationID),
297303
)
298304
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
299-
Type: CreateDatabaseOperationCondition,
300-
Status: metav1.ConditionUnknown,
301-
Reason: ReasonInProgress,
302-
Message: operationID,
305+
Type: CreateDatabaseOperationCondition,
306+
Status: metav1.ConditionUnknown,
307+
Reason: ReasonInProgress,
308+
ObservedGeneration: database.Generation,
309+
Message: operationID,
303310
})
304311
return r.updateStatus(ctx, database, DatabaseInitializationRequeueDelay)
305312
}

internal/controllers/database/sync.go

+29-23
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ func (r *Reconciler) Sync(ctx context.Context, ydbCr *v1alpha1.Database) (ctrl.R
4343
return result, err
4444
}
4545

46-
stop, result, err = r.syncNodeSetSpecInline(ctx, &database)
46+
stop, result, err = r.handleResourcesSync(ctx, &database)
4747
if stop {
4848
return result, err
4949
}
5050

51-
stop, result, err = r.handleResourcesSync(ctx, &database)
51+
stop, result, err = r.syncNodeSetSpecInline(ctx, &database)
5252
if stop {
5353
return result, err
5454
}
@@ -115,10 +115,11 @@ func (r *Reconciler) waitForClusterResources(ctx context.Context, database *reso
115115

116116
if database.Status.State == DatabasePending {
117117
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
118-
Type: DatabasePreparedCondition,
119-
Status: metav1.ConditionUnknown,
120-
Reason: ReasonInProgress,
121-
Message: "Waiting for sync resources",
118+
Type: DatabasePreparedCondition,
119+
Status: metav1.ConditionUnknown,
120+
Reason: ReasonInProgress,
121+
ObservedGeneration: database.Generation,
122+
Message: "Waiting for sync resources",
122123
})
123124
database.Status.State = DatabasePreparing
124125
return r.updateStatus(ctx, database, StatusUpdateRequeueDelay)
@@ -169,9 +170,10 @@ func (r *Reconciler) waitForClusterResources(ctx context.Context, database *reso
169170
),
170171
)
171172
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
172-
Type: DatabasePreparedCondition,
173-
Status: metav1.ConditionFalse,
174-
Reason: ReasonInProgress,
173+
Type: DatabasePreparedCondition,
174+
Status: metav1.ConditionFalse,
175+
Reason: ReasonInProgress,
176+
ObservedGeneration: database.Generation,
175177
Message: fmt.Sprintf(
176178
"Referenced storage cluster (%s, %s) is not initialized",
177179
database.Spec.StorageClusterRef.Name,
@@ -195,10 +197,11 @@ func (r *Reconciler) waitForNodeSetsToProvisioned(
195197

196198
if database.Status.State == DatabaseInitializing {
197199
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
198-
Type: DatabaseProvisionedCondition,
199-
Status: metav1.ConditionUnknown,
200-
Reason: ReasonInProgress,
201-
Message: "Waiting for NodeSets conditions to be Provisioned",
200+
Type: DatabaseProvisionedCondition,
201+
Status: metav1.ConditionUnknown,
202+
Reason: ReasonInProgress,
203+
ObservedGeneration: database.Generation,
204+
Message: "Waiting for NodeSet resources to be Provisioned",
202205
})
203206
database.Status.State = DatabaseProvisioning
204207
return r.updateStatus(ctx, database, StatusUpdateRequeueDelay)
@@ -294,10 +297,11 @@ func (r *Reconciler) waitForStatefulSetToScale(
294297

295298
if database.Status.State == DatabaseInitializing {
296299
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
297-
Type: DatabaseProvisionedCondition,
298-
Status: metav1.ConditionUnknown,
299-
Reason: ReasonInProgress,
300-
Message: fmt.Sprintf("Waiting for scale to desired nodes: %d", database.Spec.Nodes),
300+
Type: DatabaseProvisionedCondition,
301+
Status: metav1.ConditionUnknown,
302+
Reason: ReasonInProgress,
303+
ObservedGeneration: database.Generation,
304+
Message: fmt.Sprintf("Waiting for scale to desired number of nodes: %d", database.Spec.Nodes),
301305
})
302306
database.Status.State = DatabaseProvisioning
303307
return r.updateStatus(ctx, database, StatusUpdateRequeueDelay)
@@ -670,16 +674,18 @@ func (r *Reconciler) handlePauseResume(
670674
if database.Status.State == DatabaseProvisioning {
671675
if database.Spec.Pause {
672676
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
673-
Type: DatabasePausedCondition,
674-
Status: metav1.ConditionTrue,
675-
Reason: ReasonCompleted,
677+
Type: DatabasePausedCondition,
678+
Status: metav1.ConditionTrue,
679+
Reason: ReasonCompleted,
680+
ObservedGeneration: database.Generation,
676681
})
677682
database.Status.State = DatabasePaused
678683
} else {
679684
meta.SetStatusCondition(&database.Status.Conditions, metav1.Condition{
680-
Type: DatabaseReadyCondition,
681-
Status: metav1.ConditionTrue,
682-
Reason: ReasonCompleted,
685+
Type: DatabaseReadyCondition,
686+
Status: metav1.ConditionTrue,
687+
Reason: ReasonCompleted,
688+
ObservedGeneration: database.Generation,
683689
})
684690
database.Status.State = DatabaseReady
685691
}

internal/controllers/databasenodeset/sync.go

+20-16
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,11 @@ func (r *Reconciler) handleResourcesSync(
104104

105105
if databaseNodeSet.Status.State == DatabaseNodeSetPending {
106106
meta.SetStatusCondition(&databaseNodeSet.Status.Conditions, metav1.Condition{
107-
Type: NodeSetPreparedCondition,
108-
Status: metav1.ConditionUnknown,
109-
Reason: ReasonInProgress,
110-
Message: "Waiting for sync resources",
107+
Type: NodeSetPreparedCondition,
108+
Status: metav1.ConditionUnknown,
109+
Reason: ReasonInProgress,
110+
ObservedGeneration: databaseNodeSet.Generation,
111+
Message: "Waiting for sync resources",
111112
})
112113
databaseNodeSet.Status.State = DatabaseNodeSetPreparing
113114
return r.updateStatus(ctx, databaseNodeSet, StatusUpdateRequeueDelay)
@@ -197,10 +198,11 @@ func (r *Reconciler) waitForStatefulSetToScale(
197198

198199
if databaseNodeSet.Status.State == DatabaseNodeSetPreparing {
199200
meta.SetStatusCondition(&databaseNodeSet.Status.Conditions, metav1.Condition{
200-
Type: NodeSetProvisionedCondition,
201-
Status: metav1.ConditionUnknown,
202-
Reason: ReasonInProgress,
203-
Message: fmt.Sprintf("Waiting for scale to desired nodes: %d", databaseNodeSet.Spec.Nodes),
201+
Type: NodeSetProvisionedCondition,
202+
Status: metav1.ConditionUnknown,
203+
Reason: ReasonInProgress,
204+
ObservedGeneration: databaseNodeSet.Generation,
205+
Message: fmt.Sprintf("Waiting for scale to desired nodes: %d", databaseNodeSet.Spec.Nodes),
204206
})
205207
databaseNodeSet.Status.State = DatabaseNodeSetProvisioning
206208
return r.updateStatus(ctx, databaseNodeSet, StatusUpdateRequeueDelay)
@@ -330,8 +332,8 @@ func (r *Reconciler) updateStatus(
330332

331333
func shouldIgnoreDatabaseNodeSetChange(databaseNodeSet *resources.DatabaseNodeSetResource) resources.IgnoreChangesFunction {
332334
return func(oldObj, newObj runtime.Object) bool {
333-
if statefulSet, ok := oldObj.(*appsv1.StatefulSet); ok {
334-
if databaseNodeSet.Spec.Pause && *statefulSet.Spec.Replicas == 0 {
335+
if _, ok := newObj.(*appsv1.StatefulSet); ok {
336+
if databaseNodeSet.Spec.Pause && *oldObj.(*appsv1.StatefulSet).Spec.Replicas == 0 {
335337
return true
336338
}
337339
}
@@ -348,16 +350,18 @@ func (r *Reconciler) handlePauseResume(
348350
if databaseNodeSet.Status.State == DatabaseNodeSetProvisioning {
349351
if databaseNodeSet.Spec.Pause {
350352
meta.SetStatusCondition(&databaseNodeSet.Status.Conditions, metav1.Condition{
351-
Type: NodeSetPausedCondition,
352-
Status: metav1.ConditionTrue,
353-
Reason: ReasonCompleted,
353+
Type: NodeSetPausedCondition,
354+
Status: metav1.ConditionTrue,
355+
Reason: ReasonCompleted,
356+
ObservedGeneration: databaseNodeSet.Generation,
354357
})
355358
databaseNodeSet.Status.State = DatabaseNodeSetPaused
356359
} else {
357360
meta.SetStatusCondition(&databaseNodeSet.Status.Conditions, metav1.Condition{
358-
Type: NodeSetReadyCondition,
359-
Status: metav1.ConditionTrue,
360-
Reason: ReasonCompleted,
361+
Type: NodeSetReadyCondition,
362+
Status: metav1.ConditionTrue,
363+
Reason: ReasonCompleted,
364+
ObservedGeneration: databaseNodeSet.Generation,
361365
})
362366
databaseNodeSet.Status.State = DatabaseNodeSetReady
363367
}

internal/controllers/storage/init.go

+14-11
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ func (r *Reconciler) setInitPipelineStatus(
3434
) (bool, ctrl.Result, error) {
3535
if storage.Status.State == StoragePreparing {
3636
meta.SetStatusCondition(&storage.Status.Conditions, metav1.Condition{
37-
Type: StorageInitializedCondition,
38-
Status: metav1.ConditionUnknown,
39-
Reason: ReasonInProgress,
40-
Message: "Storage has not been initialized yet",
37+
Type: StorageInitializedCondition,
38+
Status: metav1.ConditionUnknown,
39+
Reason: ReasonInProgress,
40+
ObservedGeneration: storage.Generation,
41+
Message: "Storage has not been initialized yet",
4142
})
4243
storage.Status.State = StorageInitializing
4344
return r.updateStatus(ctx, storage, StatusUpdateRequeueDelay)
@@ -67,10 +68,11 @@ func (r *Reconciler) setInitStorageCompleted(
6768
message string,
6869
) (bool, ctrl.Result, error) {
6970
meta.SetStatusCondition(&storage.Status.Conditions, metav1.Condition{
70-
Type: StorageInitializedCondition,
71-
Status: metav1.ConditionTrue,
72-
Reason: ReasonCompleted,
73-
Message: message,
71+
Type: StorageInitializedCondition,
72+
Status: metav1.ConditionTrue,
73+
Reason: ReasonCompleted,
74+
ObservedGeneration: storage.Generation,
75+
Message: message,
7476
})
7577
return r.updateStatus(ctx, storage, StatusUpdateRequeueDelay)
7678
}
@@ -196,9 +198,10 @@ func (r *Reconciler) initializeBlobstorage(
196198
"Failed initBlobstorage Job, check Pod logs for addditional info",
197199
)
198200
meta.SetStatusCondition(&storage.Status.Conditions, metav1.Condition{
199-
Type: StorageInitializedCondition,
200-
Status: metav1.ConditionFalse,
201-
Reason: ReasonInProgress,
201+
Type: StorageInitializedCondition,
202+
Status: metav1.ConditionFalse,
203+
Reason: ReasonInProgress,
204+
ObservedGeneration: storage.Generation,
202205
})
203206
if err := r.Delete(ctx, initJob, client.PropagationPolicy(metav1.DeletePropagationForeground)); err != nil {
204207
r.Recorder.Event(

0 commit comments

Comments
 (0)