Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b94d2cb

Browse files
authored
fix(coderd): handle deletes and links for new agent/app audit resources (#16670)
These code-paths were overlooked in #16493.
1 parent f1b357d commit b94d2cb

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

coderd/audit.go

+40
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,26 @@ func (api *API) auditLogIsResourceDeleted(ctx context.Context, alog database.Get
367367
api.Logger.Error(ctx, "unable to fetch workspace", slog.Error(err))
368368
}
369369
return workspace.Deleted
370+
case database.ResourceTypeWorkspaceAgent:
371+
// We use workspace as a proxy for workspace agents.
372+
workspace, err := api.Database.GetWorkspaceByAgentID(ctx, alog.AuditLog.ResourceID)
373+
if err != nil {
374+
if xerrors.Is(err, sql.ErrNoRows) {
375+
return true
376+
}
377+
api.Logger.Error(ctx, "unable to fetch workspace", slog.Error(err))
378+
}
379+
return workspace.Deleted
380+
case database.ResourceTypeWorkspaceApp:
381+
// We use workspace as a proxy for workspace apps.
382+
workspace, err := api.Database.GetWorkspaceByWorkspaceAppID(ctx, alog.AuditLog.ResourceID)
383+
if err != nil {
384+
if xerrors.Is(err, sql.ErrNoRows) {
385+
return true
386+
}
387+
api.Logger.Error(ctx, "unable to fetch workspace", slog.Error(err))
388+
}
389+
return workspace.Deleted
370390
case database.ResourceTypeOauth2ProviderApp:
371391
_, err := api.Database.GetOAuth2ProviderAppByID(ctx, alog.AuditLog.ResourceID)
372392
if xerrors.Is(err, sql.ErrNoRows) {
@@ -429,6 +449,26 @@ func (api *API) auditLogResourceLink(ctx context.Context, alog database.GetAudit
429449
return fmt.Sprintf("/@%s/%s/builds/%s",
430450
workspaceOwner.Username, additionalFields.WorkspaceName, additionalFields.BuildNumber)
431451

452+
case database.ResourceTypeWorkspaceAgent:
453+
if additionalFields.WorkspaceOwner != "" && additionalFields.WorkspaceName != "" {
454+
return fmt.Sprintf("/@%s/%s", additionalFields.WorkspaceOwner, additionalFields.WorkspaceName)
455+
}
456+
workspace, getWorkspaceErr := api.Database.GetWorkspaceByAgentID(ctx, alog.AuditLog.ResourceID)
457+
if getWorkspaceErr != nil {
458+
return ""
459+
}
460+
return fmt.Sprintf("/@%s/%s", workspace.OwnerUsername, workspace.Name)
461+
462+
case database.ResourceTypeWorkspaceApp:
463+
if additionalFields.WorkspaceOwner != "" && additionalFields.WorkspaceName != "" {
464+
return fmt.Sprintf("/@%s/%s", additionalFields.WorkspaceOwner, additionalFields.WorkspaceName)
465+
}
466+
workspace, getWorkspaceErr := api.Database.GetWorkspaceByWorkspaceAppID(ctx, alog.AuditLog.ResourceID)
467+
if getWorkspaceErr != nil {
468+
return ""
469+
}
470+
return fmt.Sprintf("/@%s/%s", workspace.OwnerUsername, workspace.Name)
471+
432472
case database.ResourceTypeOauth2ProviderApp:
433473
return fmt.Sprintf("/deployment/oauth2-provider/apps/%s", alog.AuditLog.ResourceID)
434474

0 commit comments

Comments
 (0)