Skip to content

Commit 5d99ef1

Browse files
refactor: add logger to preset-snapshot
1 parent 1e78317 commit 5d99ef1

File tree

4 files changed

+68
-25
lines changed

4 files changed

+68
-25
lines changed

coderd/prebuilds/global_snapshot.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package prebuilds
33
import (
44
"time"
55

6+
"cdr.dev/slog"
67
"github.com/google/uuid"
78
"golang.org/x/xerrors"
89

@@ -21,6 +22,7 @@ type GlobalSnapshot struct {
2122
Backoffs []database.GetPresetsBackoffRow
2223
HardLimitedPresetsMap map[uuid.UUID]database.GetPresetsAtFailureLimitRow
2324
clock quartz.Clock
25+
logger slog.Logger
2426
}
2527

2628
func NewGlobalSnapshot(
@@ -31,6 +33,7 @@ func NewGlobalSnapshot(
3133
backoffs []database.GetPresetsBackoffRow,
3234
hardLimitedPresets []database.GetPresetsAtFailureLimitRow,
3335
clock quartz.Clock,
36+
logger slog.Logger,
3437
) GlobalSnapshot {
3538
hardLimitedPresetsMap := make(map[uuid.UUID]database.GetPresetsAtFailureLimitRow, len(hardLimitedPresets))
3639
for _, preset := range hardLimitedPresets {
@@ -45,6 +48,7 @@ func NewGlobalSnapshot(
4548
Backoffs: backoffs,
4649
HardLimitedPresetsMap: hardLimitedPresetsMap,
4750
clock: clock,
51+
logger: logger,
4852
}
4953
}
5054

@@ -85,16 +89,19 @@ func (s GlobalSnapshot) FilterByPreset(presetID uuid.UUID) (*PresetSnapshot, err
8589

8690
_, isHardLimited := s.HardLimitedPresetsMap[preset.ID]
8791

88-
return &PresetSnapshot{
89-
Preset: preset,
90-
PrebuildSchedules: prebuildSchedules,
91-
Running: nonExpired,
92-
Expired: expired,
93-
InProgress: inProgress,
94-
Backoff: backoffPtr,
95-
IsHardLimited: isHardLimited,
96-
clock: s.clock,
97-
}, nil
92+
presetSnapshot := NewPresetSnapshot(
93+
preset,
94+
prebuildSchedules,
95+
nonExpired,
96+
expired,
97+
inProgress,
98+
backoffPtr,
99+
isHardLimited,
100+
s.clock,
101+
s.logger,
102+
)
103+
104+
return &presetSnapshot, nil
98105
}
99106

100107
func (s GlobalSnapshot) IsHardLimited(presetID uuid.UUID) bool {

coderd/prebuilds/preset_snapshot.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"slices"
66
"time"
77

8+
"cdr.dev/slog"
89
"github.com/google/uuid"
910
"golang.org/x/xerrors"
1011

@@ -47,6 +48,31 @@ type PresetSnapshot struct {
4748
Backoff *database.GetPresetsBackoffRow
4849
IsHardLimited bool
4950
clock quartz.Clock
51+
logger slog.Logger
52+
}
53+
54+
func NewPresetSnapshot(
55+
preset database.GetTemplatePresetsWithPrebuildsRow,
56+
prebuildSchedules []database.TemplateVersionPresetPrebuildSchedule,
57+
running []database.GetRunningPrebuiltWorkspacesRow,
58+
expired []database.GetRunningPrebuiltWorkspacesRow,
59+
inProgress []database.CountInProgressPrebuildsRow,
60+
backoff *database.GetPresetsBackoffRow,
61+
isHardLimited bool,
62+
clock quartz.Clock,
63+
logger slog.Logger,
64+
) PresetSnapshot {
65+
return PresetSnapshot{
66+
Preset: preset,
67+
PrebuildSchedules: prebuildSchedules,
68+
Running: running,
69+
Expired: expired,
70+
InProgress: inProgress,
71+
Backoff: backoff,
72+
IsHardLimited: isHardLimited,
73+
clock: clock,
74+
logger: logger,
75+
}
5076
}
5177

5278
// ReconciliationState represents the processed state of a preset's prebuilds,

coderd/prebuilds/preset_snapshot_test.go

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"testing"
77
"time"
88

9+
"github.com/coder/coder/v2/testutil"
10+
911
"github.com/google/uuid"
1012
"github.com/stretchr/testify/assert"
1113
"github.com/stretchr/testify/require"
@@ -84,7 +86,7 @@ func TestNoPrebuilds(t *testing.T) {
8486
preset(true, 0, current),
8587
}
8688

87-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, nil, nil, nil, nil, quartz.NewMock(t))
89+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, nil, nil, nil, nil, quartz.NewMock(t), testutil.Logger(t))
8890
ps, err := snapshot.FilterByPreset(current.presetID)
8991
require.NoError(t, err)
9092

@@ -107,7 +109,7 @@ func TestNetNew(t *testing.T) {
107109
preset(true, 1, current),
108110
}
109111

110-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, nil, nil, nil, nil, quartz.NewMock(t))
112+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, nil, nil, nil, nil, quartz.NewMock(t), testutil.Logger(t))
111113
ps, err := snapshot.FilterByPreset(current.presetID)
112114
require.NoError(t, err)
113115

