(ctx context.Context, jobID uuid.UUID)
| 5284 | } |
| 5285 | |
| 5286 | func (q *querier) GetWorkspaceResourcesByJobID(ctx context.Context, jobID uuid.UUID) ([]database.WorkspaceResource, error) { |
| 5287 | job, err := q.db.GetProvisionerJobByID(ctx, jobID) |
| 5288 | if err != nil { |
| 5289 | return nil, err |
| 5290 | } |
| 5291 | var obj rbac.Objecter |
| 5292 | switch job.Type { |
| 5293 | case database.ProvisionerJobTypeTemplateVersionDryRun, database.ProvisionerJobTypeTemplateVersionImport: |
| 5294 | // We don't need to do an authorized check, but this helper function |
| 5295 | // handles the job type for us. |
| 5296 | // TODO: Do not duplicate auth checks. |
| 5297 | tv, err := authorizedTemplateVersionFromJob(ctx, q, job) |
| 5298 | if err != nil { |
| 5299 | return nil, err |
| 5300 | } |
| 5301 | if !tv.TemplateID.Valid { |
| 5302 | // Orphaned template version |
| 5303 | obj = tv.RBACObjectNoTemplate() |
| 5304 | } else { |
| 5305 | template, err := q.db.GetTemplateByID(ctx, tv.TemplateID.UUID) |
| 5306 | if err != nil { |
| 5307 | return nil, err |
| 5308 | } |
| 5309 | obj = template.RBACObject() |
| 5310 | } |
| 5311 | case database.ProvisionerJobTypeWorkspaceBuild: |
| 5312 | build, err := q.db.GetWorkspaceBuildByJobID(ctx, jobID) |
| 5313 | if err != nil { |
| 5314 | return nil, err |
| 5315 | } |
| 5316 | workspace, err := q.db.GetWorkspaceByID(ctx, build.WorkspaceID) |
| 5317 | if err != nil { |
| 5318 | return nil, err |
| 5319 | } |
| 5320 | obj = workspace |
| 5321 | default: |
| 5322 | return nil, xerrors.Errorf("unknown job type: %s", job.Type) |
| 5323 | } |
| 5324 | |
| 5325 | if err := q.authorizeContext(ctx, policy.ActionRead, obj); err != nil { |
| 5326 | return nil, err |
| 5327 | } |
| 5328 | return q.db.GetWorkspaceResourcesByJobID(ctx, jobID) |
| 5329 | } |
| 5330 | |
| 5331 | // GetWorkspaceResourcesByJobIDs is only used for workspace build data. |
| 5332 | // The workspace is already fetched. |
nothing calls this directly
no test coverage detected