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

Function fetchExternalAgents

enterprise/cli/externalworkspaces.go:223–250  ·  view source on GitHub ↗

fetchExternalAgents fetches the external agents for a workspace.

(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, resources []codersdk.WorkspaceResource)

Source from the content-addressed store, hash-verified

221
222// fetchExternalAgents fetches the external agents for a workspace.
223func fetchExternalAgents(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, resources []codersdk.WorkspaceResource) ([]externalAgent, error) {
224 if len(resources) == 0 {
225 return nil, xerrors.Errorf("no resources found for workspace")
226 }
227
228 var externalAgents []externalAgent
229
230 for _, resource := range resources {
231 if resource.Type != "coder_external_agent" || len(resource.Agents) == 0 {
232 continue
233 }
234
235 agent := resource.Agents[0]
236 credentials, err := client.WorkspaceExternalAgentCredentials(inv.Context(), workspace.ID, agent.Name)
237 if err != nil {
238 return nil, xerrors.Errorf("get external agent token for agent %q: %w", agent.Name, err)
239 }
240
241 externalAgents = append(externalAgents, externalAgent{
242 AgentName: agent.Name,
243 AuthType: "token",
244 AuthToken: credentials.AgentToken,
245 InitScript: credentials.Command,
246 })
247 }
248
249 return externalAgents, nil
250}
251
252// formatExternalAgent formats the instructions for an external agent.
253func formatExternalAgent(workspaceName string, externalAgents []externalAgent) string {

Callers 1

Calls 3

ContextMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected