@@ -198,38 +198,39 @@ const environmentFinalizer = "aliecs.alice.cern/environment-finalizer"
198198// - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.23.1/pkg/reconcile
199199func (r * EnvironmentReconciler ) handleFinalizer (ctx context.Context , environment * aliecsv1alpha1.Environment , log logr.Logger ) (ctrl.Result , bool , error ) {
200200 if environment .DeletionTimestamp .IsZero () {
201- if ! controllerutil .ContainsFinalizer (environment , environmentFinalizer ) {
202- controllerutil .AddFinalizer (environment , environmentFinalizer )
203- if err := r .Update (ctx , environment ); err != nil {
204- return ctrl.Result {}, true , err
205- }
206- return ctrl.Result {}, true , nil
207- }
208- } else {
209201 if controllerutil .ContainsFinalizer (environment , environmentFinalizer ) {
210- tasks := & aliecsv1alpha1.TaskList {}
211- if err := r .List (ctx , tasks , client .InNamespace (environment .Namespace ), client.MatchingLabels {"environment" : environment .Name }); err != nil {
212- return ctrl.Result {}, true , err
213- }
214- if len (tasks .Items ) > 0 {
215- for i := range tasks .Items {
216- if tasks .Items [i ].DeletionTimestamp .IsZero () {
217- if err := r .Delete (ctx , & tasks .Items [i ]); err != nil && ! k8serrors .IsNotFound (err ) {
218- return ctrl.Result {}, true , err
219- }
220- }
221- }
222- log .Info ("waiting for tasks to be deleted before removing environment" , "remaining" , len (tasks .Items ))
223- return ctrl.Result {}, true , nil
202+ // finalizer already in place, nothing to do: continue reconciliation
203+ return ctrl.Result {}, false , nil
204+ }
205+ controllerutil .AddFinalizer (environment , environmentFinalizer )
206+ return ctrl.Result {}, true , r .Update (ctx , environment )
207+ }
208+
209+ // environment is being deleted
210+ if ! controllerutil .ContainsFinalizer (environment , environmentFinalizer ) {
211+ return ctrl.Result {}, true , nil
212+ }
213+
214+ tasks := & aliecsv1alpha1.TaskList {}
215+ if err := r .List (ctx , tasks , client .InNamespace (environment .Namespace ), client.MatchingLabels {"environment" : environment .Name }); err != nil {
216+ return ctrl.Result {}, true , err
217+ }
218+
219+ if len (tasks .Items ) > 0 {
220+ for i := range tasks .Items {
221+ if ! tasks .Items [i ].DeletionTimestamp .IsZero () {
222+ continue
224223 }
225- controllerutil .RemoveFinalizer (environment , environmentFinalizer )
226- if err := r .Update (ctx , environment ); err != nil {
224+ if err := r .Delete (ctx , & tasks .Items [i ]); err != nil && ! k8serrors .IsNotFound (err ) {
227225 return ctrl.Result {}, true , err
228226 }
229227 }
228+ log .Info ("waiting for tasks to be deleted before removing environment" , "remaining" , len (tasks .Items ))
230229 return ctrl.Result {}, true , nil
231230 }
232- return ctrl.Result {}, false , nil
231+
232+ controllerutil .RemoveFinalizer (environment , environmentFinalizer )
233+ return ctrl.Result {}, true , r .Update (ctx , environment )
233234}
234235
235236func (r * EnvironmentReconciler ) Reconcile (ctx context.Context , req ctrl.Request ) (ctrl.Result , error ) {
0 commit comments