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

Commitda5d5ba

Browse files
fix: implement prebuild schedules methods for dbmem (#18469)
Follow-up to#18126
1 parent4ceb549 commitda5d5ba

File tree

2 files changed

+51
-6
lines changed

2 files changed

+51
-6
lines changed

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -999,8 +999,7 @@ func (s *MethodTestSuite) TestOrganization() {
999999
PresetID:preset.ID,
10001000
}
10011001
check.Args(arg).
1002-
Asserts(rbac.ResourceTemplate,policy.ActionUpdate).
1003-
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
1002+
Asserts(rbac.ResourceTemplate,policy.ActionUpdate)
10041003
}))
10051004
s.Run("DeleteOrganizationMember",s.Subtest(func(db database.Store,check*expects) {
10061005
o:=dbgen.Organization(s.T(),db, database.Organization{})
@@ -4942,8 +4941,7 @@ func (s *MethodTestSuite) TestPrebuilds() {
49424941
s.Run("GetActivePresetPrebuildSchedules",s.Subtest(func(db database.Store,check*expects) {
49434942
check.Args().
49444943
Asserts(rbac.ResourceTemplate.All(),policy.ActionRead).
4945-
Returns([]database.TemplateVersionPresetPrebuildSchedule{}).
4946-
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
4944+
Returns([]database.TemplateVersionPresetPrebuildSchedule{})
49474945
}))
49484946
s.Run("GetPresetsByTemplateVersionID",s.Subtest(func(db database.Store,check*expects) {
49494947
ctx:=context.Background()

‎coderd/database/dbmem/dbmem.go

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ func New() database.Store {
7575
parameterSchemas:make([]database.ParameterSchema,0),
7676
presets:make([]database.TemplateVersionPreset,0),
7777
presetParameters:make([]database.TemplateVersionPresetParameter,0),
78+
presetPrebuildSchedules:make([]database.TemplateVersionPresetPrebuildSchedule,0),
7879
provisionerDaemons:make([]database.ProvisionerDaemon,0),
7980
provisionerJobs:make([]database.ProvisionerJob,0),
8081
provisionerJobLogs:make([]database.ProvisionerJobLog,0),
@@ -299,6 +300,7 @@ type data struct {
299300
telemetryItems []database.TelemetryItem
300301
presets []database.TemplateVersionPreset
301302
presetParameters []database.TemplateVersionPresetParameter
303+
presetPrebuildSchedules []database.TemplateVersionPresetPrebuildSchedule
302304
}
303305

304306
functryPercentileCont(fs []float64,pfloat64)float64 {
@@ -2779,7 +2781,42 @@ func (q *FakeQuerier) GetAPIKeysLastUsedAfter(_ context.Context, after time.Time
27792781
}
27802782

27812783
func (q*FakeQuerier)GetActivePresetPrebuildSchedules(ctx context.Context) ([]database.TemplateVersionPresetPrebuildSchedule,error) {
2782-
returnnil,ErrUnimplemented
2784+
q.mutex.RLock()
2785+
deferq.mutex.RUnlock()
2786+
2787+
varactiveSchedules []database.TemplateVersionPresetPrebuildSchedule
2788+
2789+
// Create a map of active template version IDs for quick lookup
2790+
activeTemplateVersions:=make(map[uuid.UUID]bool)
2791+
for_,template:=rangeq.templates {
2792+
if!template.Deleted&&template.Deprecated=="" {
2793+
activeTemplateVersions[template.ActiveVersionID]=true
2794+
}
2795+
}
2796+
2797+
// Create a map of presets for quick lookup
2798+
presetMap:=make(map[uuid.UUID]database.TemplateVersionPreset)
2799+
for_,preset:=rangeq.presets {
2800+
presetMap[preset.ID]=preset
2801+
}
2802+
2803+
// Filter preset prebuild schedules to only include those for active template versions
2804+
for_,schedule:=rangeq.presetPrebuildSchedules {
2805+
// Look up the preset using the map
2806+
preset,exists:=presetMap[schedule.PresetID]
2807+
if!exists {
2808+
continue
2809+
}
2810+
2811+
// Check if preset's template version is active
2812+
if!activeTemplateVersions[preset.TemplateVersionID] {
2813+
continue
2814+
}
2815+
2816+
activeSchedules=append(activeSchedules,schedule)
2817+
}
2818+
2819+
returnactiveSchedules,nil
27832820
}
27842821

27852822
// nolint:revive // It's not a control flag, it's a filter.
@@ -9201,7 +9238,17 @@ func (q *FakeQuerier) InsertPresetPrebuildSchedule(ctx context.Context, arg data
92019238
return database.TemplateVersionPresetPrebuildSchedule{},err
92029239
}
92039240

9204-
return database.TemplateVersionPresetPrebuildSchedule{},ErrUnimplemented
9241+
q.mutex.Lock()
9242+
deferq.mutex.Unlock()
9243+
9244+
presetPrebuildSchedule:= database.TemplateVersionPresetPrebuildSchedule{
9245+
ID:uuid.New(),
9246+
PresetID:arg.PresetID,
9247+
CronExpression:arg.CronExpression,
9248+
DesiredInstances:arg.DesiredInstances,
9249+
}
9250+
q.presetPrebuildSchedules=append(q.presetPrebuildSchedules,presetPrebuildSchedule)
9251+
returnpresetPrebuildSchedule,nil
92059252
}
92069253

92079254
func (q*FakeQuerier)InsertProvisionerJob(_ context.Context,arg database.InsertProvisionerJobParams) (database.ProvisionerJob,error) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp