fetchExternalAgents fetches the external agents for a workspace.
(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, resources []codersdk.WorkspaceResource)
| 221 | |
| 222 | // fetchExternalAgents fetches the external agents for a workspace. |
| 223 | func 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. |
| 253 | func formatExternalAgent(workspaceName string, externalAgents []externalAgent) string { |
no test coverage detected