Skip to content

Commit 34aa574

Browse files
committed
implement sub agent url
1 parent 7358ee0 commit 34aa574

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

agent/agentcontainers/api.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ type API struct {
5757
clock quartz.Clock
5858
scriptLogger func(logSourceID uuid.UUID) ScriptLogger
5959
subAgentClient SubAgentClient
60+
subAgentURL string
6061

6162
mu sync.RWMutex
6263
closed bool
@@ -121,6 +122,14 @@ func WithSubAgentClient(client SubAgentClient) Option {
121122
}
122123
}
123124

125+
// WithSubAgentURL sets the agent URL for the sub-agent for
126+
// communicating with the control plane.
127+
func WithSubAgentURL(url string) Option {
128+
return func(api *API) {
129+
api.subAgentURL = url
130+
}
131+
}
132+
124133
// WithDevcontainers sets the known devcontainers for the API. This
125134
// allows the API to be aware of devcontainers defined in the workspace
126135
// agent manifest.
@@ -1075,8 +1084,7 @@ func (api *API) runSubAgentInContainer(ctx context.Context, dc codersdk.Workspac
10751084
err := api.dccli.Exec(agentCtx, dc.WorkspaceFolder, dc.ConfigPath, agentPath, []string{"agent"},
10761085
WithContainerID(container.ID),
10771086
WithRemoteEnv(
1078-
// TODO(mafredri): Use the correct URL here.
1079-
"CODER_AGENT_URL="+"http://172.20.0.8:3000/",
1087+
"CODER_AGENT_URL="+api.subAgentURL,
10801088
"CODER_AGENT_TOKEN="+agent.AuthToken.String(),
10811089
),
10821090
)

agent/agentcontainers/api_test.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,10 +1272,10 @@ func TestAPI(t *testing.T) {
12721272
}, nil).AnyTimes()
12731273
gomock.InOrder(
12741274
mCCLI.EXPECT().DetectArchitecture(gomock.Any(), "test-container-id").Return(runtime.GOARCH, nil),
1275-
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "mkdir", "-p", "/.coder-agent").Return(nil),
1275+
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "mkdir", "-p", "/.coder-agent").Return(nil, nil),
12761276
mCCLI.EXPECT().Copy(gomock.Any(), "test-container-id", coderBin, "/.coder-agent/coder").Return(nil),
1277-
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "chmod", "+x", "/.coder-agent/coder").Return(nil),
1278-
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "setcap", "cap_net_admin+ep", "/.coder-agent/coder").Return(nil),
1277+
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "chmod", "+x", "/.coder-agent/coder").Return(nil, nil),
1278+
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "setcap", "cap_net_admin+ep", "/.coder-agent/coder").Return(nil, nil),
12791279
)
12801280

12811281
mClock.Set(time.Now()).MustWait(ctx)
@@ -1285,6 +1285,7 @@ func TestAPI(t *testing.T) {
12851285
agentcontainers.WithClock(mClock),
12861286
agentcontainers.WithContainerCLI(mCCLI),
12871287
agentcontainers.WithSubAgentClient(fakeSAC),
1288+
agentcontainers.WithSubAgentURL("test-subagent-url"),
12881289
agentcontainers.WithDevcontainerCLI(fakeDCCLI),
12891290
)
12901291
defer api.Close()
@@ -1317,10 +1318,10 @@ func TestAPI(t *testing.T) {
13171318
// Expect the agent to be reinjected.
13181319
gomock.InOrder(
13191320
mCCLI.EXPECT().DetectArchitecture(gomock.Any(), "test-container-id").Return(runtime.GOARCH, nil),
1320-
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "mkdir", "-p", "/.coder-agent").Return(nil),
1321+
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "mkdir", "-p", "/.coder-agent").Return(nil, nil),
13211322
mCCLI.EXPECT().Copy(gomock.Any(), "test-container-id", coderBin, "/.coder-agent/coder").Return(nil),
1322-
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "chmod", "+x", "/.coder-agent/coder").Return(nil),
1323-
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "setcap", "cap_net_admin+ep", "/.coder-agent/coder").Return(nil),
1323+
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "chmod", "+x", "/.coder-agent/coder").Return(nil, nil),
1324+
mCCLI.EXPECT().ExecAs(gomock.Any(), "test-container-id", "root", "setcap", "cap_net_admin+ep", "/.coder-agent/coder").Return(nil, nil),
13241325
)
13251326

13261327
// Terminate the agent and verify it is deleted.

cli/agent.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"github.com/coder/serpent"
2929

3030
"github.com/coder/coder/v2/agent"
31+
"github.com/coder/coder/v2/agent/agentcontainers"
3132
"github.com/coder/coder/v2/agent/agentexec"
3233
"github.com/coder/coder/v2/agent/agentssh"
3334
"github.com/coder/coder/v2/agent/reaper"
@@ -362,6 +363,9 @@ func (r *RootCmd) workspaceAgent() *serpent.Command {
362363
BlockFileTransfer: blockFileTransfer,
363364
Execer: execer,
364365
ExperimentalDevcontainersEnabled: experimentalDevcontainersEnabled,
366+
ContainerAPIOptions: []agentcontainers.Option{
367+
agentcontainers.WithSubAgentURL(r.agentURL.String()),
368+
},
365369
})
366370

367371
promHandler := agent.PrometheusMetricsHandler(prometheusRegistry, logger)

0 commit comments

Comments
 (0)