44 lines
1.8 KiB
SQL
44 lines
1.8 KiB
SQL
CREATE TABLE IF NOT EXISTS fabric_testing_flags (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
scope_type TEXT NOT NULL,
|
|
scope_id UUID,
|
|
cluster_id UUID REFERENCES clusters(id) ON DELETE CASCADE,
|
|
enabled BOOLEAN NOT NULL DEFAULT FALSE,
|
|
telemetry_enabled BOOLEAN NOT NULL DEFAULT FALSE,
|
|
synthetic_links_enabled BOOLEAN NOT NULL DEFAULT FALSE,
|
|
history_retention_hours INTEGER NOT NULL DEFAULT 24,
|
|
metadata JSONB NOT NULL DEFAULT '{}'::JSONB,
|
|
updated_by_user_id UUID REFERENCES users(id) ON DELETE SET NULL,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT fabric_testing_flags_scope_check
|
|
CHECK (scope_type IN ('platform', 'organization', 'node')),
|
|
CONSTRAINT fabric_testing_flags_retention_check
|
|
CHECK (history_retention_hours BETWEEN 1 AND 720)
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_fabric_testing_flags_unique_scope
|
|
ON fabric_testing_flags (
|
|
scope_type,
|
|
COALESCE(scope_id, '00000000-0000-0000-0000-000000000000'::uuid),
|
|
COALESCE(cluster_id, '00000000-0000-0000-0000-000000000000'::uuid)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS node_telemetry_observations (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
cluster_id UUID NOT NULL REFERENCES clusters(id) ON DELETE CASCADE,
|
|
node_id UUID NOT NULL REFERENCES nodes(id) ON DELETE CASCADE,
|
|
cpu_percent DOUBLE PRECISION,
|
|
memory_used_bytes BIGINT,
|
|
memory_total_bytes BIGINT,
|
|
disk_used_bytes BIGINT,
|
|
disk_total_bytes BIGINT,
|
|
network_rx_bytes BIGINT,
|
|
network_tx_bytes BIGINT,
|
|
process_count INTEGER,
|
|
payload JSONB NOT NULL DEFAULT '{}'::JSONB,
|
|
observed_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_node_telemetry_cluster_node_observed
|
|
ON node_telemetry_observations(cluster_id, node_id, observed_at DESC);
|