Skip to content

Commit 7747ab7

Browse files
committed
added ready conditions and updated conditions from creating to ready
Issue:[PGO-920]
1 parent d7a385a commit 7747ab7

File tree

2 files changed

+64
-20
lines changed

2 files changed

+64
-20
lines changed

internal/bridge/crunchybridgecluster/crunchybridgecluster_controller.go

Lines changed: 64 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -170,16 +170,16 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
170170
// Exit early if we can't create from this K8s object
171171
// unless this K8s object has been changed (compare ObservedGeneration)
172172
invalid := meta.FindStatusCondition(crunchybridgecluster.Status.Conditions,
173-
v1beta1.ConditionCreating)
173+
v1beta1.ConditionReady)
174174
if invalid != nil &&
175175
invalid.Status == metav1.ConditionFalse &&
176-
invalid.Message == "ClusterInvalid" &&
176+
invalid.Reason == "ClusterInvalid" &&
177177
invalid.ObservedGeneration == crunchybridgecluster.GetGeneration() {
178178
return ctrl.Result{}, nil
179179
}
180180

181181
// check for an upgrade error and return until observedGeneration has
182-
// been incremented by updating the CR with valid value(s).
182+
// been incremented.
183183
invalidUpgrade := meta.FindStatusCondition(crunchybridgecluster.Status.Conditions,
184184
v1beta1.ConditionUpgrading)
185185
if invalidUpgrade != nil &&
@@ -195,6 +195,13 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
195195
// Check if the cluster exists
196196
clusters, err := r.NewClient().ListClusters(ctx, key, team)
197197
if err != nil {
198+
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
199+
ObservedGeneration: crunchybridgecluster.GetGeneration(),
200+
Type: v1beta1.ConditionReady,
201+
Status: metav1.ConditionUnknown,
202+
Reason: "UnknownClusterState",
203+
Message: fmt.Sprintf("Issue listing existing clusters in Bridge %v", err),
204+
})
198205
log.Error(err, "issue listing existing clusters in Bridge")
199206
return ctrl.Result{}, err
200207
}
@@ -216,7 +223,7 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
216223
// Set invalid status condition and create log message.
217224
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
218225
ObservedGeneration: crunchybridgecluster.GetGeneration(),
219-
Type: v1beta1.ConditionCreating,
226+
Type: v1beta1.ConditionReady,
220227
Status: metav1.ConditionFalse,
221228
Reason: "ClusterInvalid",
222229
Message: fmt.Sprintf("A cluster with the same name already exists for this team (Team ID: %v). "+
@@ -254,11 +261,11 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
254261
// Otherwise want a different condition
255262
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
256263
ObservedGeneration: crunchybridgecluster.GetGeneration(),
257-
Type: v1beta1.ConditionCreating,
264+
Type: v1beta1.ConditionReady,
258265
Status: metav1.ConditionFalse,
259266
Reason: "ClusterInvalid",
260267
Message: fmt.Sprintf(
261-
"Cannot create from spec for some reason: %v", "TODO(crunchybridgecluster)"),
268+
"Cannot create from spec: %v", err),
262269
})
263270

264271
// TODO(crunchybridgecluster): If the payload is wrong, we don't want to requeue, so pass nil error
@@ -267,6 +274,14 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
267274
}
268275
crunchybridgecluster.Status.ID = cluster.ID
269276

277+
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
278+
ObservedGeneration: crunchybridgecluster.GetGeneration(),
279+
Type: v1beta1.ConditionReady,
280+
Status: metav1.ConditionUnknown,
281+
Reason: "ReadyConditionUnknown",
282+
Message: "The condition of the cluster is unknown.",
283+
})
284+
270285
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
271286
ObservedGeneration: crunchybridgecluster.GetGeneration(),
272287
Type: v1beta1.ConditionUpgrading,
@@ -284,6 +299,13 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
284299
// Get Cluster
285300
clusterDetails, err := r.NewClient().GetCluster(ctx, key, crunchybridgecluster.Status.ID)
286301
if err != nil {
302+
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
303+
ObservedGeneration: crunchybridgecluster.GetGeneration(),
304+
Type: v1beta1.ConditionReady,
305+
Status: metav1.ConditionUnknown,
306+
Reason: "UnknownClusterState",
307+
Message: fmt.Sprintf("Issue getting cluster information from Bridge: %v", err),
308+
})
287309
log.Error(err, "issue getting cluster information from Bridge")
288310
return ctrl.Result{}, err
289311
}
@@ -292,11 +314,34 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
292314
// Get Cluster Status
293315
clusterStatus, err := r.NewClient().GetClusterStatus(ctx, key, crunchybridgecluster.Status.ID)
294316
if err != nil {
317+
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
318+
ObservedGeneration: crunchybridgecluster.GetGeneration(),
319+
Type: v1beta1.ConditionReady,
320+
Status: metav1.ConditionUnknown,
321+
Reason: "UnknownClusterState",
322+
Message: fmt.Sprintf("Issue getting cluster status from Bridge: %v", err),
323+
})
295324
log.Error(err, "issue getting cluster status from Bridge")
296325
return ctrl.Result{}, err
297326
}
298327
clusterStatus.AddDataToClusterStatus(crunchybridgecluster)
299-
// TODO: Update the ConditionReady status here
328+
if clusterStatus.State == "ready" {
329+
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
330+
ObservedGeneration: crunchybridgecluster.GetGeneration(),
331+
Type: v1beta1.ConditionReady,
332+
Status: metav1.ConditionTrue,
333+
Reason: clusterStatus.State,
334+
Message: fmt.Sprintf("Bridge cluster state is %v.", clusterStatus.State),
335+
})
336+
} else {
337+
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
338+
ObservedGeneration: crunchybridgecluster.GetGeneration(),
339+
Type: v1beta1.ConditionReady,
340+
Status: metav1.ConditionFalse,
341+
Reason: clusterStatus.State,
342+
Message: fmt.Sprintf("Bridge cluster state is %v.", clusterStatus.State),
343+
})
344+
}
300345

301346
// Get Cluster Upgrade
302347
clusterUpgradeDetails, err := r.NewClient().GetClusterUpgrade(ctx, key, crunchybridgecluster.Status.ID)
@@ -379,24 +424,25 @@ func (r *CrunchyBridgeClusterReconciler) reconcileBridgeConnectionSecret(
379424
if err != nil {
380425
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
381426
ObservedGeneration: crunchybridgecluster.GetGeneration(),
382-
Type: v1beta1.ConditionCreating,
383-
Status: metav1.ConditionFalse,
427+
Type: v1beta1.ConditionReady,
428+
Status: metav1.ConditionUnknown,
384429
Reason: "SecretInvalid",
385430
Message: fmt.Sprintf(
386-
"Cannot create with bad secret: %v", "TODO(crunchybridgecluster)"),
431+
"The condition of the cluster is unknown because the secret is invalid: %v", err),
432+
})
433+
meta.SetStatusCondition(&crunchybridgecluster.Status.Conditions, metav1.Condition{
434+
Type: v1beta1.ConditionUpgrading,
435+
Status: metav1.ConditionUnknown,
436+
ObservedGeneration: crunchybridgecluster.GetGeneration(),
437+
LastTransitionTime: metav1.Time{},
438+
Reason: "SecretInvalid",
439+
Message: fmt.Sprintf(
440+
"The condition of the upgrade(s) is unknown because the secret is invalid: %v", err),
387441
})
388442

389443
return "", "", err
390444
}
391445

392-
// Remove SecretInvalid condition if found
393-
invalid := meta.FindStatusCondition(crunchybridgecluster.Status.Conditions,
394-
v1beta1.ConditionCreating)
395-
if invalid != nil && invalid.Status == metav1.ConditionFalse && invalid.Reason == "SecretInvalid" {
396-
meta.RemoveStatusCondition(&crunchybridgecluster.Status.Conditions,
397-
v1beta1.ConditionCreating)
398-
}
399-
400446
return key, team, err
401447
}
402448

pkg/apis/postgres-operator.crunchydata.com/v1beta1/crunchy_bridgecluster_types.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,6 @@ type UpgradeOperation struct {
183183
// CrunchyBridgeClusterStatus condition types.
184184
const (
185185
ConditionUnknown = ""
186-
ConditionPending = "Pending"
187-
ConditionCreating = "Creating"
188186
ConditionUpgrading = "Upgrading"
189187
ConditionReady = "Ready"
190188
ConditionDeleting = "Deleting"

0 commit comments

Comments
 (0)