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

Commit7a6de99

Browse files
committed
add to agent proto/manifest
1 parentf742cd1 commit7a6de99

File tree

5 files changed

+102
-9
lines changed

5 files changed

+102
-9
lines changed

‎agent/proto/agent.proto

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,13 @@ message Manifest {
9595
repeatedWorkspaceAgentScriptscripts=10;
9696
repeatedWorkspaceAppapps=11;
9797
repeatedWorkspaceAgentMetadata.Descriptionmetadata=12;
98+
repeatedWorkspaceAgentDevcontainerdevcontainers=17;
99+
}
100+
101+
messageWorkspaceAgentDevcontainer {
102+
bytesid=1;
103+
stringworkspace_folder=2;
104+
stringconfig_path=3;
98105
}
99106

100107
messageGetManifestRequest {}

‎coderd/agentapi/manifest.go

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package agentapi
33
import (
44
"context"
55
"database/sql"
6+
"errors"
67
"net/url"
78
"strings"
89
"time"
@@ -42,11 +43,12 @@ func (a *ManifestAPI) GetManifest(ctx context.Context, _ *agentproto.GetManifest
4243
returnnil,err
4344
}
4445
var (
45-
dbApps []database.WorkspaceApp
46-
scripts []database.WorkspaceAgentScript
47-
metadata []database.WorkspaceAgentMetadatum
48-
workspace database.Workspace
49-
owner database.User
46+
dbApps []database.WorkspaceApp
47+
scripts []database.WorkspaceAgentScript
48+
metadata []database.WorkspaceAgentMetadatum
49+
workspace database.Workspace
50+
owner database.User
51+
devcontainers []database.WorkspaceAgentDevcontainer
5052
)
5153

5254
vareg errgroup.Group
@@ -80,6 +82,13 @@ func (a *ManifestAPI) GetManifest(ctx context.Context, _ *agentproto.GetManifest
8082
}
8183
returnerr
8284
})
85+
eg.Go(func() (errerror) {
86+
devcontainers,err=a.Database.GetWorkspaceAgentDevcontainersByWorkspaceAgentID(ctx,workspaceAgent.ID)
87+
iferr!=nil&&!errors.Is(err,sql.ErrNoRows) {
88+
returnerr
89+
}
90+
returnnil
91+
})
8392
err=eg.Wait()
8493
iferr!=nil {
8594
returnnil,xerrors.Errorf("fetching workspace agent data: %w",err)
@@ -125,10 +134,11 @@ func (a *ManifestAPI) GetManifest(ctx context.Context, _ *agentproto.GetManifest
125134
DisableDirectConnections:a.DisableDirectConnections,
126135
DerpForceWebsockets:a.DerpForceWebSockets,
127136

128-
DerpMap:tailnet.DERPMapToProto(a.DerpMapFn()),
129-
Scripts:dbAgentScriptsToProto(scripts),
130-
Apps:apps,
131-
Metadata:dbAgentMetadataToProtoDescription(metadata),
137+
DerpMap:tailnet.DERPMapToProto(a.DerpMapFn()),
138+
Scripts:dbAgentScriptsToProto(scripts),
139+
Apps:apps,
140+
Metadata:dbAgentMetadataToProtoDescription(metadata),
141+
Devcontainers:dbAgentDevcontainersToProto(devcontainers),
132142
},nil
133143
}
134144

@@ -228,3 +238,15 @@ func dbAppToProto(dbApp database.WorkspaceApp, agent database.WorkspaceAgent, ow
228238
Hidden:dbApp.Hidden,
229239
},nil
230240
}
241+
242+
funcdbAgentDevcontainersToProto(devcontainers []database.WorkspaceAgentDevcontainer) []*agentproto.WorkspaceAgentDevcontainer {
243+
ret:=make([]*agentproto.WorkspaceAgentDevcontainer,len(devcontainers))
244+
fori,dc:=rangedevcontainers {
245+
ret[i]=&agentproto.WorkspaceAgentDevcontainer{
246+
Id:dc.ID[:],
247+
WorkspaceFolder:dc.WorkspaceFolder,
248+
ConfigPath:dc.ConfigPath,
249+
}
250+
}
251+
returnret
252+
}

‎coderd/database/queries/workspaceagentdevcontainers.sql

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,13 @@ SELECT
88
unnest(@workspace_folder::text[])AS workspace_folder,
99
unnest(@config_path::text[])AS config_path
1010
RETURNING workspace_agent_devcontainers.*;
11+
12+
-- name: GetWorkspaceAgentDevcontainersByWorkspaceAgentID :many
13+
SELECT
14+
*
15+
FROM
16+
workspace_agent_devcontainers
17+
WHERE
18+
workspace_agent_id= $1
19+
ORDER BY
20+
created_at, id;

