@@ -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)
172172invalid := meta .FindStatusCondition (crunchybridgecluster .Status .Conditions ,
173- v1beta1 .ConditionCreating )
173+ v1beta1 .ConditionReady )
174174if invalid != nil &&
175175invalid .Status == metav1 .ConditionFalse &&
176- invalid .Message == "ClusterInvalid" &&
176+ invalid .Reason == "ClusterInvalid" &&
177177invalid .ObservedGeneration == crunchybridgecluster .GetGeneration () {
178178return 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.
183183invalidUpgrade := meta .FindStatusCondition (crunchybridgecluster .Status .Conditions ,
184184v1beta1 .ConditionUpgrading )
185185if invalidUpgrade != nil &&
@@ -195,6 +195,13 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
195195// Check if the cluster exists
196196clusters , err := r .NewClient ().ListClusters (ctx , key , team )
197197if 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+ })
198205log .Error (err , "issue listing existing clusters in Bridge" )
199206return 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.
217224meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
218225ObservedGeneration : crunchybridgecluster .GetGeneration (),
219- Type : v1beta1 .ConditionCreating ,
226+ Type : v1beta1 .ConditionReady ,
220227Status : metav1 .ConditionFalse ,
221228Reason : "ClusterInvalid" ,
222229Message : 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
255262meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
256263ObservedGeneration : crunchybridgecluster .GetGeneration (),
257- Type : v1beta1 .ConditionCreating ,
264+ Type : v1beta1 .ConditionReady ,
258265Status : metav1 .ConditionFalse ,
259266Reason : "ClusterInvalid" ,
260267Message : 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}
268275crunchybridgecluster .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+
270285meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
271286ObservedGeneration : crunchybridgecluster .GetGeneration (),
272287Type : v1beta1 .ConditionUpgrading ,
@@ -284,6 +299,13 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
284299// Get Cluster
285300clusterDetails , err := r .NewClient ().GetCluster (ctx , key , crunchybridgecluster .Status .ID )
286301if 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+ })
287309log .Error (err , "issue getting cluster information from Bridge" )
288310return ctrl.Result {}, err
289311}
@@ -292,11 +314,34 @@ func (r *CrunchyBridgeClusterReconciler) Reconcile(ctx context.Context, req ctrl
292314// Get Cluster Status
293315clusterStatus , err := r .NewClient ().GetClusterStatus (ctx , key , crunchybridgecluster .Status .ID )
294316if 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+ })
295324log .Error (err , "issue getting cluster status from Bridge" )
296325return ctrl.Result {}, err
297326}
298327clusterStatus .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
302347clusterUpgradeDetails , err := r .NewClient ().GetClusterUpgrade (ctx , key , crunchybridgecluster .Status .ID )
@@ -379,24 +424,25 @@ func (r *CrunchyBridgeClusterReconciler) reconcileBridgeConnectionSecret(
379424if err != nil {
380425meta .SetStatusCondition (& crunchybridgecluster .Status .Conditions , metav1.Condition {
381426ObservedGeneration : crunchybridgecluster .GetGeneration (),
382- Type : v1beta1 .ConditionCreating ,
383- Status : metav1 .ConditionFalse ,
427+ Type : v1beta1 .ConditionReady ,
428+ Status : metav1 .ConditionUnknown ,
384429Reason : "SecretInvalid" ,
385430Message : 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
389443return "" , "" , 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-
400446return key , team , err
401447}
402448
0 commit comments