You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.9 KiB
63 lines
1.9 KiB
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; |
|
CREATE TYPE JobType AS ENUM ('shell', 'init', 'python'); |
|
CREATE TYPE JobState AS ENUM ('queued', 'running', 'finished'); |
|
CREATE TYPE AgentState AS ENUM ('new', 'active', 'banned'); |
|
|
|
CREATE TABLE IF NOT EXISTS agents ( |
|
alias TEXT |
|
, hostname TEXT NOT NULL |
|
, id UUID NOT NULL DEFAULT uuid_generate_v4() |
|
, ip_gray TEXT |
|
, ip_white TEXT |
|
, is_root BOOLEAN NOT NULL DEFAULT false |
|
, is_root_allowed BOOLEAN NOT NULL DEFAULT false |
|
, last_active TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP |
|
-- target triplet |
|
, platform TEXT NOT NULL |
|
, regtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP |
|
, state AgentState NOT NULL DEFAULT 'new' |
|
-- is needed to processing requests |
|
, token TEXT |
|
, username TEXT NOT NULL |
|
|
|
, PRIMARY KEY(id) |
|
); |
|
|
|
CREATE TABLE IF NOT EXISTS jobs ( |
|
alias TEXT |
|
, argv TEXT NOT NULL |
|
, id UUID NOT NULL DEFAULT uuid_generate_v4() |
|
, exec_type JobType NOT NULL DEFAULT 'shell' |
|
, platform TEXT NOT NULL |
|
, payload BYTEA |
|
, payload_path TEXT |
|
, schedule TEXT |
|
|
|
, PRIMARY KEY(id) |
|
); |
|
|
|
CREATE TABLE IF NOT EXISTS results ( |
|
agent_id UUID NOT NULL |
|
, alias TEXT |
|
, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP |
|
, id UUID NOT NULL DEFAULT uuid_generate_v4() |
|
, job_id UUID NOT NULL |
|
, result BYTEA |
|
, state JobState NOT NULL DEFAULT 'queued' |
|
, exec_type JobType NOT NULL DEFAULT 'shell' |
|
, retcode INTEGER |
|
, updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP |
|
|
|
, FOREIGN KEY(agent_id) REFERENCES agents(id) ON DELETE CASCADE |
|
, FOREIGN KEY(job_id) REFERENCES jobs(id) ON DELETE CASCADE |
|
, PRIMARY KEY(id) |
|
); |
|
|
|
CREATE TABLE IF NOT EXISTS certificates ( |
|
agent_id UUID NOT NULL |
|
, id UUID NOT NULL DEFAULT uuid_generate_v4() |
|
, is_revoked BOOLEAN NOT NULL DEFAULT FALSE |
|
|
|
, PRIMARY KEY(id) |
|
, FOREIGN KEY(agent_id) REFERENCES agents(id) |
|
); |