Skip to content

Commit 6a82e7e

Browse files
author
Per Goncalves da Silva
committed
Set Progressing to False:Archived when revision is archived
Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
1 parent 53de030 commit 6a82e7e

File tree

2 files changed

+41
-12
lines changed

2 files changed

+41
-12
lines changed

internal/operator-controller/controllers/clusterextensionrevision_controller.go

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -339,17 +339,32 @@ func (c *ClusterExtensionRevisionReconciler) teardown(ctx context.Context, rev *
339339
return ctrl.Result{}, fmt.Errorf("error stopping informers: %v", err)
340340
}
341341

342-
// Ensure Available condition is set to Unknown before removing the finalizer when archiving
343-
if rev.Spec.LifecycleState == ocv1.ClusterExtensionRevisionLifecycleStateArchived &&
344-
!meta.IsStatusConditionPresentAndEqual(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable, metav1.ConditionUnknown) {
345-
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
346-
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
347-
Status: metav1.ConditionUnknown,
348-
Reason: ocv1.ClusterExtensionRevisionReasonArchived,
349-
Message: "revision is archived",
350-
ObservedGeneration: rev.Generation,
351-
})
352-
return ctrl.Result{}, nil
342+
// Ensure conditions are set before removing the finalizer when archiving
343+
if rev.Spec.LifecycleState == ocv1.ClusterExtensionRevisionLifecycleStateArchived {
344+
condUpdated := false
345+
if cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable); cnd == nil || cnd.Reason != ocv1.ClusterExtensionRevisionReasonArchived || cnd.Status != metav1.ConditionUnknown {
346+
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
347+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
348+
Status: metav1.ConditionUnknown,
349+
Reason: ocv1.ClusterExtensionRevisionReasonArchived,
350+
Message: "revision is archived",
351+
ObservedGeneration: rev.Generation,
352+
})
353+
condUpdated = true
354+
}
355+
if cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing); cnd == nil || cnd.Reason != ocv1.ClusterExtensionRevisionReasonArchived || cnd.Status != metav1.ConditionFalse {
356+
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
357+
Type: ocv1.ClusterExtensionRevisionTypeProgressing,
358+
Status: metav1.ConditionFalse,
359+
Reason: ocv1.ClusterExtensionRevisionReasonArchived,
360+
Message: "revision is archived",
361+
ObservedGeneration: rev.Generation,
362+
})
363+
condUpdated = true
364+
}
365+
if condUpdated {
366+
return ctrl.Result{}, nil
367+
}
353368
}
354369

355370
if err := c.removeFinalizer(ctx, rev, clusterExtensionRevisionTeardownFinalizer); err != nil {

internal/operator-controller/controllers/clusterextensionrevision_controller_test.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
673673
},
674674
},
675675
{
676-
name: "set Available condition to Unknown with reason Archived when archiving revision",
676+
name: "set Available:Archived:Unknown and Progressing:False:Unknown conditions when a revision is archived",
677677
revisionResult: mockRevisionResult{},
678678
existingObjs: func() []client.Object {
679679
ext := newTestClusterExtension()
@@ -704,6 +704,13 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
704704
require.Equal(t, ocv1.ClusterExtensionRevisionReasonArchived, cond.Reason)
705705
require.Equal(t, "revision is archived", cond.Message)
706706
require.Equal(t, int64(1), cond.ObservedGeneration)
707+
708+
cond = meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeProgressing)
709+
require.NotNil(t, cond)
710+
require.Equal(t, metav1.ConditionFalse, cond.Status)
711+
require.Equal(t, ocv1.ClusterExtensionRevisionReasonArchived, cond.Reason)
712+
require.Equal(t, "revision is archived", cond.Message)
713+
require.Equal(t, int64(1), cond.ObservedGeneration)
707714
},
708715
},
709716
{
@@ -723,6 +730,13 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
723730
Message: "revision is archived",
724731
ObservedGeneration: rev1.Generation,
725732
})
733+
meta.SetStatusCondition(&rev1.Status.Conditions, metav1.Condition{
734+
Type: ocv1.ClusterExtensionRevisionTypeProgressing,
735+
Status: metav1.ConditionFalse,
736+
Reason: ocv1.ClusterExtensionRevisionReasonArchived,
737+
Message: "revision is archived",
738+
ObservedGeneration: rev1.Generation,
739+
})
726740
require.NoError(t, controllerutil.SetControllerReference(ext, rev1, testScheme))
727741
return []client.Object{rev1, ext}
728742
},

0 commit comments

Comments
 (0)