MySQL · 2147 bytes Raw Blame History
1 -- SPDX-License-Identifier: AGPL-3.0-or-later
2 --
3 -- S41j runner pool operations: runner metadata plus explicit drain/revoke
4 -- state. Draining prevents new claims while allowing in-flight jobs to finish.
5 -- Revocation is a hard operator control: registration tokens no longer
6 -- authenticate and job API JWTs minted for that runner are rejected.
7
8 -- +goose Up
9
10 ALTER TABLE workflow_runners
11 ADD COLUMN host_name text NOT NULL DEFAULT '',
12 ADD COLUMN version text NOT NULL DEFAULT '',
13 ADD COLUMN draining_at timestamptz,
14 ADD COLUMN drain_reason text NOT NULL DEFAULT '',
15 ADD COLUMN revoked_at timestamptz,
16 ADD COLUMN revoked_reason text NOT NULL DEFAULT '',
17 ADD CONSTRAINT workflow_runners_host_name_length CHECK (char_length(host_name) <= 255),
18 ADD CONSTRAINT workflow_runners_version_length CHECK (char_length(version) <= 255),
19 ADD CONSTRAINT workflow_runners_drain_reason_length CHECK (char_length(drain_reason) <= 1000),
20 ADD CONSTRAINT workflow_runners_revoked_reason_length CHECK (char_length(revoked_reason) <= 1000);
21
22 CREATE INDEX workflow_runners_draining_idx
23 ON workflow_runners (draining_at)
24 WHERE draining_at IS NOT NULL AND revoked_at IS NULL;
25
26 CREATE INDEX workflow_runners_revoked_idx
27 ON workflow_runners (revoked_at)
28 WHERE revoked_at IS NOT NULL;
29
30 CREATE INDEX workflow_runners_claimable_idx
31 ON workflow_runners (status)
32 WHERE revoked_at IS NULL AND draining_at IS NULL;
33
34 -- +goose Down
35
36 DROP INDEX IF EXISTS workflow_runners_claimable_idx;
37 DROP INDEX IF EXISTS workflow_runners_revoked_idx;
38 DROP INDEX IF EXISTS workflow_runners_draining_idx;
39
40 ALTER TABLE workflow_runners
41 DROP CONSTRAINT IF EXISTS workflow_runners_revoked_reason_length,
42 DROP CONSTRAINT IF EXISTS workflow_runners_drain_reason_length,
43 DROP CONSTRAINT IF EXISTS workflow_runners_version_length,
44 DROP CONSTRAINT IF EXISTS workflow_runners_host_name_length,
45 DROP COLUMN IF EXISTS revoked_reason,
46 DROP COLUMN IF EXISTS revoked_at,
47 DROP COLUMN IF EXISTS drain_reason,
48 DROP COLUMN IF EXISTS draining_at,
49 DROP COLUMN IF EXISTS version,
50 DROP COLUMN IF EXISTS host_name;
51