@@ -201,30 +201,13 @@ func (e *Executor) runOnce(t time.Time) Stats {
201
201
},
202
202
})
203
203
204
- fields := audit.AdditionalFields {
205
- WorkspaceName : ws .Name ,
206
- BuildReason : reason ,
207
- }
208
- if build != nil {
209
- fields .BuildNumber = strconv .FormatInt (int64 (latestBuild .BuildNumber ), 10 )
210
- }
211
-
212
- raw , err := json .Marshal (fields )
213
- if err != nil {
214
- e .log .Error (e .ctx , "marshal resource info for successful job" , slog .Error (err ))
215
- }
216
-
217
- audit .WorkspaceBuildAudit (e .ctx , & audit.BuildAuditParams [database.Workspace ]{
218
- Audit : * e .auditor .Load (),
219
- Log : e .log ,
220
- UserID : job .InitiatorID ,
221
- OrganizationID : ws .OrganizationID ,
222
- JobID : job .ID ,
223
- Action : database .AuditActionWrite ,
224
- Old : wsOld ,
225
- New : ws ,
226
- Status : http .StatusOK ,
227
- AdditionalFields : raw ,
204
+ auditBuild (e .ctx , e .log , * e .auditor .Load (), auditParams {
205
+ Build : build ,
206
+ Job : latestJob ,
207
+ Reason : reason ,
208
+ Old : wsOld ,
209
+ New : ws ,
210
+ Success : err == nil ,
228
211
})
229
212
230
213
if err != nil {
@@ -419,3 +402,46 @@ func isEligibleForFailedStop(build database.WorkspaceBuild, job database.Provisi
419
402
job .CompletedAt .Valid &&
420
403
currentTick .Sub (job .CompletedAt .Time ) > templateSchedule .FailureTTL
421
404
}
405
+
406
+ type auditParams struct {
407
+ Build * database.WorkspaceBuild
408
+ Job database.ProvisionerJob
409
+ Reason database.BuildReason
410
+ Old database.Workspace
411
+ New database.Workspace
412
+ Success bool
413
+ }
414
+
415
+ func auditBuild (ctx context.Context , log slog.Logger , auditor audit.Auditor , params auditParams ) {
416
+ fields := audit.AdditionalFields {
417
+ WorkspaceName : params .New .Name ,
418
+ BuildReason : params .Reason ,
419
+ }
420
+
421
+ if params .Build != nil {
422
+ fields .BuildNumber = strconv .FormatInt (int64 (params .Build .BuildNumber ), 10 )
423
+ }
424
+
425
+ raw , err := json .Marshal (fields )
426
+ if err != nil {
427
+ log .Error (ctx , "marshal resource info for successful job" , slog .Error (err ))
428
+ }
429
+
430
+ status := http .StatusInternalServerError
431
+ if params .Success {
432
+ status = http .StatusOK
433
+ }
434
+
435
+ audit .WorkspaceBuildAudit (ctx , & audit.BuildAuditParams [database.Workspace ]{
436
+ Audit : auditor ,
437
+ Log : log ,
438
+ UserID : params .Job .InitiatorID ,
439
+ OrganizationID : params .New .OrganizationID ,
440
+ JobID : params .Job .ID ,
441
+ Action : database .AuditActionWrite ,
442
+ Old : params .Old ,
443
+ New : params .New ,
444
+ Status : status ,
445
+ AdditionalFields : raw ,
446
+ })
447
+ }
0 commit comments