@@ -84,15 +84,23 @@ func (r *PipelineReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
84
84
return r .reconcileDelete (scope )
85
85
}
86
86
87
+ if ! controllerutil .ContainsFinalizer (pipeline , captainv1 .PipelineFinalizer ) {
88
+ log .Info ("adding Finalizer for pipeline" )
89
+ if ok := controllerutil .AddFinalizer (pipeline , captainv1 .PipelineFinalizer ); ! ok {
90
+ log .Error (nil , "failed to add finalizer to pipeline, requeing" )
91
+ return ctrl.Result {Requeue : true }, nil
92
+ }
93
+
94
+ // add finalizer and update
95
+ // the update will trigger a new reconciliation
96
+ return ctrl.Result {}, r .Update (ctx , pipeline )
97
+ }
87
98
// handle pipeline reconcile
88
99
return r .reconcileNormal (scope )
89
100
}
90
101
91
102
// reconcileNormal handles normal reconciles
92
103
func (r * PipelineReconciler ) reconcileNormal (scope * PipelineScope ) (ctrl.Result , error ) {
93
- // add finalizer to the Pipeline
94
- controllerutil .AddFinalizer (scope .Pipeline , captainv1 .PipelineFinalizer )
95
-
96
104
// check if the Pipeline has already created a deployment
97
105
_ , err := r .createOrUpdatePipeline (scope )
98
106
if err != nil {
@@ -105,8 +113,9 @@ func (r *PipelineReconciler) reconcileNormal(scope *PipelineScope) (ctrl.Result,
105
113
// reconcileNormal handles a deletion during the reconcile
106
114
func (r * PipelineReconciler ) reconcileDelete (scope * PipelineScope ) (ctrl.Result , error ) {
107
115
// remove finalizer to allow the resource to be deleted
108
- controllerutil .RemoveFinalizer (scope .Pipeline , captainv1 .PipelineFinalizer )
109
-
116
+ if controllerutil .RemoveFinalizer (scope .Pipeline , captainv1 .PipelineFinalizer ) {
117
+ return reconcile.Result {}, r .Update (scope .Ctx , scope .Pipeline )
118
+ }
110
119
return reconcile.Result {}, nil
111
120
}
112
121
0 commit comments