Skip to content

Commit ff0e813

Browse files
feat: implement autoscaling mechanism for prebuilds
1 parent e4648b6 commit ff0e813

File tree

19 files changed

+1212
-789
lines changed

19 files changed

+1212
-789
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,6 +1104,10 @@ func (q *querier) customRoleCheck(ctx context.Context, role database.CustomRole)
11041104
return nil
11051105
}
11061106

1107+
func (q *querier) InsertPresetPrebuildSchedules(ctx context.Context, arg database.InsertPresetPrebuildSchedulesParams) ([]database.TemplateVersionPresetPrebuildSchedule, error) {
1108+
panic("not implemented")
1109+
}
1110+
11071111
func (q *querier) AcquireLock(ctx context.Context, id int64) error {
11081112
return q.db.AcquireLock(ctx, id)
11091113
}
@@ -3618,6 +3622,10 @@ func (q *querier) InsertPresetParameters(ctx context.Context, arg database.Inser
36183622
return q.db.InsertPresetParameters(ctx, arg)
36193623
}
36203624

3625+
func (q *querier) InsertPresetPrebuildSchedule(ctx context.Context, arg database.InsertPresetPrebuildScheduleParams) ([]database.TemplateVersionPresetPrebuildSchedule, error) {
3626+
panic("not implemented")
3627+
}
3628+
36213629
func (q *querier) InsertProvisionerJob(ctx context.Context, arg database.InsertProvisionerJobParams) (database.ProvisionerJob, error) {
36223630
// TODO: Remove this once we have a proper rbac check for provisioner jobs.
36233631
// Details in https://github.com/coder/coder/issues/16160

coderd/database/dbmem/dbmem.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9156,6 +9156,15 @@ func (q *FakeQuerier) InsertPresetParameters(_ context.Context, arg database.Ins
91569156
return presetParameters, nil
91579157
}
91589158

9159+
func (q *FakeQuerier) InsertPresetPrebuildSchedule(ctx context.Context, arg database.InsertPresetPrebuildScheduleParams) ([]database.TemplateVersionPresetPrebuildSchedule, error) {
9160+
err := validateDatabaseType(arg)
9161+
if err != nil {
9162+
return nil, err
9163+
}
9164+
9165+
panic("not implemented")
9166+
}
9167+
91599168
func (q *FakeQuerier) InsertProvisionerJob(_ context.Context, arg database.InsertProvisionerJobParams) (database.ProvisionerJob, error) {
91609169
if err := validateDatabaseType(arg); err != nil {
91619170
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 about customizing 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 about customizing 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 about customizing how changed files appear on GitHub.

coderd/database/migrations/000334_add_autoscaling_to_presets.down.sql

Whitespace-only changes.
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+
ALTER TABLE template_version_presets
3+
ADD COLUMN autoscaling_enabled BOOLEAN DEFAULT false NOT NULL, -- Do we need it?
4+
ADD COLUMN autoscaling_timezone TEXT DEFAULT 'UTC' NOT NULL;
5+
6+
-- New table for autoscaling schedules
7+
CREATE TABLE template_version_preset_prebuild_schedules (
8+
id UUID PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
9+
preset_id UUID NOT NULL,
10+
cron_expression TEXT NOT NULL,
11+
instances INTEGER NOT 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 about customizing how changed files appear on GitHub.

coderd/database/querier.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 71 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/presets.sql

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@ INSERT INTO template_version_presets (
55
name,
66
created_at,
77
desired_instances,
8-
invalidate_after_secs
8+
invalidate_after_secs,
9+
autoscaling_enabled,
10+
autoscaling_timezone
911
)
1012
VALUES (
1113
@id,
1214
@template_version_id,
1315
@name,
1416
@created_at,
1517
@desired_instances,
16-
@invalidate_after_secs
18+
@invalidate_after_secs,
19+
@autoscaling_enabled,
20+
@autoscaling_timezone
1721
) RETURNING *;
1822

1923
-- name: InsertPresetParameters :many
@@ -25,6 +29,18 @@ SELECT
2529
unnest(@values :: TEXT[])
2630
RETURNING *;
2731

32+
-- name: InsertPresetPrebuildSchedule :many
33+
INSERT INTO template_version_preset_prebuild_schedules (
34+
preset_id,
35+
cron_expression,
36+
instances
37+
)
38+
VALUES (
39+
@preset_id,
40+
@cron_expression,
41+
@instances
42+
) RETURNING *;
43+
2844
-- name: UpdatePresetPrebuildStatus :exec
2945
UPDATE template_version_presets
3046
SET prebuild_status = @status

coderd/database/unique_constraint.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)