@@ -110,7 +110,9 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
110
110
Reason : types .ReasonUninstallError ,
111
111
Message : err .Error (),
112
112
})
113
- _ = r .updateResourceStatus (o , status )
113
+ if err := r .updateResourceStatus (ctx , o , status ); err != nil {
114
+ log .Error (err , "Failed to update status after uninstall release failure" )
115
+ }
114
116
return reconcile.Result {}, err
115
117
}
116
118
status .RemoveCondition (types .ConditionReleaseFailed )
@@ -129,13 +131,13 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
129
131
})
130
132
status .DeployedRelease = nil
131
133
}
132
- if err := r .updateResourceStatus (o , status ); err != nil {
134
+ if err := r .updateResourceStatus (ctx , o , status ); err != nil {
133
135
log .Info ("Failed to update CR status" )
134
136
return reconcile.Result {}, err
135
137
}
136
138
137
139
controllerutil .RemoveFinalizer (o , finalizer )
138
- if err := r .updateResource (o ); err != nil {
140
+ if err := r .updateResource (ctx , o ); err != nil {
139
141
log .Info ("Failed to remove CR uninstall finalizer" )
140
142
return reconcile.Result {}, err
141
143
}
@@ -144,7 +146,7 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
144
146
// deletion here will guarantee that the next reconciliation
145
147
// will see that the CR has been deleted and that there's
146
148
// nothing left to do.
147
- if err := r .waitForDeletion (o ); err != nil {
149
+ if err := r .waitForDeletion (ctx , o ); err != nil {
148
150
log .Info ("Failed waiting for CR deletion" )
149
151
return reconcile.Result {}, err
150
152
}
@@ -165,7 +167,9 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
165
167
Reason : types .ReasonReconcileError ,
166
168
Message : err .Error (),
167
169
})
168
- _ = r .updateResourceStatus (o , status )
170
+ if err := r .updateResourceStatus (ctx , o , status ); err != nil {
171
+ log .Error (err , "Failed to update status after sync release failure" )
172
+ }
169
173
return reconcile.Result {}, err
170
174
}
171
175
status .RemoveCondition (types .ConditionIrreconcilable )
@@ -184,14 +188,16 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
184
188
Reason : types .ReasonInstallError ,
185
189
Message : err .Error (),
186
190
})
187
- _ = r .updateResourceStatus (o , status )
191
+ if err := r .updateResourceStatus (ctx , o , status ); err != nil {
192
+ log .Error (err , "Failed to update status after insatll release failure" )
193
+ }
188
194
return reconcile.Result {}, err
189
195
}
190
196
status .RemoveCondition (types .ConditionReleaseFailed )
191
197
192
198
log .V (1 ).Info ("Adding finalizer" , "finalizer" , finalizer )
193
199
controllerutil .AddFinalizer (o , finalizer )
194
- if err := r .updateResource (o ); err != nil {
200
+ if err := r .updateResource (ctx , o ); err != nil {
195
201
log .Info ("Failed to add CR uninstall finalizer" )
196
202
return reconcile.Result {}, err
197
203
}
@@ -222,14 +228,14 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
222
228
Name : installedRelease .Name ,
223
229
Manifest : installedRelease .Manifest ,
224
230
}
225
- err = r .updateResourceStatus (o , status )
231
+ err = r .updateResourceStatus (ctx , o , status )
226
232
return reconcile.Result {RequeueAfter : r .ReconcilePeriod }, err
227
233
}
228
234
229
235
if ! contains (o .GetFinalizers (), finalizer ) {
230
236
log .V (1 ).Info ("Adding finalizer" , "finalizer" , finalizer )
231
237
controllerutil .AddFinalizer (o , finalizer )
232
- if err := r .updateResource (o ); err != nil {
238
+ if err := r .updateResource (ctx , o ); err != nil {
233
239
log .Info ("Failed to add CR uninstall finalizer" )
234
240
return reconcile.Result {}, err
235
241
}
@@ -250,7 +256,9 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
250
256
Reason : types .ReasonUpgradeError ,
251
257
Message : err .Error (),
252
258
})
253
- _ = r .updateResourceStatus (o , status )
259
+ if err := r .updateResourceStatus (ctx , o , status ); err != nil {
260
+ log .Error (err , "Failed to update status after sync release failure" )
261
+ }
254
262
return reconcile.Result {}, err
255
263
}
256
264
status .RemoveCondition (types .ConditionReleaseFailed )
@@ -281,7 +289,7 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
281
289
Name : upgradedRelease .Name ,
282
290
Manifest : upgradedRelease .Manifest ,
283
291
}
284
- err = r .updateResourceStatus (o , status )
292
+ err = r .updateResourceStatus (ctx , o , status )
285
293
return reconcile.Result {RequeueAfter : r .ReconcilePeriod }, err
286
294
}
287
295
@@ -302,7 +310,9 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
302
310
Reason : types .ReasonReconcileError ,
303
311
Message : err .Error (),
304
312
})
305
- _ = r .updateResourceStatus (o , status )
313
+ if err := r .updateResourceStatus (ctx , o , status ); err != nil {
314
+ log .Error (err , "Failed to update status after reconcile release failure" )
315
+ }
306
316
return reconcile.Result {}, err
307
317
}
308
318
status .RemoveCondition (types .ConditionIrreconcilable )
@@ -333,7 +343,7 @@ func (r HelmOperatorReconciler) Reconcile(ctx context.Context, request reconcile
333
343
Name : expectedRelease .Name ,
334
344
Manifest : expectedRelease .Manifest ,
335
345
}
336
- err = r .updateResourceStatus (o , status )
346
+ err = r .updateResourceStatus (ctx , o , status )
337
347
return reconcile.Result {RequeueAfter : r .ReconcilePeriod }, err
338
348
}
339
349
@@ -355,34 +365,34 @@ func hasHelmUpgradeForceAnnotation(o *unstructured.Unstructured) bool {
355
365
return value
356
366
}
357
367
358
- func (r HelmOperatorReconciler ) updateResource (o client.Object ) error {
368
+ func (r HelmOperatorReconciler ) updateResource (ctx context. Context , o client.Object ) error {
359
369
return retry .RetryOnConflict (retry .DefaultBackoff , func () error {
360
- return r .Client .Update (context . TODO () , o )
370
+ return r .Client .Update (ctx , o )
361
371
})
362
372
}
363
373
364
- func (r HelmOperatorReconciler ) updateResourceStatus (o * unstructured.Unstructured , status * types.HelmAppStatus ) error {
374
+ func (r HelmOperatorReconciler ) updateResourceStatus (ctx context. Context , o * unstructured.Unstructured , status * types.HelmAppStatus ) error {
365
375
return retry .RetryOnConflict (retry .DefaultBackoff , func () error {
366
376
o .Object ["status" ] = status
367
- return r .Client .Status ().Update (context . TODO () , o )
377
+ return r .Client .Status ().Update (ctx , o )
368
378
})
369
379
}
370
380
371
- func (r HelmOperatorReconciler ) waitForDeletion (o client.Object ) error {
381
+ func (r HelmOperatorReconciler ) waitForDeletion (ctx context. Context , o client.Object ) error {
372
382
key := client .ObjectKeyFromObject (o )
373
383
374
- ctx , cancel := context .WithTimeout (context . Background () , time .Second * 5 )
384
+ tctx , cancel := context .WithTimeout (ctx , time .Second * 5 )
375
385
defer cancel ()
376
386
return wait .PollImmediateUntil (time .Millisecond * 10 , func () (bool , error ) {
377
- err := r .Client .Get (ctx , key , o )
387
+ err := r .Client .Get (tctx , key , o )
378
388
if apierrors .IsNotFound (err ) {
379
389
return true , nil
380
390
}
381
391
if err != nil {
382
392
return false , err
383
393
}
384
394
return false , nil
385
- }, ctx .Done ())
395
+ }, tctx .Done ())
386
396
}
387
397
388
398
func contains (l []string , s string ) bool {
0 commit comments