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

Commitcfe6dcc

Browse files
committed
feat: agentapi uses appearance.Fetcher
1 parentcdec5e1 commitcfe6dcc

File tree

5 files changed

+48
-25
lines changed

5 files changed

+48
-25
lines changed

‎agent/proto/convert.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,19 @@ func SDKAppFromProto(protoApp *WorkspaceApp) (codersdk.WorkspaceApp, error) {
104104
Health:health,
105105
},nil
106106
}
107+
108+
funcSDKServiceBannerFromProto(sbp*ServiceBanner) codersdk.ServiceBannerConfig {
109+
return codersdk.ServiceBannerConfig{
110+
Enabled:sbp.GetEnabled(),
111+
Message:sbp.GetMessage(),
112+
BackgroundColor:sbp.GetBackgroundColor(),
113+
}
114+
}
115+
116+
funcServiceBannerFromSDK(sb codersdk.ServiceBannerConfig)*ServiceBanner {
117+
return&ServiceBanner{
118+
Enabled:sb.Enabled,
119+
Message:sb.Message,
120+
BackgroundColor:sb.BackgroundColor,
121+
}
122+
}

‎coderd/agentapi/api.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717

1818
"cdr.dev/slog"
1919
agentproto"github.com/coder/coder/v2/agent/proto"
20+
"github.com/coder/coder/v2/coderd/appearance"
2021
"github.com/coder/coder/v2/coderd/batchstats"
2122
"github.com/coder/coder/v2/coderd/database"
2223
"github.com/coder/coder/v2/coderd/database/pubsub"
@@ -61,6 +62,7 @@ type Options struct {
6162
DerpMapFnfunc()*tailcfg.DERPMap
6263
TailnetCoordinator*atomic.Pointer[tailnet.Coordinator]
6364
TemplateScheduleStore*atomic.Pointer[schedule.TemplateScheduleStore]
65+
AppearanceFetcher*atomic.Pointer[appearance.Fetcher]
6466
StatsBatcher*batchstats.Batcher
6567
PublishWorkspaceUpdateFnfunc(ctx context.Context,workspaceID uuid.UUID)
6668
PublishWorkspaceAgentLogsUpdateFnfunc(ctx context.Context,workspaceAgentID uuid.UUID,msg agentsdk.LogsNotifyMessage)
@@ -104,7 +106,7 @@ func New(opts Options) *API {
104106
}
105107

106108
api.ServiceBannerAPI=&ServiceBannerAPI{
107-
Database:opts.Database,
109+
appearanceFetcher:opts.AppearanceFetcher,
108110
}
109111

110112
api.StatsAPI=&StatsAPI{

‎coderd/agentapi/servicebanner.go

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,22 @@ package agentapi
22

33
import (
44
"context"
5-
"database/sql"
6-
"encoding/json"
5+
"sync/atomic"
76

87
"golang.org/x/xerrors"
98

10-
agentproto"github.com/coder/coder/v2/agent/proto"
11-
"github.com/coder/coder/v2/coderd/database"
12-
"github.com/coder/coder/v2/codersdk"
9+
"github.com/coder/coder/v2/agent/proto"
10+
"github.com/coder/coder/v2/coderd/appearance"
1311
)
1412

1513
typeServiceBannerAPIstruct {
16-
Database database.Store
14+
appearanceFetcher*atomic.Pointer[appearance.Fetcher]
1715
}
1816

19-
func (a*ServiceBannerAPI)GetServiceBanner(ctx context.Context,_*agentproto.GetServiceBannerRequest) (*agentproto.ServiceBanner,error) {
20-
serviceBannerJSON,err:=a.Database.GetServiceBanner(ctx)
21-
iferr!=nil&&!xerrors.Is(err,sql.ErrNoRows){
22-
returnnil,xerrors.Errorf("get service banner: %w",err)
17+
func (a*ServiceBannerAPI)GetServiceBanner(ctx context.Context,_*proto.GetServiceBannerRequest) (*proto.ServiceBanner,error) {
18+
cfg,err:=(*a.appearanceFetcher.Load()).Fetch(ctx)
19+
iferr!=nil {
20+
returnnil,xerrors.Errorf("fetch appearance: %w",err)
2321
}
24-
25-
varcfg codersdk.ServiceBannerConfig
26-
ifserviceBannerJSON!="" {
27-
err=json.Unmarshal([]byte(serviceBannerJSON),&cfg)
28-
iferr!=nil {
29-
returnnil,xerrors.Errorf("unmarshal json: %w, raw: %s",err,serviceBannerJSON)
30-
}
31-
}
32-
33-
return&agentproto.ServiceBanner{
34-
Enabled:cfg.Enabled,
35-
Message:cfg.Message,
36-
BackgroundColor:cfg.BackgroundColor,
37-
},nil
22+
returnproto.ServiceBannerFromSDK(cfg.ServiceBanner),nil
3823
}

‎coderd/workspaceagentsrpc.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
130130
DerpMapFn:api.DERPMap,
131131
TailnetCoordinator:&api.TailnetCoordinator,
132132
TemplateScheduleStore:api.TemplateScheduleStore,
133+
AppearanceFetcher:&api.AppearanceFetcher,
133134
StatsBatcher:api.statsBatcher,
134135
PublishWorkspaceUpdateFn:api.publishWorkspaceUpdate,
135136
PublishWorkspaceAgentLogsUpdateFn:api.publishWorkspaceAgentLogsUpdate,

‎enterprise/coderd/appearance_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/stretchr/testify/assert"
1010
"github.com/stretchr/testify/require"
1111

12+
"github.com/coder/coder/v2/agent/proto"
1213
"github.com/coder/coder/v2/cli/clibase"
1314
"github.com/coder/coder/v2/coderd/appearance"
1415
"github.com/coder/coder/v2/coderd/coderdtest"
@@ -159,6 +160,8 @@ func TestServiceBanners(t *testing.T) {
159160
banner,err:=agentClient.GetServiceBanner(ctx)
160161
require.NoError(t,err)
161162
require.Equal(t,cfg.ServiceBanner,banner)
163+
banner=requireGetServiceBannerV2(ctx,t,agentClient)
164+
require.Equal(t,cfg.ServiceBanner,banner)
162165

163166
// Create an AGPL Coderd against the same database
164167
agplClient:=coderdtest.New(t,&coderdtest.Options{Database:store,Pubsub:ps})
@@ -167,16 +170,32 @@ func TestServiceBanners(t *testing.T) {
167170
banner,err=agplAgentClient.GetServiceBanner(ctx)
168171
require.NoError(t,err)
169172
require.Equal(t, codersdk.ServiceBannerConfig{},banner)
173+
banner=requireGetServiceBannerV2(ctx,t,agplAgentClient)
174+
require.Equal(t, codersdk.ServiceBannerConfig{},banner)
170175

171176
// No license means no banner.
172177
err=client.DeleteLicense(ctx,lic.ID)
173178
require.NoError(t,err)
174179
banner,err=agentClient.GetServiceBanner(ctx)
175180
require.NoError(t,err)
176181
require.Equal(t, codersdk.ServiceBannerConfig{},banner)
182+
banner=requireGetServiceBannerV2(ctx,t,agentClient)
183+
require.Equal(t, codersdk.ServiceBannerConfig{},banner)
177184
})
178185
}
179186

187+
funcrequireGetServiceBannerV2(ctx context.Context,t*testing.T,client*agentsdk.Client) codersdk.ServiceBannerConfig {
188+
cc,err:=client.Listen(ctx)
189+
require.NoError(t,err)
190+
deferfunc() {
191+
_=cc.Close()
192+
}()
193+
aAPI:=proto.NewDRPCAgentClient(cc)
194+
sbp,err:=aAPI.GetServiceBanner(ctx,&proto.GetServiceBannerRequest{})
195+
require.NoError(t,err)
196+
returnproto.SDKServiceBannerFromProto(sbp)
197+
}
198+
180199
funcTestCustomSupportLinks(t*testing.T) {
181200
t.Parallel()
182201

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp