@@ -64,13 +64,6 @@ type AnsibleOperatorReconciler struct {
64
64
func (r * AnsibleOperatorReconciler ) Reconcile (request reconcile.Request ) (reconcile.Result , error ) {
65
65
u := & unstructured.Unstructured {}
66
66
u .SetGroupVersionKind (r .GVK )
67
- err := r .Client .Get (context .TODO (), request .NamespacedName , u )
68
- if apierrors .IsNotFound (err ) {
69
- return reconcile.Result {}, nil
70
- }
71
- if err != nil {
72
- return reconcile.Result {}, err
73
- }
74
67
75
68
ident := strconv .Itoa (rand .Int ())
76
69
logger := logf .Log .WithName ("reconciler" ).WithValues (
@@ -79,6 +72,20 @@ func (r *AnsibleOperatorReconciler) Reconcile(request reconcile.Request) (reconc
79
72
"namespace" , u .GetNamespace (),
80
73
)
81
74
75
+ err := r .Client .Get (context .TODO (), request .NamespacedName , u )
76
+ if err != nil {
77
+ if apierrors .IsNotFound (err ) {
78
+ // Request object not found, could have been deleted after reconcile request.
79
+ // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers.
80
+ // Return and don't requeue
81
+ logger .Info ("Resource not found, assuming it was deleted" , "namespace" , request .NamespacedName , "resource" , u )
82
+ return reconcile.Result {}, nil
83
+ }
84
+ // Error reading the object - requeue the request.
85
+ logger .Error (err , "Failed to get Resource." )
86
+ return reconcile.Result {}, err
87
+ }
88
+
82
89
reconcileResult := reconcile.Result {RequeueAfter : r .ReconcilePeriod }
83
90
if ds , ok := u .GetAnnotations ()[ReconcilePeriodAnnotation ]; ok {
84
91
duration , err := time .ParseDuration (ds )
@@ -190,10 +197,16 @@ func (r *AnsibleOperatorReconciler) Reconcile(request reconcile.Request) (reconc
190
197
// Need to get the unstructured object after ansible
191
198
// this needs to hit the API
192
199
err = r .Client .Get (context .TODO (), request .NamespacedName , u )
193
- if apierrors .IsNotFound (err ) {
194
- return reconcile.Result {}, nil
195
- }
196
200
if err != nil {
201
+ if apierrors .IsNotFound (err ) {
202
+ // Request object not found, could have been deleted after reconcile request.
203
+ // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers.
204
+ // Return and don't requeue
205
+ logger .Info ("Resource not found, assuming it was deleted" , "namespace" , request .NamespacedName , "resource" , u )
206
+ return reconcile.Result {}, nil
207
+ }
208
+ // Error reading the object - requeue the request.
209
+ logger .Error (err , "Failed to get Resource." )
197
210
return reconcile.Result {}, err
198
211
}
199
212
@@ -233,6 +246,7 @@ func (r *AnsibleOperatorReconciler) markRunning(u *unstructured.Unstructured, na
233
246
if err != nil {
234
247
return err
235
248
}
249
+
236
250
statusInterface := u .Object ["status" ]
237
251
statusMap , _ := statusInterface .(map [string ]interface {})
238
252
crStatus := ansiblestatus .CreateFromMap (statusMap )
@@ -270,13 +284,11 @@ func (r *AnsibleOperatorReconciler) markError(u *unstructured.Unstructured, name
270
284
metrics .ReconcileFailed (r .GVK .String ())
271
285
// Get the latest resource to prevent updating a stale status
272
286
err := r .Client .Get (context .TODO (), namespacedName , u )
273
- if apierrors .IsNotFound (err ) {
274
- logger .Info ("Resource not found, assuming it was deleted" , err )
275
- return nil
276
- }
277
287
if err != nil {
288
+ logger .Error (err ,"Resource not found" )
278
289
return err
279
290
}
291
+
280
292
statusInterface := u .Object ["status" ]
281
293
statusMap , ok := statusInterface .(map [string ]interface {})
282
294
// If the map is not available create one.
@@ -306,16 +318,12 @@ func (r *AnsibleOperatorReconciler) markError(u *unstructured.Unstructured, name
306
318
}
307
319
308
320
func (r * AnsibleOperatorReconciler ) markDone (u * unstructured.Unstructured , namespacedName types.NamespacedName , statusEvent eventapi.StatusJobEvent , failureMessages eventapi.FailureMessages ) error {
309
- logger := logf .Log .WithName ("markDone" )
310
321
// Get the latest resource to prevent updating a stale status
311
322
err := r .Client .Get (context .TODO (), namespacedName , u )
312
- if apierrors .IsNotFound (err ) {
313
- logger .Info ("Resource not found, assuming it was deleted" , err )
314
- return nil
315
- }
316
323
if err != nil {
317
324
return err
318
325
}
326
+
319
327
statusInterface := u .Object ["status" ]
320
328
statusMap , _ := statusInterface .(map [string ]interface {})
321
329
crStatus := ansiblestatus .CreateFromMap (statusMap )
0 commit comments