mirror of https://github.com/coder/coder.git
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,
|
|
build_number integer NOT NULL,
|
|
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),
|
|
UNIQUE(workspace_id, build_number)
|
|
);
|