MCPcopy Index your code
hub / github.com/coder/coder / GetWorkspaceResourcesByJobID

Method GetWorkspaceResourcesByJobID

coderd/database/dbauthz/dbauthz.go:5286–5329  ·  view source on GitHub ↗
(ctx context.Context, jobID uuid.UUID)

Source from the content-addressed store, hash-verified

5284}
5285
5286func (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.

Callers

nothing calls this directly

Calls 10

authorizeContextMethod · 0.95
RBACObjectNoTemplateMethod · 0.80
GetProvisionerJobByIDMethod · 0.65
GetTemplateByIDMethod · 0.65
RBACObjectMethod · 0.65
GetWorkspaceByIDMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected