From abc578bcefc41a9280ecd69f5cb2297357ea832d Mon Sep 17 00:00:00 2001 From: Danielle Maywood Date: Thu, 19 Dec 2024 23:07:17 +0000 Subject: [PATCH] fix: revert change to agpl --- coderd/schedule/template.go | 18 ---- coderd/schedule/template_test.go | 150 ------------------------------- 2 files changed, 168 deletions(-) delete mode 100644 coderd/schedule/template_test.go diff --git a/coderd/schedule/template.go b/coderd/schedule/template.go index ac7106af88173..a68cebd1fac93 100644 --- a/coderd/schedule/template.go +++ b/coderd/schedule/template.go @@ -2,7 +2,6 @@ package schedule import ( "context" - "database/sql" "time" "github.com/google/uuid" @@ -229,23 +228,6 @@ func (*agplTemplateScheduleStore) Set(ctx context.Context, db database.Store, tp return xerrors.Errorf("update template schedule: %w", err) } - // Users running the AGPL version are unable to customize their workspaces - // autostop, so we want to keep their workspaces in track with any template - // TTL changes. - if tpl.DefaultTTL != int64(opts.DefaultTTL) { - var ttl sql.NullInt64 - if opts.DefaultTTL != 0 { - ttl = sql.NullInt64{Valid: true, Int64: int64(opts.DefaultTTL)} - } - - if err = db.UpdateWorkspacesTTLByTemplateID(ctx, database.UpdateWorkspacesTTLByTemplateIDParams{ - TemplateID: tpl.ID, - Ttl: ttl, - }); err != nil { - return xerrors.Errorf("update workspace ttl by template id %q: %w", tpl.ID, err) - } - } - template, err = db.GetTemplateByID(ctx, tpl.ID) if err != nil { return xerrors.Errorf("fetch updated template: %w", err) diff --git a/coderd/schedule/template_test.go b/coderd/schedule/template_test.go deleted file mode 100644 index 7de7caa05c10f..0000000000000 --- a/coderd/schedule/template_test.go +++ /dev/null @@ -1,150 +0,0 @@ -package schedule_test - -import ( - "database/sql" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "github.com/coder/coder/v2/coderd/database" - "github.com/coder/coder/v2/coderd/database/dbgen" - "github.com/coder/coder/v2/coderd/database/dbtestutil" - "github.com/coder/coder/v2/coderd/database/dbtime" - "github.com/coder/coder/v2/coderd/schedule" - "github.com/coder/coder/v2/testutil" -) - -func TestTemplateTTL(t *testing.T) { - t.Parallel() - - tests := []struct { - name string - fromTTL time.Duration - toTTL time.Duration - expected sql.NullInt64 - }{ - { - name: "ModifyTTLDurationDown", - fromTTL: 24 * time.Hour, - toTTL: 1 * time.Hour, - expected: sql.NullInt64{Valid: true, Int64: int64(1 * time.Hour)}, - }, - { - name: "ModifyTTLDurationUp", - fromTTL: 24 * time.Hour, - toTTL: 36 * time.Hour, - expected: sql.NullInt64{Valid: true, Int64: int64(36 * time.Hour)}, - }, - { - name: "ModifyTTLDurationSame", - fromTTL: 24 * time.Hour, - toTTL: 24 * time.Hour, - expected: sql.NullInt64{Valid: true, Int64: int64(24 * time.Hour)}, - }, - { - name: "DisableTTL", - fromTTL: 24 * time.Hour, - toTTL: 0, - expected: sql.NullInt64{}, - }, - } - - for _, tt := range tests { - tt := tt - - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - - var ( - db, _ = dbtestutil.NewDB(t) - ctx = testutil.Context(t, testutil.WaitLong) - user = dbgen.User(t, db, database.User{}) - file = dbgen.File(t, db, database.File{CreatedBy: user.ID}) - // Create first template - templateJob = dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{ - FileID: file.ID, - InitiatorID: user.ID, - Tags: database.StringMap{"foo": "bar"}, - }) - templateVersion = dbgen.TemplateVersion(t, db, database.TemplateVersion{ - CreatedBy: user.ID, - JobID: templateJob.ID, - OrganizationID: templateJob.OrganizationID, - }) - template = dbgen.Template(t, db, database.Template{ - ActiveVersionID: templateVersion.ID, - CreatedBy: user.ID, - OrganizationID: templateJob.OrganizationID, - }) - // Create second template - otherTTL = tt.fromTTL + 6*time.Hour - otherTemplateJob = dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{ - FileID: file.ID, - InitiatorID: user.ID, - Tags: database.StringMap{"foo": "bar"}, - }) - otherTemplateVersion = dbgen.TemplateVersion(t, db, database.TemplateVersion{ - CreatedBy: user.ID, - JobID: otherTemplateJob.ID, - OrganizationID: otherTemplateJob.OrganizationID, - }) - otherTemplate = dbgen.Template(t, db, database.Template{ - ActiveVersionID: otherTemplateVersion.ID, - CreatedBy: user.ID, - OrganizationID: otherTemplateJob.OrganizationID, - }) - ) - - templateScheduleStore := schedule.NewAGPLTemplateScheduleStore() - - // Set both template's default TTL - template, err := templateScheduleStore.Set(ctx, db, template, schedule.TemplateScheduleOptions{ - DefaultTTL: tt.fromTTL, - }) - require.NoError(t, err) - otherTemplate, err = templateScheduleStore.Set(ctx, db, otherTemplate, schedule.TemplateScheduleOptions{ - DefaultTTL: otherTTL, - }) - require.NoError(t, err) - - // We create two workspaces here, one with the template we're modifying, the - // other with a different template. We want to ensure we only modify one - // of the workspaces. - workspace := dbgen.Workspace(t, db, database.WorkspaceTable{ - OwnerID: user.ID, - TemplateID: template.ID, - OrganizationID: templateJob.OrganizationID, - LastUsedAt: dbtime.Now(), - Ttl: sql.NullInt64{Valid: true, Int64: int64(tt.fromTTL)}, - }) - otherWorkspace := dbgen.Workspace(t, db, database.WorkspaceTable{ - OwnerID: user.ID, - TemplateID: otherTemplate.ID, - OrganizationID: otherTemplateJob.OrganizationID, - LastUsedAt: dbtime.Now(), - Ttl: sql.NullInt64{Valid: true, Int64: int64(otherTTL)}, - }) - - // Ensure the workspace's start with the correct TTLs - require.Equal(t, sql.NullInt64{Valid: true, Int64: int64(tt.fromTTL)}, workspace.Ttl) - require.Equal(t, sql.NullInt64{Valid: true, Int64: int64(otherTTL)}, otherWorkspace.Ttl) - - // Update _only_ the primary template's TTL - _, err = templateScheduleStore.Set(ctx, db, template, schedule.TemplateScheduleOptions{ - DefaultTTL: tt.toTTL, - }) - require.NoError(t, err) - - // Verify the primary workspace's TTL has been updated. - ws, err := db.GetWorkspaceByID(ctx, workspace.ID) - require.NoError(t, err) - require.Equal(t, tt.expected, ws.Ttl) - - // Verify that the other workspace's TTL has not been touched. - ws, err = db.GetWorkspaceByID(ctx, otherWorkspace.ID) - require.NoError(t, err) - require.Equal(t, sql.NullInt64{Valid: true, Int64: int64(otherTTL)}, ws.Ttl) - }) - } -}