‎codersdk/agentsdk/convert.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ func ManifestFromProto(manifest *proto.Manifest) (Manifest, error) {
3131
iferr!=nil {
3232
returnManifest{},xerrors.Errorf("error converting workspace ID: %w",err)
3333
}
34+
devcontainers,err:=DevcontainersFromProto(manifest.Devcontainers)
35+
iferr!=nil {
36+
returnManifest{},xerrors.Errorf("error converting workspace agent devcontainers: %w",err)
37+
}
3438
returnManifest{
3539
AgentID:agentID,
3640
AgentName:manifest.AgentName,
@@ -48,6 +52,7 @@ func ManifestFromProto(manifest *proto.Manifest) (Manifest, error) {
4852
MOTDFile:manifest.MotdPath,
4953
DisableDirectConnections:manifest.DisableDirectConnections,
5054
Metadata:MetadataDescriptionsFromProto(manifest.Metadata),
55+
Devcontainers:devcontainers,
5156
},nil
5257
}
5358

@@ -73,6 +78,7 @@ func ProtoFromManifest(manifest Manifest) (*proto.Manifest, error) {
7378
Scripts:ProtoFromScripts(manifest.Scripts),
7479
Apps:apps,
7580
Metadata:ProtoFromMetadataDescriptions(manifest.Metadata),
81+
Devcontainers:ProtoFromDevcontainers(manifest.Devcontainers),
7682
},nil
7783
}
7884

@@ -424,3 +430,43 @@ func ProtoFromConnectionType(typ ConnectionType) (proto.Connection_Type, error)
424430
return0,xerrors.Errorf("unknown connection type %q",typ)
425431
}
426432
}
433+
434+
funcDevcontainersFromProto(pdcs []*proto.WorkspaceAgentDevcontainer) ([]codersdk.WorkspaceAgentDevcontainer,error) {
435+
ret:=make([]codersdk.WorkspaceAgentDevcontainer,len(pdcs))
436+
fori,pdc:=rangepdcs {
437+
dc,err:=DevcontainerFromProto(pdc)
438+
iferr!=nil {
439+
returnnil,xerrors.Errorf("parse devcontainer %v: %w",i,err)
440+
}
441+
ret[i]=dc
442+
}
443+
returnret,nil
444+
}
445+
446+
funcDevcontainerFromProto(pdc*proto.WorkspaceAgentDevcontainer) (codersdk.WorkspaceAgentDevcontainer,error) {
447+
id,err:=uuid.FromBytes(pdc.Id)
448+
iferr!=nil {
449+
return codersdk.WorkspaceAgentDevcontainer{},xerrors.Errorf("parse id: %w",err)
450+
}
451+
return codersdk.WorkspaceAgentDevcontainer{
452+
ID:id,
453+
WorkspaceFolder:pdc.WorkspaceFolder,
454+
ConfigPath:pdc.ConfigPath,
455+
},nil
456+
}
457+
458+
funcProtoFromDevcontainers(dcs []codersdk.WorkspaceAgentDevcontainer) []*proto.WorkspaceAgentDevcontainer {
459+
ret:=make([]*proto.WorkspaceAgentDevcontainer,len(dcs))
460+
fori,dc:=rangedcs {
461+
ret[i]=ProtoFromDevcontainer(dc)
462+
}
463+
returnret
464+
}
465+
466+
funcProtoFromDevcontainer(dc codersdk.WorkspaceAgentDevcontainer)*proto.WorkspaceAgentDevcontainer {
467+
return&proto.WorkspaceAgentDevcontainer{
468+
Id:dc.ID[:],
469+
WorkspaceFolder:dc.WorkspaceFolder,
470+
ConfigPath:dc.ConfigPath,
471+
}
472+
}

‎codersdk/agentsdk/convert_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,13 @@ func TestManifest(t *testing.T) {
130130
DisplayName:"bar",
131131
},
132132
},
133+
Devcontainers: []codersdk.WorkspaceAgentDevcontainer{
134+
{
135+
ID:uuid.New(),
136+
WorkspaceFolder:"/home/coder/coder",
137+
ConfigPath:"/home/coder/coder/.devcontainer/devcontainer.json",
138+
},
139+
},
133140
}
134141
p,err:=agentsdk.ProtoFromManifest(manifest)
135142
require.NoError(t,err)
@@ -152,6 +159,7 @@ func TestManifest(t *testing.T) {
152159
require.Equal(t,manifest.DisableDirectConnections,back.DisableDirectConnections)
153160
require.Equal(t,manifest.Metadata,back.Metadata)
154161
require.Equal(t,manifest.Scripts,back.Scripts)
162+
require.Equal(t,manifest.Devcontainers,back.Devcontainers)
155163
}
156164

157165
funcTestSubsystems(t*testing.T) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp