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