@@ -77,47 +77,50 @@ func (h *Handler) PreviewStackAsync() http.HandlerFunc {
77
77
logger .Info ("Async preview in progress" )
78
78
var previewChanges any
79
79
newCtx , cancel := CopyToNewContextWithTimeout (ctx , constant .RunTimeOut )
80
- defer cancel () // make sure the context is canceled to free resources
81
- defer handleCrash (newCtx ) // recover from possible panic
80
+ defer cancel () // make sure the context is canceled to free resources
81
+ defer handleCrash (newCtx , h . setRunToFailed , runEntity . ID ) // recover from possible panic
82
82
83
83
// update status of the run when exiting the async run
84
84
defer func () {
85
85
select {
86
86
case <- newCtx .Done ():
87
- logger . Info ( "preview execution timed out" , "stackID" , params .StackID , "time" , time .Now (), "timeout" , newCtx .Err ())
87
+ logutil . LogToAll ( logger , runLogger , "info" , "preview execution timed out" , "stackID" , params .StackID , "time" , time .Now (), "timeout" , newCtx .Err ())
88
88
h .setRunToCancelled (newCtx , runEntity .ID )
89
89
default :
90
90
if err != nil {
91
- logger . Info ( "preview failed for stack" , "stackID" , params .StackID , "time" , time .Now ())
91
+ logutil . LogToAll ( logger , runLogger , "error" , "preview failed for stack" , "stackID" , params .StackID , "time" , time .Now ())
92
92
h .setRunToFailed (newCtx , runEntity .ID )
93
93
} else {
94
- logger . Info ( "preview completed for stack" , "stackID" , params .StackID , "time" , time .Now ())
94
+ logutil . LogToAll ( logger , runLogger , "info" , "preview completed for stack" , "stackID" , params .StackID , "time" , time .Now ())
95
95
if pc , ok := previewChanges .(* models.Changes ); ok {
96
96
h .setRunToSuccess (newCtx , runEntity .ID , pc )
97
97
} else {
98
- logger . Error ( "Error casting preview changes to models.Changes" , "error" , "casting error" )
98
+ logutil . LogToAll ( logger , runLogger , "error" , "Error casting preview changes to models.Changes" , "error" , "casting error" )
99
99
h .setRunToFailed (newCtx , runEntity .ID )
100
100
}
101
101
}
102
102
}
103
103
}()
104
104
105
+ defer handleCrash (newCtx , h .setRunToFailed , runEntity .ID ) // recover from possible panic
106
+
105
107
// Call preview stack
106
- changes , err := h .stackManager .PreviewStack (newCtx , params , requestPayload .ImportedResources )
108
+ var changes * models.Changes
109
+ changes , err = h .stackManager .PreviewStack (newCtx , params , requestPayload .ImportedResources )
107
110
if err != nil {
108
- logger . Error ( "Error previewing stack" , "error" , err )
111
+ logutil . LogToAll ( logger , runLogger , "error" , "Error previewing stack" , "error" , err )
109
112
return
110
113
}
111
114
112
115
previewChanges , err = stackmanager .ProcessChanges (newCtx , w , changes , params .Format , params .ExecuteParams .Detail )
113
116
if err != nil {
114
- logger . Error ( "Error processing preview changes" , "error" , err )
117
+ logutil . LogToAll ( logger , runLogger , "error" , "Error processing preview changes" , "error" , err )
115
118
return
116
119
}
117
120
})
118
121
defer func () {
119
122
if inBufferZone {
120
- logger . Info ( "The task is in the buffer zone, waiting for an available worker" )
123
+ logutil . LogToAll ( logger , runLogger , "info" , "The task is in the buffer zone, waiting for an available worker" )
121
124
h .setRunToQueued (ctx , runEntity .ID )
122
125
}
123
126
}()
@@ -182,42 +185,44 @@ func (h *Handler) ApplyStackAsync() http.HandlerFunc {
182
185
// defer safe.HandleCrash(aciLoggingRecoverHandler(h.aciClient, &req, log))
183
186
logger .Info ("Async apply in progress" )
184
187
newCtx , cancel := CopyToNewContextWithTimeout (ctx , constant .RunTimeOut )
185
- defer cancel () // make sure the context is canceled to free resources
186
- defer handleCrash (newCtx ) // recover from possible panic
188
+ defer cancel () // make sure the context is canceled to free resources
189
+ defer handleCrash (newCtx , h . setRunToFailed , runEntity . ID ) // recover from possible panic
187
190
188
191
// update status of the run when exiting the async run
189
192
defer func () {
190
193
select {
191
194
case <- newCtx .Done ():
192
- logger . Info ( "apply execution timed out" , "stackID" , params .StackID , "time" , time .Now (), "timeout" , newCtx .Err ())
195
+ logutil . LogToAll ( logger , runLogger , "info" , "apply execution timed out" , "stackID" , params .StackID , "time" , time .Now (), "timeout" , newCtx .Err ())
193
196
h .setRunToCancelled (newCtx , runEntity .ID )
194
197
default :
195
198
if err != nil {
196
- logger . Info ( "apply failed for stack" , "stackID" , params .StackID , "time" , time .Now ())
199
+ logutil . LogToAll ( logger , runLogger , "error" , "apply failed for stack" , "stackID" , params .StackID , "time" , time .Now ())
197
200
h .setRunToFailed (newCtx , runEntity .ID )
198
201
} else {
199
- logger . Info ( "apply completed for stack" , "stackID" , params .StackID , "time" , time .Now ())
202
+ logutil . LogToAll ( logger , runLogger , "info" , "apply completed for stack" , "stackID" , params .StackID , "time" , time .Now ())
200
203
h .setRunToSuccess (newCtx , runEntity .ID , "apply completed" )
201
204
}
202
205
}
203
206
}()
204
207
208
+ defer handleCrash (newCtx , h .setRunToFailed , runEntity .ID ) // recover from possible panic
209
+
205
210
// call apply stack
206
211
err = h .stackManager .ApplyStack (newCtx , params , requestPayload .ImportedResources )
207
212
if err != nil {
208
213
if err == stackmanager .ErrDryrunDestroy {
209
214
render .Render (w , r , handler .SuccessResponse (ctx , "Dry-run mode enabled, the above resources will be applied if dryrun is set to false" ))
210
215
return
211
216
} else {
212
- logger . Error ( "Error applying stack" , "error" , err )
217
+ logutil . LogToAll ( logger , runLogger , "error" , "Error applying stack" , "error" , err )
213
218
return
214
219
}
215
220
}
216
221
})
217
222
218
223
defer func () {
219
224
if inBufferZone {
220
- logger . Info ( "The task is in the buffer zone, waiting for an available worker" )
225
+ logutil . LogToAll ( logger , runLogger , "info" , "The task is in the buffer zone, waiting for an available worker" )
221
226
h .setRunToQueued (ctx , runEntity .ID )
222
227
}
223
228
}()
@@ -279,26 +284,26 @@ func (h *Handler) GenerateStackAsync() http.HandlerFunc {
279
284
// defer safe.HandleCrash(aciLoggingRecoverHandler(h.aciClient, &req, log))
280
285
logger .Info ("Async generate in progress" )
281
286
newCtx , cancel := CopyToNewContextWithTimeout (ctx , constant .RunTimeOut )
282
- defer cancel () // make sure the context is canceled to free resources
283
- defer handleCrash (newCtx ) // recover from possible panic
287
+ defer cancel () // make sure the context is canceled to free resources
288
+ defer handleCrash (newCtx , h . setRunToFailed , runEntity . ID ) // recover from possible panic
284
289
285
290
var sp * apiv1.Spec
286
291
// update status of the run when exiting the async run
287
292
defer func () {
288
293
select {
289
294
case <- newCtx .Done ():
290
- logger . Info ( "generate execution timed out" , "stackID" , params .StackID , "time" , time .Now (), "timeout" , newCtx .Err ())
295
+ logutil . LogToAll ( logger , runLogger , "info" , "generate execution timed out" , "stackID" , params .StackID , "time" , time .Now (), "timeout" , newCtx .Err ())
291
296
h .setRunToCancelled (newCtx , runEntity .ID )
292
297
default :
293
298
if err != nil {
294
- logger . Info ( "generate failed for stack" , "stackID" , params .StackID , "time" , time .Now ())
299
+ logutil . LogToAll ( logger , runLogger , "error" , "generate failed for stack" , "stackID" , params .StackID , "time" , time .Now ())
295
300
h .setRunToFailed (newCtx , runEntity .ID )
296
301
} else {
297
- logger . Info ( "generate completed for stack" , "stackID" , params .StackID , "time" , time .Now ())
302
+ logutil . LogToAll ( logger , runLogger , "info" , "generate completed for stack" , "stackID" , params .StackID , "time" , time .Now ())
298
303
if yaml , err := yamlv2 .Marshal (sp ); err == nil {
299
304
h .setRunToSuccess (newCtx , runEntity .ID , string (yaml ))
300
305
} else {
301
- logger . Error ( "Error marshalling generated spec" , "error" , err )
306
+ logutil . LogToAll ( logger , runLogger , "error" , "Error marshalling generated spec" , "error" , err )
302
307
h .setRunToFailed (newCtx , runEntity .ID )
303
308
}
304
309
}
@@ -308,14 +313,14 @@ func (h *Handler) GenerateStackAsync() http.HandlerFunc {
308
313
// Call generate stack
309
314
_ , sp , err = h .stackManager .GenerateSpec (newCtx , params )
310
315
if err != nil {
311
- logger . Error ( "Error generating stack" , "error" , err )
316
+ logutil . LogToAll ( logger , runLogger , "error" , "Error generating stack" , "error" , err )
312
317
return
313
318
}
314
319
})
315
320
316
321
defer func () {
317
322
if inBufferZone {
318
- logger . Info ( "The task is in the buffer zone, waiting for an available worker" )
323
+ logutil . LogToAll ( logger , runLogger , "info" , "The task is in the buffer zone, waiting for an available worker" )
319
324
h .setRunToQueued (ctx , runEntity .ID )
320
325
}
321
326
}()
@@ -376,21 +381,21 @@ func (h *Handler) DestroyStackAsync() http.HandlerFunc {
376
381
inBufferZone := h .workerPool .Do (func () {
377
382
logger .Info ("Async destroy in progress" )
378
383
newCtx , cancel := CopyToNewContextWithTimeout (ctx , constant .RunTimeOut )
379
- defer cancel () // make sure the context is canceled to free resources
380
- defer handleCrash (newCtx ) // recover from possible panic
384
+ defer cancel () // make sure the context is canceled to free resources
385
+ defer handleCrash (newCtx , h . setRunToFailed , runEntity . ID ) // recover from possible panic
381
386
382
387
// update status of the run when exiting the async run
383
388
defer func () {
384
389
select {
385
390
case <- newCtx .Done ():
386
- logger . Info ( "destroy execution timed out" , "stackID" , params .StackID , "time" , time .Now (), "timeout" , newCtx .Err ())
391
+ logutil . LogToAll ( logger , runLogger , "info" , "destroy execution timed out" , "stackID" , params .StackID , "time" , time .Now (), "timeout" , newCtx .Err ())
387
392
h .setRunToCancelled (newCtx , runEntity .ID )
388
393
default :
389
394
if err != nil {
390
- logger . Info ( "destroy failed for stack" , "stackID" , params .StackID , "time" , time .Now ())
395
+ logutil . LogToAll ( logger , runLogger , "error" , "destroy failed for stack" , "stackID" , params .StackID , "time" , time .Now ())
391
396
h .setRunToFailed (newCtx , runEntity .ID )
392
397
} else {
393
- logger . Info ( "destroy completed for stack" , "stackID" , params .StackID , "time" , time .Now ())
398
+ logutil . LogToAll ( logger , runLogger , "info" , "destroy completed for stack" , "stackID" , params .StackID , "time" , time .Now ())
394
399
h .setRunToSuccess (newCtx , runEntity .ID , "destroy completed" )
395
400
}
396
401
}
@@ -400,18 +405,18 @@ func (h *Handler) DestroyStackAsync() http.HandlerFunc {
400
405
err = h .stackManager .DestroyStack (newCtx , params , w )
401
406
if err != nil {
402
407
if err == stackmanager .ErrDryrunDestroy {
403
- logger . Info ( "Dry-run mode enabled, the above resources will be destroyed if dryrun is set to false" )
408
+ logutil . LogToAll ( logger , runLogger , "info" , "Dry-run mode enabled, the above resources will be destroyed if dryrun is set to false" )
404
409
return
405
410
} else {
406
- logger . Error ( "Error destroying stack" , "error" , err )
411
+ logutil . LogToAll ( logger , runLogger , "error" , "Error destroying stack" , "error" , err )
407
412
return
408
413
}
409
414
}
410
415
})
411
416
412
417
defer func () {
413
418
if inBufferZone {
414
- logger . Info ( "The task is in the buffer zone, waiting for an available worker" )
419
+ logutil . LogToAll ( logger , runLogger , "info" , "The task is in the buffer zone, waiting for an available worker" )
415
420
h .setRunToQueued (ctx , runEntity .ID )
416
421
}
417
422
}()
0 commit comments