@@ -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 })
0 commit comments