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

Method GetManifest

coderd/agentapi/manifest.go:40–154  ·  view source on GitHub ↗
(ctx context.Context, _ *agentproto.GetManifestRequest)

Source from the content-addressed store, hash-verified

38}
39
40func (a *ManifestAPI) GetManifest(ctx context.Context, _ *agentproto.GetManifestRequest) (*agentproto.Manifest, error) {
41 var (
42 dbApps []database.WorkspaceApp
43 scripts []database.GetWorkspaceAgentScriptsByAgentIDsRow
44 metadata []database.WorkspaceAgentMetadatum
45 workspace database.Workspace
46 devcontainers []database.WorkspaceAgentDevcontainer
47 )
48
49 workspaceAgent, err := a.AgentFn(ctx)
50 if err != nil {
51 return nil, xerrors.Errorf("getting workspace agent: %w", err)
52 }
53
54 var eg errgroup.Group
55 eg.Go(func() (err error) {
56 dbApps, err = a.Database.GetWorkspaceAppsByAgentID(ctx, workspaceAgent.ID)
57 if err != nil && !xerrors.Is(err, sql.ErrNoRows) {
58 return err
59 }
60 return nil
61 })
62 eg.Go(func() (err error) {
63 // nolint:gocritic // This is necessary to fetch agent scripts!
64 scripts, err = a.Database.GetWorkspaceAgentScriptsByAgentIDs(dbauthz.AsSystemRestricted(ctx), []uuid.UUID{workspaceAgent.ID})
65 return err
66 })
67 eg.Go(func() (err error) {
68 metadata, err = a.Database.GetWorkspaceAgentMetadata(ctx, database.GetWorkspaceAgentMetadataParams{
69 WorkspaceAgentID: workspaceAgent.ID,
70 Keys: nil, // all
71 })
72 return err
73 })
74 eg.Go(func() (err error) {
75 workspace, err = a.Database.GetWorkspaceByID(ctx, a.WorkspaceID)
76 if err != nil {
77 return xerrors.Errorf("getting workspace by id: %w", err)
78 }
79 return err
80 })
81 eg.Go(func() (err error) {
82 devcontainers, err = a.Database.GetWorkspaceAgentDevcontainersByAgentID(ctx, workspaceAgent.ID)
83 if err != nil && !errors.Is(err, sql.ErrNoRows) {
84 return err
85 }
86 return nil
87 })
88 err = eg.Wait()
89 if err != nil {
90 return nil, xerrors.Errorf("fetching workspace agent data: %w", err)
91 }
92
93 // Fetch user secrets for injection into the agent manifest.
94 // This runs after the errgroup because it needs workspace.OwnerID.
95 //nolint:gocritic // System context needed to read secrets for the workspace owner.
96 userSecrets, err := a.Database.ListUserSecretsWithValues(dbauthz.AsSystemRestricted(ctx), workspace.OwnerID)
97 if err != nil {

Callers 1

TestGetManifestFunction · 0.95

Calls 15

AsSystemRestrictedFunction · 0.92
DERPMapToProtoFunction · 0.92
vscodeProxyURIFunction · 0.85
dbAppsToProtoFunction · 0.85
dbAgentScriptsToProtoFunction · 0.85
dbUserSecretsToProtoFunction · 0.85
GoMethod · 0.80

Tested by 1

TestGetManifestFunction · 0.76