Skip to content

Commit c32e56c

Browse files
author
Per Goncalves da Silva
committed
Set Available condition to Unknown on archived revisions
Signed-off-by: Per Goncalves da Silva <[email protected]>
1 parent e781e2d commit c32e56c

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

internal/operator-controller/controllers/clusterextensionrevision_controller.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
118118

119119
revision, opts, previous := toBoxcutterRevision(rev)
120120

121+
// nolint:nestif
121122
if !rev.DeletionTimestamp.IsZero() ||
122123
rev.Spec.LifecycleState == ocv1.ClusterExtensionRevisionLifecycleStateArchived {
123124
//
@@ -153,11 +154,25 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
153154
})
154155
return ctrl.Result{}, fmt.Errorf("error stopping informers: %v", err)
155156
}
157+
158+
// Ensure Available condition is set to Unknown before removing the finalizer when archiving
159+
if rev.Spec.LifecycleState == ocv1.ClusterExtensionRevisionLifecycleStateArchived &&
160+
!meta.IsStatusConditionPresentAndEqual(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable, metav1.ConditionUnknown) {
161+
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
162+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
163+
Status: metav1.ConditionUnknown,
164+
Reason: ocv1.ClusterExtensionRevisionReasonArchived,
165+
Message: "revision is archived",
166+
ObservedGeneration: rev.Generation,
167+
})
168+
return ctrl.Result{}, nil
169+
}
170+
156171
if err := c.removeFinalizer(ctx, rev, clusterExtensionRevisionTeardownFinalizer); err != nil {
157172
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
158-
Type: "Available",
173+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
159174
Status: metav1.ConditionFalse,
160-
Reason: "ReconcileFailure",
175+
Reason: ocv1.ClusterExtensionRevisionReasonReconcileFailure,
161176
Message: err.Error(),
162177
ObservedGeneration: rev.Generation,
163178
})

internal/operator-controller/controllers/clusterextensionrevision_controller_test.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
545545
},
546546
},
547547
{
548-
name: "revision is torn down when in archived state and finalizer is removed",
548+
name: "finalizer is removed and Available conditions is set to Unknown with reason archived when teardown is finished",
549549
revisionResult: mockRevisionResult{},
550550
existingObjs: func() []client.Object {
551551
ext := newTestClusterExtension()
@@ -571,6 +571,13 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
571571
}, rev)
572572
require.NoError(t, err)
573573
require.NotContains(t, "olm.operatorframework.io/teardown", rev.Finalizers)
574+
575+
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
576+
require.NotNil(t, cond)
577+
require.Equal(t, metav1.ConditionUnknown, cond.Status)
578+
require.Equal(t, ocv1.ClusterExtensionRevisionReasonArchived, cond.Reason)
579+
require.Equal(t, "revision is archived", cond.Message)
580+
require.Equal(t, int64(1), cond.ObservedGeneration)
574581
},
575582
},
576583
{

0 commit comments

Comments
 (0)