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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy