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

Commit2889dac

Browse files
committed
plumb to executor
1 parent898bdf3 commit2889dac

File tree

12 files changed

+123
-57
lines changed

12 files changed

+123
-57
lines changed

‎cli/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,7 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
11251125
autobuildTicker:=time.NewTicker(vals.AutobuildPollInterval.Value())
11261126
deferautobuildTicker.Stop()
11271127
autobuildExecutor:=autobuild.NewExecutor(
1128-
ctx,options.Database,options.Pubsub,options.PrometheusRegistry,coderAPI.TemplateScheduleStore,&coderAPI.Auditor,coderAPI.AccessControlStore,logger,autobuildTicker.C,options.NotificationsEnqueuer,coderAPI.Experiments)
1128+
ctx,options.Database,options.Pubsub,coderAPI.FileCache,options.PrometheusRegistry,coderAPI.TemplateScheduleStore,&coderAPI.Auditor,coderAPI.AccessControlStore,logger,autobuildTicker.C,options.NotificationsEnqueuer,coderAPI.Experiments)
11291129
autobuildExecutor.Run()
11301130

11311131
jobReaperTicker:=time.NewTicker(vals.JobReaperDetectorInterval.Value())

‎coderd/autobuild/lifecycle_executor.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ import (
3333

3434
// Executor automatically starts or stops workspaces.
3535
typeExecutorstruct {
36-
ctx context.Context
37-
db database.Store
38-
ps pubsub.Pubsub
39-
//fileCache *files.Cache
36+
ctxcontext.Context
37+
dbdatabase.Store
38+
pspubsub.Pubsub
39+
fileCache*files.Cache
4040
templateScheduleStore*atomic.Pointer[schedule.TemplateScheduleStore]
4141
accessControlStore*atomic.Pointer[dbauthz.AccessControlStore]
4242
auditor*atomic.Pointer[audit.Auditor]

‎coderd/coderdtest/coderdtest.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import (
5252
"cdr.dev/slog"
5353
"cdr.dev/slog/sloggers/sloghuman"
5454
"cdr.dev/slog/sloggers/slogtest"
55+
"github.com/coder/coder/v2/coderd/files"
5556
"github.com/coder/quartz"
5657

5758
"github.com/coder/coder/v2/coderd"
@@ -359,6 +360,7 @@ func NewOptions(t testing.TB, options *Options) (func(http.Handler), context.Can
359360
ctx,
360361
options.Database,
361362
options.Pubsub,
363+
files.New(prometheus.NewRegistry(),options.Authorizer),
362364
prometheus.NewRegistry(),
363365
&templateScheduleStore,
364366
&auditor,

‎coderd/dynamicparameters/render_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
packagedynamicparameters
1+
packagedynamicparameters_test
22

33
import (
44
"testing"
55

66
"github.com/stretchr/testify/require"
7+
8+
"github.com/coder/coder/v2/coderd/dynamicparameters"
79
)
810

911
funcTestProvisionerVersionSupportsDynamicParameters(t*testing.T) {
@@ -26,7 +28,7 @@ func TestProvisionerVersionSupportsDynamicParameters(t *testing.T) {
2628
t.Run(v,func(t*testing.T) {
2729
t.Parallel()
2830

29-
does:=ProvisionerVersionSupportsDynamicParameters(v)
31+
does:=dynamicparameters.ProvisionerVersionSupportsDynamicParameters(v)
3032
require.Equal(t,dyn,does)
3133
})
3234
}

‎coderd/dynamicparameters/resolver.go

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,6 @@ import (
1212
"github.com/coder/coder/v2/codersdk"
1313
)
1414

15-
typeParameterResolverstruct {
16-
rendererRenderer
17-
firstBuildbool
18-
presetValues []database.TemplateVersionPresetParameter
19-
previousValues []database.WorkspaceBuildParameter
20-
buildValues []database.WorkspaceBuildParameter
21-
}
22-
2315
typeparameterValueSourceint
2416

2517
const (
@@ -33,6 +25,7 @@ type parameterValue struct {
3325
SourceparameterValueSource
3426
}
3527

28+
//nolint:revive // firstbuild is a control flag to turn on immutable validation
3629
funcResolveParameters(
3730
ctx context.Context,
3831
ownerID uuid.UUID,
@@ -53,16 +46,12 @@ func ResolveParameters(
5346

5447
// Add build values
5548
for_,buildValue:=rangebuildValues {
56-
if_,ok:=values[buildValue.Name];!ok {
57-
values[buildValue.Name]=parameterValue{Source:sourceBuild,Value:buildValue.Value}
58-
}
49+
values[buildValue.Name]=parameterValue{Source:sourceBuild,Value:buildValue.Value}
5950
}
6051

6152
// Add preset values
6253
for_,preset:=rangepresetValues {
63-
if_,ok:=values[preset.Name];!ok {
64-
values[preset.Name]=parameterValue{Source:sourcePreset,Value:preset.Value}
65-
}
54+
values[preset.Name]=parameterValue{Source:sourcePreset,Value:preset.Value}
6655
}
6756

6857
originalValues:=make(map[string]parameterValue,len(values))

‎coderd/parameters_test.go

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,11 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
100100
require.Equal(t,-1,preview.ID)
101101
require.Empty(t,preview.Diagnostics)
102102

103-
require.Len(t,preview.Parameters,1)
104-
require.Equal(t,"jetbrains_ide",preview.Parameters[0].Name)
105-
require.True(t,preview.Parameters[0].Value.Valid)
106-
require.Equal(t,"CL",preview.Parameters[0].Value.Value)
103+
require.Len(t,preview.Parameters,2)
104+
coderdtest.AssertParameter(t,"jetbrains_ide",preview.Parameters).
105+
Exists().Value("CL")
106+
coderdtest.AssertParameter(t,"region",preview.Parameters).
107+
Exists().Value("na")
107108
})
108109

109110
// OldProvisioners use the static parameters in the dynamic param flow
@@ -241,10 +242,11 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
241242
require.Equal(t,-1,preview.ID)
242243
require.Empty(t,preview.Diagnostics)
243244

244-
require.Len(t,preview.Parameters,1)
245-
require.Equal(t,"jetbrains_ide",preview.Parameters[0].Name)
246-
require.True(t,preview.Parameters[0].Value.Valid)
247-
require.Equal(t,"CL",preview.Parameters[0].Value.Value)
245+
require.Len(t,preview.Parameters,2)
246+
coderdtest.AssertParameter(t,"jetbrains_ide",preview.Parameters).
247+
Exists().Value("CL")
248+
coderdtest.AssertParameter(t,"region",preview.Parameters).
249+
Exists().Value("na")
248250
_=stream.Close(websocket.StatusGoingAway)
249251

250252
wrk:=coderdtest.CreateWorkspace(t,setup.client,setup.template.ID,func(request*codersdk.CreateWorkspaceRequest) {
@@ -253,29 +255,35 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
253255
Name:preview.Parameters[0].Name,
254256
Value:"GO",
255257
},
258+
{
259+
Name:preview.Parameters[1].Name,
260+
Value:"eu",
261+
},
256262
}
257263
request.EnableDynamicParameters=true
258264
})
259265
coderdtest.AwaitWorkspaceBuildJobCompleted(t,setup.client,wrk.LatestBuild.ID)
260266

261267
params,err:=setup.client.WorkspaceBuildParameters(ctx,wrk.LatestBuild.ID)
262268
require.NoError(t,err)
263-
require.Len(t,params,1)
264-
require.Equal(t,"jetbrains_ide",params[0].Name)
265-
require.Equal(t,"GO",params[0].Value)
269+
require.ElementsMatch(t, []codersdk.WorkspaceBuildParameter{
270+
{Name:"jetbrains_ide",Value:"GO"}, {Name:"region",Value:"eu"},
271+
},params)
272+
273+
regionOptions:= []string{"na","af","sa","as"}
266274

267275
// A helper function to assert params
268276
doTransition:=func(t*testing.T,trans codersdk.WorkspaceTransition) {
269277
t.Helper()
270278

271-
fooVal:=coderdtest.RandomUsername(t)
279+
regionVal:=regionOptions[0]
280+
regionOptions=regionOptions[1:]// Choose the next region on the next build
281+
272282
bld,err:=setup.client.CreateWorkspaceBuild(ctx,wrk.ID, codersdk.CreateWorkspaceBuildRequest{
273283
TemplateVersionID:setup.template.ActiveVersionID,
274284
Transition:trans,
275285
RichParameterValues: []codersdk.WorkspaceBuildParameter{
276-
// No validation, so this should work as is.
277-
// Overwrite the value on each transition
278-
{Name:"foo",Value:fooVal},
286+
{Name:"region",Value:regionVal},
279287
},
280288
EnableDynamicParameters:ptr.Ref(true),
281289
})
@@ -286,7 +294,7 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
286294
require.NoError(t,err)
287295
require.ElementsMatch(t,latestParams, []codersdk.WorkspaceBuildParameter{
288296
{Name:"jetbrains_ide",Value:"GO"},
289-
{Name:"foo",Value:fooVal},
297+
{Name:"region",Value:regionVal},
290298
})
291299
}
292300

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,47 @@
1-
terraform {}
1+
terraform {
2+
required_providers {
3+
coder={
4+
source="coder/coder"
5+
version="2.5.3"
6+
}
7+
}
8+
}
29

310
module"jetbrains_gateway" {
411
source="jetbrains_gateway"
512
}
13+
14+
data"coder_parameter""region" {
15+
name="region"
16+
display_name="Select a region"
17+
type="string"
18+
form_type="dropdown"
19+
mutable=true
20+
default="na"
21+
order=1000
22+
23+
option {
24+
name="North America"
25+
value="na"
26+
}
27+
28+
option {
29+
name="South America"
30+
value="sa"
31+
}
32+
33+
option {
34+
name="Europe"
35+
value="eu"
36+
}
37+
38+
option {
39+
name="Africa"
40+
value="af"
41+
}
42+
43+
option {
44+
name="Asia"
45+
value="as"
46+
}
47+
}

‎coderd/wsbuilder/wsbuilder.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,8 +716,8 @@ func (b *Builder) getDynamicParameters() (names, values []string, err error) {
716716
returnnil,nil,xerrors.Errorf("something went wrong: %w",errors.Join(diagnostics.Errs()...))
717717
}
718718

719-
names=make([]string,len(buildValues))
720-
values=make([]string,len(buildValues))
719+
names=make([]string,0,len(buildValues))
720+
values=make([]string,0,len(buildValues))
721721
fork,v:=rangebuildValues {
722722
names=append(names,k)
723723
values=append(values,v)

‎enterprise/coderd/coderd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,7 @@ func (api *API) setupPrebuilds(featureEnabled bool) (agplprebuilds.Reconciliatio
11641164
returnagplprebuilds.DefaultReconciler,agplprebuilds.DefaultClaimer
11651165
}
11661166

1167-
reconciler:=prebuilds.NewStoreReconciler(api.Database,api.Pubsub,api.DeploymentValues.Prebuilds,
1167+
reconciler:=prebuilds.NewStoreReconciler(api.Database,api.Pubsub,api.AGPL.FileCache,api.DeploymentValues.Prebuilds,
11681168
api.Logger.Named("prebuilds"),quartz.NewReal(),api.PrometheusRegistry,api.NotificationsEnqueuer)
11691169
returnreconciler,prebuilds.NewEnterpriseClaimer(api.Database)
11701170
}

‎enterprise/coderd/prebuilds/claim_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/stretchr/testify/require"
1616
"golang.org/x/xerrors"
1717

18+
"github.com/coder/coder/v2/coderd/files"
1819
"github.com/coder/quartz"
1920

2021
"github.com/coder/coder/v2/coderd/coderdtest"
@@ -164,7 +165,8 @@ func TestClaimPrebuild(t *testing.T) {
164165
})
165166
deferprovisionerCloser.Close()
166167

167-
reconciler:=prebuilds.NewStoreReconciler(spy,pubsub, codersdk.PrebuildsConfig{},logger,quartz.NewMock(t),prometheus.NewRegistry(),newNoopEnqueuer())
168+
cache:=files.NewFromStore(spy,prometheus.NewRegistry(),&coderdtest.FakeAuthorizer{})
169+
reconciler:=prebuilds.NewStoreReconciler(spy,pubsub,cache, codersdk.PrebuildsConfig{},logger,quartz.NewMock(t),prometheus.NewRegistry(),newNoopEnqueuer())
168170
varclaimer agplprebuilds.Claimer=prebuilds.NewEnterpriseClaimer(spy)
169171
api.AGPL.PrebuildsClaimer.Store(&claimer)
170172

‎enterprise/coderd/prebuilds/metricscollector_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
prometheus_client"github.com/prometheus/client_model/go"
1414

1515
"cdr.dev/slog/sloggers/slogtest"
16+
"github.com/coder/coder/v2/coderd/coderdtest"
17+
"github.com/coder/coder/v2/coderd/files"
1618
"github.com/coder/quartz"
1719

1820
"github.com/coder/coder/v2/coderd/database"
@@ -198,7 +200,8 @@ func TestMetricsCollector(t *testing.T) {
198200
})
199201
clock:=quartz.NewMock(t)
200202
db,pubsub:=dbtestutil.NewDB(t)
201-
reconciler:=prebuilds.NewStoreReconciler(db,pubsub, codersdk.PrebuildsConfig{},logger,quartz.NewMock(t),prometheus.NewRegistry(),newNoopEnqueuer())
203+
cache:=files.NewFromStore(db,prometheus.NewRegistry(),&coderdtest.FakeAuthorizer{})
204+
reconciler:=prebuilds.NewStoreReconciler(db,pubsub,cache, codersdk.PrebuildsConfig{},logger,quartz.NewMock(t),prometheus.NewRegistry(),newNoopEnqueuer())
202205
ctx:=testutil.Context(t,testutil.WaitLong)
203206

204207
createdUsers:= []uuid.UUID{database.PrebuildsSystemUserID}
@@ -334,7 +337,8 @@ func TestMetricsCollector_DuplicateTemplateNames(t *testing.T) {
334337
logger:=slogtest.Make(t,&slogtest.Options{IgnoreErrors:true})
335338
clock:=quartz.NewMock(t)
336339
db,pubsub:=dbtestutil.NewDB(t)
337-
reconciler:=prebuilds.NewStoreReconciler(db,pubsub, codersdk.PrebuildsConfig{},logger,quartz.NewMock(t),prometheus.NewRegistry(),newNoopEnqueuer())
340+
cache:=files.NewFromStore(db,prometheus.NewRegistry(),&coderdtest.FakeAuthorizer{})
341+
reconciler:=prebuilds.NewStoreReconciler(db,pubsub,cache, codersdk.PrebuildsConfig{},logger,quartz.NewMock(t),prometheus.NewRegistry(),newNoopEnqueuer())
338342
ctx:=testutil.Context(t,testutil.WaitLong)
339343

340344
collector:=prebuilds.NewMetricsCollector(db,logger,reconciler)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp