Skip to content

Commit 71494d4

Browse files
committed
feat: use agent v2 API to fetch manifest
1 parent d5955e3 commit 71494d4

File tree

4 files changed

+21
-39
lines changed

4 files changed

+21
-39
lines changed

agent/agent.go

Lines changed: 7 additions & 4 deletions
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

Lines changed: 3 additions & 0 deletions
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

Lines changed: 11 additions & 13 deletions
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

Lines changed: 0 additions & 22 deletions
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)
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