Skip to content

Commit 1213162

Browse files
authored
feat: adding template version id to workspace build diff (#5841)
* adding template-version-id to build diff * fix tests
1 parent 26c6952 commit 1213162

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

coderd/audit/request.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,14 @@ func BuildAudit[T Auditable](ctx context.Context, p *BuildAuditParams[T]) {
189189
// As the audit request has not been initiated directly by a user, we omit
190190
// certain user details.
191191
ip := parseIP("")
192-
// We do not show diffs for build audit logs
193-
var diffRaw = []byte("{}")
192+
193+
diff := Diff(p.Audit, p.Old, p.New)
194+
var err error
195+
diffRaw, err := json.Marshal(diff)
196+
if err != nil {
197+
p.Log.Warn(ctx, "marshal diff", slog.Error(err))
198+
diffRaw = []byte("{}")
199+
}
194200

195201
if p.AdditionalFields == nil {
196202
p.AdditionalFields = json.RawMessage("{}")
@@ -211,8 +217,8 @@ func BuildAudit[T Auditable](ctx context.Context, p *BuildAuditParams[T]) {
211217
RequestID: p.JobID,
212218
AdditionalFields: p.AdditionalFields,
213219
}
214-
err := p.Audit.Export(ctx, auditLog)
215-
if err != nil {
220+
exportErr := p.Audit.Export(ctx, auditLog)
221+
if exportErr != nil {
216222
p.Log.Error(ctx, "export audit log",
217223
slog.F("audit_log", auditLog),
218224
slog.Error(err),

coderd/provisionerdserver/provisionerdserver.go

+19
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,14 @@ func (server *Server) FailJob(ctx context.Context, failJob *proto.FailedJob) (*p
545545
if err != nil {
546546
server.Logger.Error(ctx, "audit log - get workspace", slog.Error(err))
547547
} else {
548+
previousBuildNumber := build.BuildNumber - 1
549+
previousBuild, prevBuildErr := server.Database.GetWorkspaceBuildByWorkspaceIDAndBuildNumber(ctx, database.GetWorkspaceBuildByWorkspaceIDAndBuildNumberParams{
550+
WorkspaceID: workspace.ID,
551+
BuildNumber: previousBuildNumber,
552+
})
553+
if prevBuildErr != nil {
554+
previousBuild = database.WorkspaceBuild{}
555+
}
548556
// We pass the below information to the Auditor so that it
549557
// can form a friendly string for the user to view in the UI.
550558
buildResourceInfo := map[string]string{
@@ -564,6 +572,7 @@ func (server *Server) FailJob(ctx context.Context, failJob *proto.FailedJob) (*p
564572
UserID: job.InitiatorID,
565573
JobID: job.ID,
566574
Action: auditAction,
575+
Old: previousBuild,
567576
New: build,
568577
Status: http.StatusInternalServerError,
569578
AdditionalFields: wriBytes,
@@ -796,6 +805,15 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete
796805
auditor := server.Auditor.Load()
797806
auditAction := auditActionFromTransition(workspaceBuild.Transition)
798807

808+
previousBuildNumber := workspaceBuild.BuildNumber - 1
809+
previousBuild, prevBuildErr := server.Database.GetWorkspaceBuildByWorkspaceIDAndBuildNumber(ctx, database.GetWorkspaceBuildByWorkspaceIDAndBuildNumberParams{
810+
WorkspaceID: workspace.ID,
811+
BuildNumber: previousBuildNumber,
812+
})
813+
if prevBuildErr != nil {
814+
previousBuild = database.WorkspaceBuild{}
815+
}
816+
799817
// We pass the below information to the Auditor so that it
800818
// can form a friendly string for the user to view in the UI.
801819
buildResourceInfo := map[string]string{
@@ -815,6 +833,7 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete
815833
UserID: job.InitiatorID,
816834
JobID: job.ID,
817835
Action: auditAction,
836+
Old: previousBuild,
818837
New: workspaceBuild,
819838
Status: http.StatusOK,
820839
AdditionalFields: wriBytes,

enterprise/audit/table.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ var AuditableResources = auditMap(map[any]map[string]Action{
111111
"created_at": ActionIgnore,
112112
"updated_at": ActionIgnore,
113113
"workspace_id": ActionIgnore,
114-
"template_version_id": ActionIgnore,
114+
"template_version_id": ActionTrack,
115115
"build_number": ActionIgnore,
116116
"transition": ActionIgnore,
117117
"initiator_id": ActionIgnore,

0 commit comments

Comments
 (0)