@@ -150,7 +152,7 @@ func TestOutdatedPrebuilds(t *testing.T) {
150152
var inProgress []database.CountInProgressPrebuildsRow
151153

152154
// WHEN: calculating the outdated preset's state.
153-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t))
155+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t), testutil.Logger(t))
154156
ps, err := snapshot.FilterByPreset(outdated.presetID)
155157
require.NoError(t, err)
156158

@@ -218,7 +220,7 @@ func TestDeleteOutdatedPrebuilds(t *testing.T) {
218220
}
219221

220222
// WHEN: calculating the outdated preset's state.
221-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t))
223+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t), testutil.Logger(t))
222224
ps, err := snapshot.FilterByPreset(outdated.presetID)
223225
require.NoError(t, err)
224226

@@ -464,7 +466,7 @@ func TestInProgressActions(t *testing.T) {
464466
}
465467

466468
// WHEN: calculating the current preset's state.
467-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t))
469+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t), testutil.Logger(t))
468470
ps, err := snapshot.FilterByPreset(current.presetID)
469471
require.NoError(t, err)
470472

@@ -508,7 +510,7 @@ func TestExtraneous(t *testing.T) {
508510
var inProgress []database.CountInProgressPrebuildsRow
509511

510512
// WHEN: calculating the current preset's state.
511-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t))
513+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t), testutil.Logger(t))
512514
ps, err := snapshot.FilterByPreset(current.presetID)
513515
require.NoError(t, err)
514516

@@ -690,7 +692,7 @@ func TestExpiredPrebuilds(t *testing.T) {
690692
}
691693

692694
// WHEN: calculating the current preset's state.
693-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, nil, nil, nil, quartz.NewMock(t))
695+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, nil, nil, nil, quartz.NewMock(t), testutil.Logger(t))
694696
ps, err := snapshot.FilterByPreset(current.presetID)
695697
require.NoError(t, err)
696698

@@ -727,7 +729,7 @@ func TestDeprecated(t *testing.T) {
727729
var inProgress []database.CountInProgressPrebuildsRow
728730

729731
// WHEN: calculating the current preset's state.
730-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t))
732+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, nil, nil, quartz.NewMock(t), testutil.Logger(t))
731733
ps, err := snapshot.FilterByPreset(current.presetID)
732734
require.NoError(t, err)
733735

@@ -781,7 +783,7 @@ func TestLatestBuildFailed(t *testing.T) {
781783
}
782784

783785
// WHEN: calculating the current preset's state.
784-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, backoffs, nil, quartz.NewMock(t))
786+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, running, inProgress, backoffs, nil, quartz.NewMock(t), testutil.Logger(t))
785787
psCurrent, err := snapshot.FilterByPreset(current.presetID)
786788
require.NoError(t, err)
787789

@@ -877,7 +879,7 @@ func TestMultiplePresetsPerTemplateVersion(t *testing.T) {
877879
},
878880
}
879881

880-
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, nil, inProgress, nil, nil, quartz.NewMock(t))
882+
snapshot := prebuilds.NewGlobalSnapshot(presets, nil, nil, inProgress, nil, nil, quartz.NewMock(t), testutil.Logger(t))
881883

882884
// Nothing has to be created for preset 1.
883885
{
@@ -999,7 +1001,7 @@ func TestPrebuildAutoscaling(t *testing.T) {
9991001
schedule(presets[1].ID, "* 14-16 * * 1-5", 5),
10001002
}
10011003

1002-
snapshot := prebuilds.NewGlobalSnapshot(presets, schedules, nil, nil, nil, nil, clock)
1004+
snapshot := prebuilds.NewGlobalSnapshot(presets, schedules, nil, nil, nil, nil, clock, testutil.Logger(t))
10031005

10041006
// Check 1st preset.
10051007
{
@@ -1103,10 +1105,17 @@ func TestCalculateDesiredInstances(t *testing.T) {
11031105
}
11041106
}
11051107
mkSnapshot := func(preset database.GetTemplatePresetsWithPrebuildsRow, schedules ...database.TemplateVersionPresetPrebuildSchedule) prebuilds.PresetSnapshot {
1106-
return prebuilds.PresetSnapshot{
1107-
Preset: preset,
1108-
PrebuildSchedules: schedules,
1109-
}
1108+
return prebuilds.NewPresetSnapshot(
1109+
preset,
1110+
schedules,
1111+
nil,
1112+
nil,
1113+
nil,
1114+
nil,
1115+
false,
1116+
quartz.NewMock(t),
1117+
testutil.Logger(t),
1118+
)
11101119
}
11111120

11121121
testCases := []struct {

enterprise/coderd/prebuilds/reconcile.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,7 @@ func (c *StoreReconciler) SnapshotState(ctx context.Context, store database.Stor
399399
presetsBackoff,
400400
hardLimitedPresets,
401401
c.clock,
402+
c.logger,
402403
)
403404
return nil
404405
}, &database.TxOptions{

0 commit comments

Comments
 (0)