Skip to content

Commit 5b0e6bf

Browse files
authored
feat(coderd/database): add api_version to provisioner_daemons table (#11204)
Adds column api_version to the provisioner_daemons table. This is distinct from the coderd version, and is used to handle breaking changes in the provisioner daemon API.
1 parent b779655 commit 5b0e6bf

7 files changed

+38
-10
lines changed

coderd/database/dbpurge/dbpurge_test.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
217217
Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization},
218218
CreatedAt: now.Add(-14 * 24 * time.Hour),
219219
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-7 * 24 * time.Hour).Add(time.Minute)},
220+
Version: "1.0.0",
221+
APIVersion: "1.0",
220222
})
221223
require.NoError(t, err)
222224
_, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{
@@ -226,6 +228,8 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
226228
Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization},
227229
CreatedAt: now.Add(-8 * 24 * time.Hour),
228230
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-8 * 24 * time.Hour).Add(time.Hour)},
231+
Version: "1.0.0",
232+
APIVersion: "1.0",
229233
})
230234
require.NoError(t, err)
231235
_, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{
@@ -236,7 +240,9 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
236240
provisionersdk.TagScope: provisionersdk.ScopeUser,
237241
provisionersdk.TagOwner: uuid.NewString(),
238242
},
239-
CreatedAt: now.Add(-9 * 24 * time.Hour),
243+
CreatedAt: now.Add(-9 * 24 * time.Hour),
244+
Version: "1.0.0",
245+
APIVersion: "1.0",
240246
})
241247
require.NoError(t, err)
242248
_, err = db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{
@@ -249,6 +255,8 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
249255
},
250256
CreatedAt: now.Add(-6 * 24 * time.Hour),
251257
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-6 * 24 * time.Hour)},
258+
Version: "1.0.0",
259+
APIVersion: "1.0",
252260
})
253261
require.NoError(t, err)
254262

coderd/database/dump.sql

+4-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE ONLY provisioner_daemons
2+
DROP COLUMN api_version;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ALTER TABLE ONLY provisioner_daemons
2+
ADD COLUMN api_version text NOT NULL DEFAULT '1.0';
3+
COMMENT ON COLUMN provisioner_daemons.api_version IS 'The API version of the provisioner daemon';

coderd/database/models.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

+12-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/provisionerdaemons.sql

+6-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ INSERT INTO
2323
provisioners,
2424
tags,
2525
last_seen_at,
26-
"version"
26+
"version",
27+
api_version
2728
)
2829
VALUES (
2930
gen_random_uuid(),
@@ -32,12 +33,14 @@ VALUES (
3233
@provisioners,
3334
@tags,
3435
@last_seen_at,
35-
@version
36+
@version,
37+
@api_version
3638
) ON CONFLICT("name", lower((tags ->> 'owner'::text))) DO UPDATE SET
3739
provisioners = @provisioners,
3840
tags = @tags,
3941
last_seen_at = @last_seen_at,
40-
"version" = @version
42+
"version" = @version,
43+
api_version = @api_version
4144
WHERE
4245
-- Only ones with the same tags are allowed clobber
4346
provisioner_daemons.tags <@ @tags :: jsonb

0 commit comments

Comments
 (0)