Skip to content

Commit 4857d4b

Browse files
authored
feat(codersdk/agentsdk): use new agent metadata batch endpoint (#10224)
Part of #9782
1 parent 7eeba15 commit 4857d4b

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)
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