Skip to content

Commit b81758f

Browse files
committed
feat: use agent v2 API to fetch manifest
1 parent 669395f commit b81758f

File tree

4 files changed

+21
-39
lines changed

4 files changed

+21
-39
lines changed

agent/agent.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ type Options struct {
8888
}
8989

9090
type Client interface {
91-
Manifest(ctx context.Context) (agentsdk.Manifest, error)
9291
Listen(ctx context.Context) (drpc.Conn, error)
9392
ReportStats(ctx context.Context, log slog.Logger, statsChan <-chan *agentsdk.Stats, setInterval func(time.Duration)) (io.Closer, error)
9493
PostLifecycle(ctx context.Context, state agentsdk.PostLifecycleRequest) error
@@ -713,12 +712,16 @@ func (a *agent) run(ctx context.Context) error {
713712
serviceBanner := agentsdk.ServiceBannerFromProto(sbp)
714713
a.serviceBanner.Store(&serviceBanner)
715714

716-
manifest, err := a.client.Manifest(ctx)
715+
mp, err := aAPI.GetManifest(ctx, &proto.GetManifestRequest{})
717716
if err != nil {
718717
return xerrors.Errorf("fetch metadata: %w", err)
719718
}
720-
a.logger.Info(ctx, "fetched manifest", slog.F("manifest", manifest))
721-
719+
a.logger.Info(ctx, "fetched manifest", slog.F("manifest", mp))
720+
manifest, err := agentsdk.ManifestFromProto(mp)
721+
if err != nil {
722+
a.logger.Critical(ctx, "failed to convert manifest", slog.F("manifest", mp), slog.Error(err))
723+
return xerrors.Errorf("convert manifest: %w", err)
724+
}
722725
if manifest.AgentID == uuid.Nil {
723726
return xerrors.New("nil agentID returned by manifest")
724727
}

agent/agent_test.go

+3
Original file line numberDiff line numberDiff line change
@@ -2039,6 +2039,9 @@ func setupAgent(t *testing.T, metadata agentsdk.Manifest, ptyTimeout time.Durati
20392039
if metadata.WorkspaceName == "" {
20402040
metadata.WorkspaceName = "test-workspace"
20412041
}
2042+
if metadata.WorkspaceID == uuid.Nil {
2043+
metadata.WorkspaceID = uuid.New()
2044+
}
20422045
coordinator := tailnet.NewCoordinator(logger)
20432046
t.Cleanup(func() {
20442047
_ = coordinator.Close()

agent/agenttest/client.go

+11-13
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ func NewClient(t testing.TB,
4949
}
5050
err := proto.DRPCRegisterTailnet(mux, drpcService)
5151
require.NoError(t, err)
52-
fakeAAPI := NewFakeAgentAPI(t, logger)
52+
mp, err := agentsdk.ProtoFromManifest(manifest)
53+
require.NoError(t, err)
54+
fakeAAPI := NewFakeAgentAPI(t, logger, mp)
5355
err = agentproto.DRPCRegisterAgent(mux, fakeAAPI)
5456
require.NoError(t, err)
5557
server := drpcserver.NewWithOptions(mux, drpcserver.Options{
@@ -64,7 +66,6 @@ func NewClient(t testing.TB,
6466
t: t,
6567
logger: logger.Named("client"),
6668
agentID: agentID,
67-
manifest: manifest,
6869
statsChan: statsChan,
6970
coordinator: coordinator,
7071
server: server,
@@ -77,7 +78,6 @@ type Client struct {
7778
t testing.TB
7879
logger slog.Logger
7980
agentID uuid.UUID
80-
manifest agentsdk.Manifest
8181
metadata map[string]agentsdk.Metadata
8282
statsChan chan *agentsdk.Stats
8383
coordinator tailnet.Coordinator
@@ -98,10 +98,6 @@ func (c *Client) Close() {
9898
c.derpMapOnce.Do(func() { close(c.derpMapUpdates) })
9999
}
100100

101-
func (c *Client) Manifest(_ context.Context) (agentsdk.Manifest, error) {
102-
return c.manifest, nil
103-
}
104-
105101
func (c *Client) Listen(ctx context.Context) (drpc.Conn, error) {
106102
conn, lis := drpcsdk.MemTransportPipe()
107103
c.LastWorkspaceAgent = func() {
@@ -252,12 +248,13 @@ type FakeAgentAPI struct {
252248
t testing.TB
253249
logger slog.Logger
254250

251+
manifest *agentproto.Manifest
252+
255253
getServiceBannerFunc func() (codersdk.ServiceBannerConfig, error)
256254
}
257255

258-
func (*FakeAgentAPI) GetManifest(context.Context, *agentproto.GetManifestRequest) (*agentproto.Manifest, error) {
259-
// TODO implement me
260-
panic("implement me")
256+
func (f *FakeAgentAPI) GetManifest(context.Context, *agentproto.GetManifestRequest) (*agentproto.Manifest, error) {
257+
return f.manifest, nil
261258
}
262259

263260
func (f *FakeAgentAPI) SetServiceBannerFunc(fn func() (codersdk.ServiceBannerConfig, error)) {
@@ -310,9 +307,10 @@ func (*FakeAgentAPI) BatchCreateLogs(context.Context, *agentproto.BatchCreateLog
310307
panic("implement me")
311308
}
312309

313-
func NewFakeAgentAPI(t testing.TB, logger slog.Logger) *FakeAgentAPI {
310+
func NewFakeAgentAPI(t testing.TB, logger slog.Logger, manifest *agentproto.Manifest) *FakeAgentAPI {
314311
return &FakeAgentAPI{
315-
t: t,
316-
logger: logger.Named("FakeAgentAPI"),
312+
t: t,
313+
logger: logger.Named("FakeAgentAPI"),
314+
manifest: manifest,
317315
}
318316
}

codersdk/agentsdk/agentsdk.go

-22
Original file line numberDiff line numberDiff line change
@@ -135,28 +135,6 @@ type Script struct {
135135
Script string `json:"script"`
136136
}
137137

138-
// Manifest fetches manifest for the currently authenticated workspace agent.
139-
func (c *Client) Manifest(ctx context.Context) (Manifest, error) {
140-
res, err := c.SDK.Request(ctx, http.MethodGet, "/api/v2/workspaceagents/me/manifest", nil)
141-
if err != nil {
142-
return Manifest{}, err
143-
}
144-
defer res.Body.Close()
145-
if res.StatusCode != http.StatusOK {
146-
return Manifest{}, codersdk.ReadBodyAsError(res)
147-
}
148-
var agentMeta Manifest
149-
err = json.NewDecoder(res.Body).Decode(&agentMeta)
150-
if err != nil {
151-
return Manifest{}, err
152-
}
153-
err = c.rewriteDerpMap(agentMeta.DERPMap)
154-
if err != nil {
155-
return Manifest{}, err
156-
}
157-
return agentMeta, nil
158-
}
159-
160138
// rewriteDerpMap rewrites the DERP map to use the access URL of the SDK as the
161139
// "embedded relay" access URL. The passed derp map is modified in place.
162140
//

0 commit comments

Comments
 (0)