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

Function WorkspaceInfo

support/support.go:444–535  ·  view source on GitHub ↗
(ctx context.Context, client *codersdk.Client, log slog.Logger, workspaceID uuid.UUID)

Source from the content-addressed store, hash-verified

442}
443
444func WorkspaceInfo(ctx context.Context, client *codersdk.Client, log slog.Logger, workspaceID uuid.UUID) Workspace {
445 var (
446 w Workspace
447 eg errgroup.Group
448 )
449
450 if workspaceID == uuid.Nil {
451 log.Error(ctx, "no workspace id specified")
452 return w
453 }
454
455 // dependency, cannot fetch concurrently
456 ws, err := client.Workspace(ctx, workspaceID)
457 if err != nil {
458 log.Error(ctx, "fetch workspace", slog.Error(err), slog.F("workspace_id", workspaceID))
459 return w
460 }
461 for _, res := range ws.LatestBuild.Resources {
462 for _, agt := range res.Agents {
463 sanitizeEnv(agt.EnvironmentVariables)
464 }
465 }
466 w.Workspace = ws
467
468 eg.Go(func() error {
469 buildLogCh, closer, err := client.WorkspaceBuildLogsAfter(ctx, ws.LatestBuild.ID, 0)
470 if err != nil {
471 return xerrors.Errorf("fetch provisioner job logs: %w", err)
472 }
473 defer closer.Close()
474 for log := range buildLogCh {
475 w.BuildLogs = append(w.BuildLogs, log)
476 }
477 return nil
478 })
479
480 eg.Go(func() error {
481 if w.Workspace.TemplateActiveVersionID == uuid.Nil {
482 return xerrors.Errorf("workspace has nil template active version id")
483 }
484 tv, err := client.TemplateVersion(ctx, w.Workspace.TemplateActiveVersionID)
485 if err != nil {
486 return xerrors.Errorf("fetch template active version id")
487 }
488 w.TemplateVersion = tv
489
490 if tv.Job.FileID == uuid.Nil {
491 return xerrors.Errorf("template file id is nil")
492 }
493 raw, ctype, err := client.DownloadWithFormat(ctx, tv.Job.FileID, codersdk.FormatZip)
494 if err != nil {
495 return err
496 }
497 if ctype != codersdk.ContentTypeZip {
498 return xerrors.Errorf("expected content-type %s, got %s", codersdk.ContentTypeZip, ctype)
499 }
500
501 b64encoded := base64.StdEncoding.EncodeToString(raw)

Callers 1

RunFunction · 0.85

Calls 12

sanitizeEnvFunction · 0.85
WorkspaceMethod · 0.80
GoMethod · 0.80
DownloadWithFormatMethod · 0.80
TemplateMethod · 0.80
CloseMethod · 0.65
TemplateVersionMethod · 0.65
WaitMethod · 0.65
ErrorMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected