@@ -265,12 +265,13 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
265
265
return ctrl.Result {}, nil
266
266
}
267
267
268
- // Remove cluster invalid status if found
269
- if invalid != nil &&
270
- invalid .Status == metav1 .ConditionFalse &&
271
- invalid .Reason == "ClusterInvalid" {
272
- meta .RemoveStatusCondition (& crunchybridgecluster .Status .Conditions ,
273
- v1beta1 .ConditionCreating )
268
+ invalidUpgrade := meta .FindStatusCondition (crunchybridgecluster .Status .Conditions ,
269
+ v1beta1 .ConditionUpgrading )
270
+ if invalidUpgrade != nil &&
271
+ invalidUpgrade .Status == metav1 .ConditionFalse &&
272
+ invalidUpgrade .Reason == "UpgradeError" &&
273
+ invalidUpgrade .ObservedGeneration == crunchybridgecluster .GetGeneration () {
274
+ return ctrl.Result {}, nil
274
275
}
275
276
276
277
// We should only be missing the ID if no create has been issued
@@ -355,9 +356,8 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
355
356
ObservedGeneration : crunchybridgecluster .GetGeneration (),
356
357
Type : v1beta1 .ConditionUpgrading ,
357
358
Status : metav1 .ConditionUnknown ,
358
- Reason : "NoUpgradesInProgress" ,
359
- Message : fmt .Sprintf (
360
- "No upgrades in progress for Crunchy Bridge Cluster %v" , crunchybridgecluster .Name ),
359
+ Reason : "UpgradeConditionUnknown" ,
360
+ Message : "The condition of the upgrade(s) is unknown." ,
361
361
})
362
362
return ctrl.Result {RequeueAfter : 3 * time .Minute }, nil
363
363
}
@@ -390,7 +390,25 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
390
390
return ctrl.Result {}, err
391
391
}
392
392
clusterUpgradeDetails .AddDataToClusterStatus (crunchybridgecluster )
393
- // TODO: Update the ConditionUpdating status here
393
+ if len (clusterUpgradeDetails .Operations ) != 0 {
394
+ meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
395
+ ObservedGeneration : crunchybridgecluster .GetGeneration (),
396
+ Type : v1beta1 .ConditionUpgrading ,
397
+ Status : metav1 .ConditionTrue ,
398
+ Reason : clusterUpgradeDetails .Operations [0 ].Flavor ,
399
+ Message : fmt .Sprintf (
400
+ "Performing an upgrade of type %v with a state of %v." ,
401
+ clusterUpgradeDetails .Operations [0 ].Flavor , clusterUpgradeDetails .Operations [0 ].State ),
402
+ })
403
+ } else {
404
+ meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
405
+ ObservedGeneration : crunchybridgecluster .GetGeneration (),
406
+ Type : v1beta1 .ConditionUpgrading ,
407
+ Status : metav1 .ConditionFalse ,
408
+ Reason : "NoUpgradesInProgress" ,
409
+ Message : "No upgrades being performed" ,
410
+ })
411
+ }
394
412
395
413
// Reconcile roles and their secrets
396
414
err = r .reconcilePostgresRoles (ctx , key , crunchybridgecluster )
@@ -409,17 +427,6 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
409
427
// TODO(crunchybridgecluster): Do we want the operator to interrupt
410
428
// upgrades created through the GUI/API?
411
429
if len (crunchybridgecluster .Status .OngoingUpgrade ) != 0 {
412
- for _ , operation := range clusterUpgradeDetails .Operations {
413
- meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
414
- ObservedGeneration : crunchybridgecluster .GetGeneration (),
415
- Type : v1beta1 .ConditionUpgrading ,
416
- Status : metav1 .ConditionTrue ,
417
- Reason : operation .Flavor ,
418
- Message : fmt .Sprintf (
419
- "Performing an upgrade of type %v with a state of %v on Crunchy Bridge Cluster %v" ,
420
- operation .Flavor , operation .State , crunchybridgecluster .Name ),
421
- })
422
- }
423
430
return ctrl.Result {RequeueAfter : 3 * time .Minute }, nil
424
431
}
425
432
@@ -438,14 +445,6 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
438
445
if crunchybridgecluster .Spec .IsHA != * crunchybridgecluster .Status .IsHA {
439
446
return r .handleUpgradeHA (ctx , key , crunchybridgecluster )
440
447
}
441
- meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
442
- ObservedGeneration : crunchybridgecluster .GetGeneration (),
443
- Type : v1beta1 .ConditionUpgrading ,
444
- Status : metav1 .ConditionUnknown ,
445
- Reason : "NoUpgradesInProgress" ,
446
- Message : fmt .Sprintf (
447
- "No upgrades in progress for Crunchy Bridge Cluster %v" , crunchybridgecluster .Name ),
448
- })
449
448
450
449
// Check if there's a difference in is_protected, name, maintenance_window_start, etc.
451
450
// see https://docs.crunchybridge.com/api/cluster#update-cluster
@@ -513,23 +512,22 @@ func (r *CrunchyBridgeClusterReconciler) handleUpgrade(ctx context.Context,
513
512
Status : metav1 .ConditionFalse ,
514
513
Reason : "UpgradeError" ,
515
514
Message : fmt .Sprintf (
516
- "Error performing an upgrade, please check your spec for errors or invalid values" +
517
- "for cluster %v" , crunchybridgecluster .Name ),
515
+ "Error performing an upgrade: %s" , err ),
518
516
})
519
517
log .Error (err , "Error while attempting cluster upgrade" )
520
518
return ctrl.Result {}, nil
521
519
}
522
520
clusterUpgrade .AddDataToClusterStatus (crunchybridgecluster )
523
521
524
- for _ , operation := range clusterUpgrade .Operations {
522
+ if len ( clusterUpgrade .Operations ) != 0 {
525
523
meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
526
524
ObservedGeneration : crunchybridgecluster .GetGeneration (),
527
525
Type : v1beta1 .ConditionUpgrading ,
528
526
Status : metav1 .ConditionTrue ,
529
- Reason : operation .Flavor ,
527
+ Reason : clusterUpgrade . Operations [ 0 ] .Flavor ,
530
528
Message : fmt .Sprintf (
531
- "Performing an upgrade of type %v with a state of %v on Crunchy Bridge Cluster %v " ,
532
- operation . Flavor , operation . State , crunchybridgecluster . Name ),
529
+ "Performing an upgrade of type %v with a state of %v. " ,
530
+ clusterUpgrade . Operations [ 0 ]. Flavor , clusterUpgrade . Operations [ 0 ]. State ),
533
531
})
534
532
}
535
533
return ctrl.Result {RequeueAfter : 3 * time .Minute }, nil
@@ -559,24 +557,25 @@ func (r *CrunchyBridgeClusterReconciler) handleUpgradeHA(ctx context.Context,
559
557
ObservedGeneration : crunchybridgecluster .GetGeneration (),
560
558
Type : v1beta1 .ConditionUpgrading ,
561
559
Status : metav1 .ConditionFalse ,
562
- Reason : "HAUpgradeError " ,
560
+ Reason : "UpgradeError " ,
563
561
Message : fmt .Sprintf (
564
- "Error performing an HA upgrade, please check your spec for errors or invalid values" +
565
- "for cluster %v" , crunchybridgecluster .Name ),
562
+ "Error performing an HA upgrade %v:" , err ),
566
563
})
567
564
log .Error (err , "Error while attempting cluster HA change" )
568
565
return ctrl.Result {}, nil
569
566
}
570
567
clusterUpgrade .AddDataToClusterStatus (crunchybridgecluster )
571
-
572
- meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
573
- ObservedGeneration : crunchybridgecluster .GetGeneration (),
574
- Type : v1beta1 .ConditionUpgrading ,
575
- Status : metav1 .ConditionTrue ,
576
- Reason : "UpgradeInProgress" ,
577
- Message : fmt .Sprintf (
578
- "HA upgrade in progress to %v on the Crunchy Bridge Cluster %v" , action , crunchybridgecluster .Name ),
579
- })
568
+ if len (clusterUpgrade .Operations ) != 0 {
569
+ meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
570
+ ObservedGeneration : crunchybridgecluster .GetGeneration (),
571
+ Type : v1beta1 .ConditionUpgrading ,
572
+ Status : metav1 .ConditionTrue ,
573
+ Reason : clusterUpgrade .Operations [0 ].Flavor ,
574
+ Message : fmt .Sprintf (
575
+ "Perfoming an upgrade of type %v with a state of %v:" ,
576
+ clusterUpgrade .Operations [0 ].Flavor , clusterUpgrade .Operations [0 ].State ),
577
+ })
578
+ }
580
579
return ctrl.Result {RequeueAfter : 3 * time .Minute }, nil
581
580
}
582
581
0 commit comments