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

Commit30a924d

Browse files
feat: implement autoscaling mechanism for prebuilds
1 parente4648b6 commit30a924d

26 files changed

+1414
-809
lines changed

‎coderd/database/dbauthz/dbauthz.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2267,6 +2267,13 @@ func (q *querier) GetPresetParametersByTemplateVersionID(ctx context.Context, ar
22672267
returnq.db.GetPresetParametersByTemplateVersionID(ctx,args)
22682268
}
22692269

2270+
func (q*querier)GetPresetPrebuildSchedules(ctx context.Context) ([]database.TemplateVersionPresetPrebuildSchedule,error) {
2271+
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceTemplate.All());err!=nil {
2272+
returnnil,err
2273+
}
2274+
returnq.db.GetPresetPrebuildSchedules(ctx)
2275+
}
2276+
22702277
func (q*querier)GetPresetsAtFailureLimit(ctx context.Context,hardLimitint64) ([]database.GetPresetsAtFailureLimitRow,error) {
22712278
// GetPresetsAtFailureLimit returns a list of template version presets that have reached the hard failure limit.
22722279
// Request the same authorization permissions as GetPresetsBackoff, since the methods are similar.
@@ -3618,6 +3625,15 @@ func (q *querier) InsertPresetParameters(ctx context.Context, arg database.Inser
36183625
returnq.db.InsertPresetParameters(ctx,arg)
36193626
}
36203627

3628+
func (q*querier)InsertPresetPrebuildSchedule(ctx context.Context,arg database.InsertPresetPrebuildScheduleParams) ([]database.TemplateVersionPresetPrebuildSchedule,error) {
3629+
err:=q.authorizeContext(ctx,policy.ActionUpdate,rbac.ResourceTemplate)
3630+
iferr!=nil {
3631+
returnnil,err
3632+
}
3633+
3634+
returnq.db.InsertPresetPrebuildSchedule(ctx,arg)
3635+
}
3636+
36213637
func (q*querier)InsertProvisionerJob(ctx context.Context,arg database.InsertProvisionerJobParams) (database.ProvisionerJob,error) {
36223638
// TODO: Remove this once we have a proper rbac check for provisioner jobs.
36233639
// Details in https://github.com/coder/coder/issues/16160

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -979,6 +979,28 @@ func (s *MethodTestSuite) TestOrganization() {
979979
}
980980
check.Args(insertPresetParametersParams).Asserts(rbac.ResourceTemplate,policy.ActionUpdate)
981981
}))
982+
s.Run("InsertPresetPrebuildSchedule",s.Subtest(func(db database.Store,check*expects) {
983+
org:=dbgen.Organization(s.T(),db, database.Organization{})
984+
user:=dbgen.User(s.T(),db, database.User{})
985+
template:=dbgen.Template(s.T(),db, database.Template{
986+
CreatedBy:user.ID,
987+
OrganizationID:org.ID,
988+
})
989+
templateVersion:=dbgen.TemplateVersion(s.T(),db, database.TemplateVersion{
990+
TemplateID: uuid.NullUUID{UUID:template.ID,Valid:true},
991+
OrganizationID:org.ID,
992+
CreatedBy:user.ID,
993+
})
994+
insertPresetParams:= database.InsertPresetParams{
995+
TemplateVersionID:templateVersion.ID,
996+
Name:"test",
997+
}
998+
preset:=dbgen.Preset(s.T(),db,insertPresetParams)
999+
insertPresetPrebuildScheduleParams:= database.InsertPresetPrebuildScheduleParams{
1000+
PresetID:preset.ID,
1001+
}
1002+
check.Args(insertPresetPrebuildScheduleParams).Asserts(rbac.ResourceTemplate,policy.ActionUpdate)
1003+
}))
9821004
s.Run("DeleteOrganizationMember",s.Subtest(func(db database.Store,check*expects) {
9831005
o:=dbgen.Organization(s.T(),db, database.Organization{})
9841006
u:=dbgen.User(s.T(),db, database.User{})

‎coderd/database/dbmem/dbmem.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4369,6 +4369,10 @@ func (q *FakeQuerier) GetPresetParametersByTemplateVersionID(_ context.Context,
43694369
returnparameters,nil
43704370
}
43714371

4372+
func (q*FakeQuerier)GetPresetPrebuildSchedules(ctx context.Context) ([]database.TemplateVersionPresetPrebuildSchedule,error) {
4373+
panic("not implemented")
4374+
}
4375+
43724376
func (q*FakeQuerier)GetPresetsAtFailureLimit(ctx context.Context,hardLimitint64) ([]database.GetPresetsAtFailureLimitRow,error) {
43734377
returnnil,ErrUnimplemented
43744378
}
@@ -9156,6 +9160,15 @@ func (q *FakeQuerier) InsertPresetParameters(_ context.Context, arg database.Ins
91569160
returnpresetParameters,nil
91579161
}
91589162

9163+
func (q*FakeQuerier)InsertPresetPrebuildSchedule(ctx context.Context,arg database.InsertPresetPrebuildScheduleParams) ([]database.TemplateVersionPresetPrebuildSchedule,error) {
9164+
err:=validateDatabaseType(arg)
9165+
iferr!=nil {
9166+
returnnil,err
9167+
}
9168+
9169+
panic("not implemented")
9170+
}
9171+
91599172
func (q*FakeQuerier)InsertProvisionerJob(_ context.Context,arg database.InsertProvisionerJobParams) (database.ProvisionerJob,error) {
91609173
iferr:=validateDatabaseType(arg);err!=nil {
91619174
return database.ProvisionerJob{},err

‎coderd/database/dbmetrics/querymetrics.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbmock/dbmock.go

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dump.sql

Lines changed: 16 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/foreign_key_constraint.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-- Drop the autoscaling schedules table
2+
DROPTABLE template_version_preset_prebuild_schedules;
3+
4+
-- Remove added columns from template_version_presets table
5+
ALTERTABLE template_version_presets
6+
DROP COLUMN autoscaling_enabled,
7+
DROP COLUMN autoscaling_timezone;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-- Add new columns to template_version_presets table
2+
ALTERTABLE template_version_presets
3+
ADD COLUMN autoscaling_enabledBOOLEAN DEFAULT falseNOT NULL,-- Do we need it?
4+
ADD COLUMN autoscaling_timezoneTEXT DEFAULT'UTC'NOT NULL;
5+
6+
-- New table for autoscaling schedules
7+
CREATETABLEtemplate_version_preset_prebuild_schedules (
8+
id UUIDPRIMARY KEY DEFAULT gen_random_uuid()NOT NULL,
9+
preset_id UUIDNOT NULL,
10+
cron_expressionTEXTNOT NULL,
11+
instancesINTEGERNOT NULL,
12+
FOREIGN KEY (preset_id)REFERENCES template_version_presets (id)ON DELETE CASCADE
13+
);

‎coderd/database/models.go

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/querier.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp