Skip to content

Commit 06d1c13

Browse files
committed
feat(codersdk/agentsdk): use new agent metadata batch endpoint
1 parent 7eeba15 commit 06d1c13

File tree

6 files changed

+32
-17
lines changed

6 files changed

+32
-17
lines changed

agent/agent.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ type Client interface {
9090
PostLifecycle(ctx context.Context, state agentsdk.PostLifecycleRequest) error
9191
PostAppHealth(ctx context.Context, req agentsdk.PostAppHealthsRequest) error
9292
PostStartup(ctx context.Context, req agentsdk.PostStartupRequest) error
93-
PostMetadata(ctx context.Context, key string, req agentsdk.PostMetadataRequestDeprecated) error
93+
PostMetadata(ctx context.Context, req agentsdk.PostMetadataRequest) error
9494
PatchLogs(ctx context.Context, req agentsdk.PatchLogs) error
9595
GetServiceBanner(ctx context.Context) (codersdk.ServiceBannerConfig, error)
9696
}
@@ -380,7 +380,14 @@ func (a *agent) reportMetadataLoop(ctx context.Context) {
380380
flight := trySingleflight{m: map[string]struct{}{}}
381381

382382
postMetadata := func(mr metadataResultAndKey) {
383-
err := a.client.PostMetadata(ctx, mr.key, *mr.result)
383+
err := a.client.PostMetadata(ctx, agentsdk.PostMetadataRequest{
384+
Metadata: []agentsdk.Metadata{
385+
{
386+
Key: mr.key,
387+
WorkspaceAgentMetadataResult: *mr.result,
388+
},
389+
},
390+
})
384391
if err != nil {
385392
a.logger.Error(ctx, "agent failed to report metadata", slog.Error(err))
386393
}

agent/agent_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,7 +1079,7 @@ func TestAgent_Metadata(t *testing.T) {
10791079
opts.ReportMetadataInterval = 100 * time.Millisecond
10801080
})
10811081

1082-
var gotMd map[string]agentsdk.PostMetadataRequestDeprecated
1082+
var gotMd map[string]agentsdk.Metadata
10831083
require.Eventually(t, func() bool {
10841084
gotMd = client.GetMetadata()
10851085
return len(gotMd) == 1
@@ -1112,7 +1112,7 @@ func TestAgent_Metadata(t *testing.T) {
11121112
opts.ReportMetadataInterval = testutil.IntervalFast
11131113
})
11141114

1115-
var gotMd map[string]agentsdk.PostMetadataRequestDeprecated
1115+
var gotMd map[string]agentsdk.Metadata
11161116
require.Eventually(t, func() bool {
11171117
gotMd = client.GetMetadata()
11181118
return len(gotMd) == 1

agent/agenttest/client.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ type Client struct {
4545
logger slog.Logger
4646
agentID uuid.UUID
4747
manifest agentsdk.Manifest
48-
metadata map[string]agentsdk.PostMetadataRequestDeprecated
48+
metadata map[string]agentsdk.Metadata
4949
statsChan chan *agentsdk.Stats
5050
coordinator tailnet.Coordinator
5151
LastWorkspaceAgent func()
@@ -136,20 +136,22 @@ func (c *Client) GetStartup() agentsdk.PostStartupRequest {
136136
return c.startup
137137
}
138138

139-
func (c *Client) GetMetadata() map[string]agentsdk.PostMetadataRequestDeprecated {
139+
func (c *Client) GetMetadata() map[string]agentsdk.Metadata {
140140
c.mu.Lock()
141141
defer c.mu.Unlock()
142142
return maps.Clone(c.metadata)
143143
}
144144

145-
func (c *Client) PostMetadata(ctx context.Context, key string, req agentsdk.PostMetadataRequestDeprecated) error {
145+
func (c *Client) PostMetadata(ctx context.Context, req agentsdk.PostMetadataRequest) error {
146146
c.mu.Lock()
147147
defer c.mu.Unlock()
148148
if c.metadata == nil {
149-
c.metadata = make(map[string]agentsdk.PostMetadataRequestDeprecated)
149+
c.metadata = make(map[string]agentsdk.Metadata)
150+
}
151+
for _, md := range req.Metadata {
152+
c.metadata[md.Key] = md
153+
c.logger.Debug(ctx, "post metadata", slog.F("key", md.Key), slog.F("md", md))
150154
}
151-
c.metadata[key] = req
152-
c.logger.Debug(ctx, "post metadata", slog.F("key", key), slog.F("req", req))
153155
return nil
154156
}
155157

coderd/workspaceagents_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1217,8 +1217,15 @@ func TestWorkspaceAgent_Metadata(t *testing.T) {
12171217
require.EqualValues(t, 3, manifest.Metadata[0].Timeout)
12181218

12191219
post := func(key string, mr codersdk.WorkspaceAgentMetadataResult) {
1220-
err := agentClient.PostMetadata(ctx, key, mr)
1221-
require.NoError(t, err, "post metadata", t)
1220+
err := agentClient.PostMetadata(ctx, agentsdk.PostMetadataRequest{
1221+
Metadata: []agentsdk.Metadata{
1222+
{
1223+
Key: key,
1224+
WorkspaceAgentMetadataResult: mr,
1225+
},
1226+
},
1227+
})
1228+
require.NoError(t, err, "post metadata: %s, %#v", key, mr)
12221229
}
12231230

12241231
workspace, err = client.Workspace(ctx, workspace.ID)
@@ -1302,8 +1309,7 @@ func TestWorkspaceAgent_Metadata(t *testing.T) {
13021309
require.NotEmpty(t, got.Result.Error)
13031310

13041311
unknownKeyMetadata := wantMetadata1
1305-
err = agentClient.PostMetadata(ctx, "unknown", unknownKeyMetadata)
1306-
require.NoError(t, err)
1312+
post("unknown", unknownKeyMetadata)
13071313
}
13081314

13091315
func TestWorkspaceAgent_Startup(t *testing.T) {

coderd/wsconncache/wsconncache_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ func (*client) PostAppHealth(_ context.Context, _ agentsdk.PostAppHealthsRequest
267267
return nil
268268
}
269269

270-
func (*client) PostMetadata(_ context.Context, _ string, _ agentsdk.PostMetadataRequestDeprecated) error {
270+
func (*client) PostMetadata(_ context.Context, _ agentsdk.PostMetadataRequest) error {
271271
return nil
272272
}
273273

codersdk/agentsdk/agentsdk.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ type PostMetadataRequest struct {
8282
// performance.
8383
type PostMetadataRequestDeprecated = codersdk.WorkspaceAgentMetadataResult
8484

85-
func (c *Client) PostMetadata(ctx context.Context, key string, req PostMetadataRequestDeprecated) error {
86-
res, err := c.SDK.Request(ctx, http.MethodPost, "/api/v2/workspaceagents/me/metadata/"+key, req)
85+
func (c *Client) PostMetadata(ctx context.Context, req PostMetadataRequest) error {
86+
res, err := c.SDK.Request(ctx, http.MethodPost, "/api/v2/workspaceagents/me/metadata", req)
8787
if err != nil {
8888
return xerrors.Errorf("execute request: %w", err)
8989
}

0 commit comments

Comments
 (0)