Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3522bb0

Browse files
committed
plumb to executor
1 parent 16c3751 commit 3522bb0

File tree

9 files changed

+50
-32
lines changed

9 files changed

+50
-32
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
defer autobuildTicker.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
type Executor struct {
36-
ctx context.Context
37-
db database.Store
38-
ps pubsub.Pubsub
39-
//fileCache *files.Cache
36+
ctx context.Context
37+
db database.Store
38+
ps pubsub.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.NewFromStore(options.Database, prometheus.NewRegistry(), options.Authorizer),
362364
prometheus.NewRegistry(),
363365
&templateScheduleStore,
364366
&auditor,

coderd/dynamicparameters/resolver.go

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

15-
type ParameterResolver struct {
16-
renderer Renderer
17-
firstBuild bool
18-
presetValues []database.TemplateVersionPresetParameter
19-
previousValues []database.WorkspaceBuildParameter
20-
buildValues []database.WorkspaceBuildParameter
21-
}
22-
2315
type parameterValueSource int
2416

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

28+
//nolint:revive // firstbuild is a control flag to turn on immutable validation
3629
func ResolveParameters(
3730
ctx context.Context,
3831
ownerID uuid.UUID,

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
return nil, 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
for k, v := range buildValues {
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
return agplprebuilds.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
return reconciler, 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
defer provisionerCloser.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
var claimer 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)

enterprise/coderd/prebuilds/reconcile_test.go

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import (
1313
"github.com/stretchr/testify/assert"
1414
"golang.org/x/xerrors"
1515

16+
"github.com/coder/coder/v2/coderd/coderdtest"
1617
"github.com/coder/coder/v2/coderd/database/dbtime"
18+
"github.com/coder/coder/v2/coderd/files"
1719
"github.com/coder/coder/v2/coderd/notifications"
1820
"github.com/coder/coder/v2/coderd/notifications/notificationstest"
1921
"github.com/coder/coder/v2/coderd/util/slice"
@@ -53,7 +55,8 @@ func TestNoReconciliationActionsIfNoPresets(t *testing.T) {
5355
ReconciliationInterval: serpent.Duration(testutil.WaitLong),
5456
}
5557
logger := testutil.Logger(t)
56-
controller := prebuilds.NewStoreReconciler(db, ps, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
58+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
59+
controller := prebuilds.NewStoreReconciler(db, ps, cache, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
5760

5861
// given a template version with no presets
5962
org := dbgen.Organization(t, db, database.Organization{})
@@ -98,7 +101,8 @@ func TestNoReconciliationActionsIfNoPrebuilds(t *testing.T) {
98101
ReconciliationInterval: serpent.Duration(testutil.WaitLong),
99102
}
100103
logger := testutil.Logger(t)
101-
controller := prebuilds.NewStoreReconciler(db, ps, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
104+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
105+
controller := prebuilds.NewStoreReconciler(db, ps, cache, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
102106

103107
// given there are presets, but no prebuilds
104108
org := dbgen.Organization(t, db, database.Organization{})
@@ -375,7 +379,8 @@ func TestPrebuildReconciliation(t *testing.T) {
375379
if useBrokenPubsub {
376380
pubSub = &brokenPublisher{Pubsub: pubSub}
377381
}
378-
controller := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
382+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
383+
controller := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
379384

380385
// Run the reconciliation multiple times to ensure idempotency
381386
// 8 was arbitrary, but large enough to reasonably trust the result
@@ -452,7 +457,8 @@ func TestMultiplePresetsPerTemplateVersion(t *testing.T) {
452457
t, &slogtest.Options{IgnoreErrors: true},
453458
).Leveled(slog.LevelDebug)
454459
db, pubSub := dbtestutil.NewDB(t)
455-
controller := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
460+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
461+
controller := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
456462

457463
ownerID := uuid.New()
458464
dbgen.User(t, db, database.User{
@@ -577,7 +583,8 @@ func TestPrebuildScheduling(t *testing.T) {
577583
t, &slogtest.Options{IgnoreErrors: true},
578584
).Leveled(slog.LevelDebug)
579585
db, pubSub := dbtestutil.NewDB(t)
580-
controller := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, clock, prometheus.NewRegistry(), newNoopEnqueuer())
586+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
587+
controller := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, clock, prometheus.NewRegistry(), newNoopEnqueuer())
581588

582589
ownerID := uuid.New()
583590
dbgen.User(t, db, database.User{
@@ -681,7 +688,8 @@ func TestInvalidPreset(t *testing.T) {
681688
t, &slogtest.Options{IgnoreErrors: true},
682689
).Leveled(slog.LevelDebug)
683690
db, pubSub := dbtestutil.NewDB(t)
684-
controller := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
691+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
692+
controller := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
685693

686694
ownerID := uuid.New()
687695
dbgen.User(t, db, database.User{
@@ -745,7 +753,8 @@ func TestDeletionOfPrebuiltWorkspaceWithInvalidPreset(t *testing.T) {
745753
t, &slogtest.Options{IgnoreErrors: true},
746754
).Leveled(slog.LevelDebug)
747755
db, pubSub := dbtestutil.NewDB(t)
748-
controller := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
756+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
757+
controller := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, quartz.NewMock(t), prometheus.NewRegistry(), newNoopEnqueuer())
749758

750759
ownerID := uuid.New()
751760
dbgen.User(t, db, database.User{
@@ -841,7 +850,8 @@ func TestSkippingHardLimitedPresets(t *testing.T) {
841850
db, pubSub := dbtestutil.NewDB(t)
842851
fakeEnqueuer := newFakeEnqueuer()
843852
registry := prometheus.NewRegistry()
844-
controller := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, clock, registry, fakeEnqueuer)
853+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
854+
controller := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, clock, registry, fakeEnqueuer)
845855

846856
// Template admin to receive a notification.
847857
templateAdmin := dbgen.User(t, db, database.User{
@@ -1003,7 +1013,8 @@ func TestHardLimitedPresetShouldNotBlockDeletion(t *testing.T) {
10031013
db, pubSub := dbtestutil.NewDB(t)
10041014
fakeEnqueuer := newFakeEnqueuer()
10051015
registry := prometheus.NewRegistry()
1006-
controller := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, clock, registry, fakeEnqueuer)
1016+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
1017+
controller := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, clock, registry, fakeEnqueuer)
10071018

10081019
// Template admin to receive a notification.
10091020
templateAdmin := dbgen.User(t, db, database.User{
@@ -1215,7 +1226,8 @@ func TestRunLoop(t *testing.T) {
12151226
t, &slogtest.Options{IgnoreErrors: true},
12161227
).Leveled(slog.LevelDebug)
12171228
db, pubSub := dbtestutil.NewDB(t)
1218-
reconciler := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, clock, prometheus.NewRegistry(), newNoopEnqueuer())
1229+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
1230+
reconciler := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, clock, prometheus.NewRegistry(), newNoopEnqueuer())
12191231

12201232
ownerID := uuid.New()
12211233
dbgen.User(t, db, database.User{
@@ -1345,7 +1357,8 @@ func TestFailedBuildBackoff(t *testing.T) {
13451357
t, &slogtest.Options{IgnoreErrors: true},
13461358
).Leveled(slog.LevelDebug)
13471359
db, ps := dbtestutil.NewDB(t)
1348-
reconciler := prebuilds.NewStoreReconciler(db, ps, cfg, logger, clock, prometheus.NewRegistry(), newNoopEnqueuer())
1360+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
1361+
reconciler := prebuilds.NewStoreReconciler(db, ps, cache, cfg, logger, clock, prometheus.NewRegistry(), newNoopEnqueuer())
13491362

13501363
// Given: an active template version with presets and prebuilds configured.
13511364
const desiredInstances = 2
@@ -1461,9 +1474,11 @@ func TestReconciliationLock(t *testing.T) {
14611474
wg.Add(1)
14621475
go func() {
14631476
defer wg.Done()
1477+
cache := files.NewFromStore(db, prometheus.NewRegistry(), &coderdtest.FakeAuthorizer{})
14641478
reconciler := prebuilds.NewStoreReconciler(
14651479
db,
14661480
ps,
1481+
cache,
14671482
codersdk.PrebuildsConfig{},
14681483
slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug),
14691484
quartz.NewMock(t),
@@ -1501,7 +1516,8 @@ func TestTrackResourceReplacement(t *testing.T) {
15011516

15021517
fakeEnqueuer := newFakeEnqueuer()
15031518
registry := prometheus.NewRegistry()
1504-
reconciler := prebuilds.NewStoreReconciler(db, ps, codersdk.PrebuildsConfig{}, logger, clock, registry, fakeEnqueuer)
1519+
cache := files.NewFromStore(db, registry, &coderdtest.FakeAuthorizer{})
1520+
reconciler := prebuilds.NewStoreReconciler(db, ps, cache, codersdk.PrebuildsConfig{}, logger, clock, registry, fakeEnqueuer)
15051521

15061522
// Given: a template admin to receive a notification.
15071523
templateAdmin := dbgen.User(t, db, database.User{
@@ -1656,7 +1672,8 @@ func TestExpiredPrebuildsMultipleActions(t *testing.T) {
16561672
db, pubSub := dbtestutil.NewDB(t)
16571673
fakeEnqueuer := newFakeEnqueuer()
16581674
registry := prometheus.NewRegistry()
1659-
controller := prebuilds.NewStoreReconciler(db, pubSub, cfg, logger, clock, registry, fakeEnqueuer)
1675+
cache := files.NewFromStore(db, registry, &coderdtest.FakeAuthorizer{})
1676+
controller := prebuilds.NewStoreReconciler(db, pubSub, cache, cfg, logger, clock, registry, fakeEnqueuer)
16601677

16611678
// Set up test environment with a template, version, and preset
16621679
ownerID := uuid.New()

0 commit comments

Comments
 (0)