Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf6639b7

Browse files
authored
feat: add ConnectRPC variants for older Agent API versions (#13778)
1 parente5268e4 commitf6639b7

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

‎agent/proto/agent_drpc_old.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package proto
2+
3+
import (
4+
"context"
5+
6+
"storj.io/drpc"
7+
)
8+
9+
// DRPCAgentClient20 is the Agent API at v2.0. Notably, it is missing GetAnnouncementBanners, but
10+
// is useful when you want to be maximally compatible with Coderd Release Versions from 2.9+
11+
typeDRPCAgentClient20interface {
12+
DRPCConn() drpc.Conn
13+
14+
GetManifest(ctx context.Context,in*GetManifestRequest) (*Manifest,error)
15+
GetServiceBanner(ctx context.Context,in*GetServiceBannerRequest) (*ServiceBanner,error)
16+
UpdateStats(ctx context.Context,in*UpdateStatsRequest) (*UpdateStatsResponse,error)
17+
UpdateLifecycle(ctx context.Context,in*UpdateLifecycleRequest) (*Lifecycle,error)
18+
BatchUpdateAppHealths(ctx context.Context,in*BatchUpdateAppHealthRequest) (*BatchUpdateAppHealthResponse,error)
19+
UpdateStartup(ctx context.Context,in*UpdateStartupRequest) (*Startup,error)
20+
BatchUpdateMetadata(ctx context.Context,in*BatchUpdateMetadataRequest) (*BatchUpdateMetadataResponse,error)
21+
BatchCreateLogs(ctx context.Context,in*BatchCreateLogsRequest) (*BatchCreateLogsResponse,error)
22+
}
23+
24+
// DRPCAgentClient21 is the Agent API at v2.1. It is useful if you want to be maximally compatible
25+
// with Coderd Release Versions from 2.12+
26+
typeDRPCAgentClient21interface {
27+
DRPCConn() drpc.Conn
28+
29+
GetManifest(ctx context.Context,in*GetManifestRequest) (*Manifest,error)
30+
GetServiceBanner(ctx context.Context,in*GetServiceBannerRequest) (*ServiceBanner,error)
31+
UpdateStats(ctx context.Context,in*UpdateStatsRequest) (*UpdateStatsResponse,error)
32+
UpdateLifecycle(ctx context.Context,in*UpdateLifecycleRequest) (*Lifecycle,error)
33+
BatchUpdateAppHealths(ctx context.Context,in*BatchUpdateAppHealthRequest) (*BatchUpdateAppHealthResponse,error)
34+
UpdateStartup(ctx context.Context,in*UpdateStartupRequest) (*Startup,error)
35+
BatchUpdateMetadata(ctx context.Context,in*BatchUpdateMetadataRequest) (*BatchUpdateMetadataResponse,error)
36+
BatchCreateLogs(ctx context.Context,in*BatchCreateLogsRequest) (*BatchCreateLogsResponse,error)
37+
GetAnnouncementBanners(ctx context.Context,in*GetAnnouncementBannersRequest) (*GetAnnouncementBannersResponse,error)
38+
}

‎codersdk/agentsdk/agentsdk.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121

2222
"cdr.dev/slog"
2323
"github.com/coder/coder/v2/agent/proto"
24+
"github.com/coder/coder/v2/apiversion"
2425
"github.com/coder/coder/v2/codersdk"
2526
drpcsdk"github.com/coder/coder/v2/codersdk/drpc"
2627
)
@@ -155,14 +156,39 @@ func (c *Client) RewriteDERPMap(derpMap *tailcfg.DERPMap) {
155156
}
156157
}
157158

159+
// ConnectRPC20 returns a dRPC client to the Agent API v2.0. Notably, it is missing
160+
// GetAnnouncementBanners, but is useful when you want to be maximally compatible with Coderd
161+
// Release Versions from 2.9+
162+
func (c*Client)ConnectRPC20(ctx context.Context) (proto.DRPCAgentClient20,error) {
163+
conn,err:=c.connectRPCVersion(ctx,apiversion.New(2,0))
164+
iferr!=nil {
165+
returnnil,err
166+
}
167+
returnproto.NewDRPCAgentClient(conn),nil
168+
}
169+
170+
// ConnectRPC21 returns a dRPC client to the Agent API v2.1. It is useful when you want to be
171+
// maximally compatible with Coderd Release Versions from 2.12+
172+
func (c*Client)ConnectRPC21(ctx context.Context) (proto.DRPCAgentClient21,error) {
173+
conn,err:=c.connectRPCVersion(ctx,apiversion.New(2,1))
174+
iferr!=nil {
175+
returnnil,err
176+
}
177+
returnproto.NewDRPCAgentClient(conn),nil
178+
}
179+
158180
// ConnectRPC connects to the workspace agent API and tailnet API
159181
func (c*Client)ConnectRPC(ctx context.Context) (drpc.Conn,error) {
182+
returnc.connectRPCVersion(ctx,proto.CurrentVersion)
183+
}
184+
185+
func (c*Client)connectRPCVersion(ctx context.Context,version*apiversion.APIVersion) (drpc.Conn,error) {
160186
rpcURL,err:=c.SDK.URL.Parse("/api/v2/workspaceagents/me/rpc")
161187
iferr!=nil {
162188
returnnil,xerrors.Errorf("parse url: %w",err)
163189
}
164190
q:=rpcURL.Query()
165-
q.Add("version",proto.CurrentVersion.String())
191+
q.Add("version",version.String())
166192
rpcURL.RawQuery=q.Encode()
167193

168194
jar,err:=cookiejar.New(nil)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp