mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
If a workspace is started multiple times, resources may not be invalidated. This means an auth token can be reused for a workspace. coderd closes old agent connections, so this is expected behavior, and the agent will reconnect properly.
179 lines
5.6 KiB
SQL
179 lines
5.6 KiB
SQL
CREATE TABLE IF NOT EXISTS provisioner_daemons (
|
|
id uuid NOT NULL,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz,
|
|
organization_id uuid,
|
|
-- Name is generated for ease of differentiation.
|
|
-- eg. WowBananas16
|
|
name varchar(64) NOT NULL UNIQUE,
|
|
provisioners provisioner_type [ ] NOT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TYPE provisioner_job_type AS ENUM (
|
|
'template_version_import',
|
|
'workspace_build'
|
|
);
|
|
|
|
CREATE TYPE provisioner_storage_method AS ENUM ('file');
|
|
|
|
CREATE TABLE IF NOT EXISTS provisioner_jobs (
|
|
id uuid NOT NULL,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz NOT NULL,
|
|
started_at timestamptz,
|
|
canceled_at timestamptz,
|
|
completed_at timestamptz,
|
|
error text,
|
|
organization_id uuid NOT NULL REFERENCES organizations (id) ON DELETE CASCADE,
|
|
-- foreign key?
|
|
initiator_id uuid NOT NULL,
|
|
provisioner provisioner_type NOT NULL,
|
|
storage_method provisioner_storage_method NOT NULL,
|
|
storage_source text NOT NULL,
|
|
type provisioner_job_type NOT NULL,
|
|
input jsonb NOT NULL,
|
|
worker_id uuid,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TYPE log_level AS ENUM (
|
|
'trace',
|
|
'debug',
|
|
'info',
|
|
'warn',
|
|
'error'
|
|
);
|
|
|
|
CREATE TYPE log_source AS ENUM (
|
|
'provisioner_daemon',
|
|
'provisioner'
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS provisioner_job_logs (
|
|
id uuid NOT NULL,
|
|
job_id uuid NOT NULL REFERENCES provisioner_jobs (id) ON DELETE CASCADE,
|
|
created_at timestamptz NOT NULL,
|
|
source log_source NOT NULL,
|
|
level log_level NOT NULL,
|
|
stage varchar(128) NOT NULL,
|
|
output varchar(1024) NOT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE workspace_resources (
|
|
id uuid NOT NULL,
|
|
created_at timestamptz NOT NULL,
|
|
job_id uuid NOT NULL REFERENCES provisioner_jobs (id) ON DELETE CASCADE,
|
|
transition workspace_transition NOT NULL,
|
|
type varchar(192) NOT NULL,
|
|
name varchar(64) NOT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TABLE workspace_agents (
|
|
id uuid NOT NULL,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz NOT NULL,
|
|
name varchar(64) NOT NULL,
|
|
first_connected_at timestamptz,
|
|
last_connected_at timestamptz,
|
|
disconnected_at timestamptz,
|
|
resource_id uuid NOT NULL REFERENCES workspace_resources (id) ON DELETE CASCADE,
|
|
auth_token uuid NOT NULL,
|
|
auth_instance_id varchar(64),
|
|
architecture varchar(64) NOT NULL,
|
|
environment_variables jsonb,
|
|
operating_system varchar(64) NOT NULL,
|
|
startup_script varchar(65534),
|
|
instance_metadata jsonb,
|
|
resource_metadata jsonb,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
CREATE TYPE parameter_scope AS ENUM (
|
|
'organization',
|
|
'template',
|
|
'import_job',
|
|
'user',
|
|
'workspace'
|
|
);
|
|
|
|
-- Types of parameters the automator supports.
|
|
CREATE TYPE parameter_type_system AS ENUM ('none', 'hcl');
|
|
|
|
-- Supported schemes for a parameter source.
|
|
CREATE TYPE parameter_source_scheme AS ENUM('none', 'data');
|
|
|
|
-- Supported schemes for a parameter destination.
|
|
CREATE TYPE parameter_destination_scheme AS ENUM('none', 'environment_variable', 'provisioner_variable');
|
|
|
|
-- Stores template version parameters parsed on import.
|
|
-- No secrets are stored here.
|
|
--
|
|
-- All parameter validation occurs server-side to process
|
|
-- complex validations.
|
|
--
|
|
-- Parameter types, description, and validation will produce
|
|
-- a UI for users to enter values.
|
|
-- Needs to be made consistent with the examples below.
|
|
CREATE TABLE parameter_schemas (
|
|
id uuid NOT NULL,
|
|
created_at timestamptz NOT NULL,
|
|
job_id uuid NOT NULL REFERENCES provisioner_jobs (id) ON DELETE CASCADE,
|
|
name varchar(64) NOT NULL,
|
|
description varchar(8192) NOT NULL DEFAULT '',
|
|
default_source_scheme parameter_source_scheme,
|
|
default_source_value text NOT NULL,
|
|
-- Allows the user to override the source.
|
|
allow_override_source boolean NOT null,
|
|
default_destination_scheme parameter_destination_scheme,
|
|
-- Allows the user to override the destination.
|
|
allow_override_destination boolean NOT null,
|
|
default_refresh text NOT NULL,
|
|
-- Whether the consumer can view the source and destinations.
|
|
redisplay_value boolean NOT null,
|
|
-- This error would appear in the UI if the condition is not met.
|
|
validation_error varchar(256) NOT NULL,
|
|
validation_condition varchar(512) NOT NULL,
|
|
validation_type_system parameter_type_system NOT NULL,
|
|
validation_value_type varchar(64) NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE(job_id, name)
|
|
);
|
|
|
|
-- Parameters are provided to jobs for provisioning and to workspaces.
|
|
CREATE TABLE parameter_values (
|
|
id uuid NOT NULL,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz NOT NULL,
|
|
scope parameter_scope NOT NULL,
|
|
scope_id uuid NOT NULL,
|
|
name varchar(64) NOT NULL,
|
|
source_scheme parameter_source_scheme NOT NULL,
|
|
source_value text NOT NULL,
|
|
destination_scheme parameter_destination_scheme NOT NULL,
|
|
PRIMARY KEY (id),
|
|
-- Prevents duplicates for parameters in the same scope.
|
|
UNIQUE(scope_id, name)
|
|
);
|
|
|
|
CREATE TABLE workspace_builds (
|
|
id uuid NOT NULL,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz NOT NULL,
|
|
workspace_id uuid NOT NULL REFERENCES workspaces (id) ON DELETE CASCADE,
|
|
template_version_id uuid NOT NULL REFERENCES template_versions (id) ON DELETE CASCADE,
|
|
name varchar(64) NOT NULL,
|
|
before_id uuid,
|
|
after_id uuid,
|
|
transition workspace_transition NOT NULL,
|
|
initiator_id uuid NOT NULL,
|
|
-- State stored by the provisioner
|
|
provisioner_state bytea,
|
|
-- Job ID of the action
|
|
job_id uuid NOT NULL UNIQUE REFERENCES provisioner_jobs (id) ON DELETE CASCADE,
|
|
PRIMARY KEY (id),
|
|
UNIQUE(workspace_id, name)
|
|
);
|