monasca-api/devstack/files/schema/mon_postgresql.sql

228 lines
7.7 KiB
SQL

---
-- # Copyright 2017 FUJITSU LIMITED
---
SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
---
-- enum tables
---
CREATE TABLE alarm_state (
name character varying(20) NOT NULL,
CONSTRAINT alarm_state_pkey PRIMARY KEY (name)
);
CREATE TABLE alarm_definition_severity (
name character varying(20) NOT NULL,
CONSTRAINT alarm_definition_severity_pkey PRIMARY KEY (name)
);
CREATE TABLE notification_method_type (
name character varying(20) NOT NULL,
CONSTRAINT notification_method_type_pkey PRIMARY KEY (name)
);
---
-- tables
---
CREATE TABLE alarm (
id character varying(36) NOT NULL,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
lifecycle_state character varying(50),
link character varying(512),
state character varying(20) NOT NULL,
state_updated_at timestamp without time zone,
alarm_definition_id character varying(36) NOT NULL
);
CREATE TABLE alarm_action (
action_id character varying(36) NOT NULL,
alarm_state character varying(20) NOT NULL,
alarm_definition_id character varying(36) NOT NULL
);
CREATE TABLE alarm_definition (
id character varying(36) NOT NULL,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
actions_enabled boolean NOT NULL,
deleted_at timestamp without time zone,
description character varying(255),
expression text NOT NULL,
match_by character varying(255),
name character varying(255) NOT NULL,
severity character varying(20) NOT NULL,
tenant_id character varying(36) NOT NULL
);
CREATE TABLE alarm_metric (
metric_definition_dimensions_id bytea NOT NULL,
alarm_id character varying(36) NOT NULL
);
CREATE TABLE metric_definition (
id bytea NOT NULL,
name character varying(255) NOT NULL,
region character varying(255) NOT NULL,
tenant_id character varying(36) NOT NULL
);
CREATE TABLE metric_definition_dimensions (
id bytea NOT NULL,
metric_definition_id bytea NOT NULL,
metric_dimension_set_id bytea NOT NULL
);
CREATE TABLE metric_dimension (
dimension_set_id bytea NOT NULL,
name character varying(255) NOT NULL,
value character varying(255) NOT NULL
);
CREATE TABLE notification_method (
id character varying(36) NOT NULL,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
address character varying(512) NOT NULL,
name character varying(250),
tenant_id character varying(36) NOT NULL,
type character varying(20) NOT NULL,
period integer NOT NULL
);
CREATE TABLE sub_alarm (
id character varying(36) NOT NULL,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
expression text NOT NULL,
alarm_id character varying(36) NOT NULL,
sub_expression_id character varying(36),
state character varying(20) NOT NULL DEFAULT 'OK'
);
CREATE TABLE sub_alarm_definition (
id character varying(36) NOT NULL,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
function character varying(10) NOT NULL,
metric_name character varying(100),
operator character varying(5) NOT NULL,
period integer NOT NULL,
periods integer NOT NULL,
threshold double precision NOT NULL,
is_deterministic boolean NOT NULL,
alarm_definition_id character varying(36) NOT NULL
);
CREATE TABLE sub_alarm_definition_dimension (
dimension_name character varying(255) NOT NULL,
value character varying(255),
sub_alarm_definition_id character varying(36) NOT NULL
);
---
-- primary keys
---
ALTER TABLE ONLY alarm_action
ADD CONSTRAINT alarm_action_pkey PRIMARY KEY (action_id, alarm_definition_id, alarm_state);
ALTER TABLE ONLY alarm_definition
ADD CONSTRAINT alarm_definition_pkey PRIMARY KEY (id);
ALTER TABLE ONLY alarm_metric
ADD CONSTRAINT alarm_metric_pkey PRIMARY KEY (alarm_id, metric_definition_dimensions_id);
ALTER TABLE ONLY alarm
ADD CONSTRAINT alarm_pkey PRIMARY KEY (id);
ALTER TABLE ONLY metric_definition_dimensions
ADD CONSTRAINT metric_definition_dimensions_pkey PRIMARY KEY (id);
ALTER TABLE ONLY metric_definition
ADD CONSTRAINT metric_definition_pkey PRIMARY KEY (id);
ALTER TABLE ONLY notification_method
ADD CONSTRAINT notification_method_pkey PRIMARY KEY (id);
ALTER TABLE ONLY sub_alarm_definition_dimension
ADD CONSTRAINT sub_alarm_definition_dimension_pkey PRIMARY KEY (dimension_name, sub_alarm_definition_id);
ALTER TABLE ONLY sub_alarm_definition
ADD CONSTRAINT sub_alarm_definition_pkey PRIMARY KEY (id);
ALTER TABLE ONLY sub_alarm
ADD CONSTRAINT sub_alarm_pkey PRIMARY KEY (id);
---
-- indexes
---
CREATE INDEX alarm_id ON alarm_metric USING btree (alarm_id);
CREATE INDEX deleted_at ON alarm_definition USING btree (deleted_at);
CREATE INDEX dimension_set_id ON metric_dimension USING btree (dimension_set_id);
CREATE INDEX metric_definition_dimensions_id ON alarm_metric USING btree (metric_definition_dimensions_id);
CREATE INDEX metric_definition_id ON metric_definition_dimensions USING btree (metric_definition_id);
CREATE UNIQUE INDEX metric_dimension_key ON metric_dimension USING btree (dimension_set_id, name);
CREATE INDEX metric_dimension_set_id ON metric_definition_dimensions USING btree (metric_dimension_set_id);
CREATE INDEX tenant_id ON alarm_definition USING btree (tenant_id);
---
-- foreign key constraints
---
ALTER TABLE ONLY alarm_action
ADD CONSTRAINT fk_alarm_action_alarm_definition FOREIGN KEY (alarm_definition_id) REFERENCES alarm_definition(id);
ALTER TABLE ONLY sub_alarm
ADD CONSTRAINT fk_sub_alarm_sub_alarm_definition FOREIGN KEY (sub_expression_id) REFERENCES sub_alarm_definition(id);
ALTER TABLE ONLY alarm
ADD CONSTRAINT fk_alarm_alarm_definition FOREIGN KEY (alarm_definition_id) REFERENCES alarm_definition(id);
ALTER TABLE ONLY sub_alarm_definition_dimension
ADD CONSTRAINT fk_sub_alarm_def_dim_sub_alarm_def FOREIGN KEY (sub_alarm_definition_id) REFERENCES sub_alarm_definition(id) ON DELETE CASCADE;
ALTER TABLE ONLY alarm_metric
ADD CONSTRAINT fk_alarm_metric_alamr FOREIGN KEY (alarm_id) REFERENCES alarm(id) ON DELETE CASCADE;
ALTER TABLE ONLY sub_alarm_definition
ADD CONSTRAINT fk_sub_alarm_def_alarm_def FOREIGN KEY (alarm_definition_id) REFERENCES alarm_definition(id) ON DELETE CASCADE;
ALTER TABLE ONLY sub_alarm
ADD CONSTRAINT fk_sub_alarm_alarm FOREIGN KEY (alarm_id) REFERENCES alarm(id) ON DELETE CASCADE;
ALTER TABLE ONLY alarm
ADD CONSTRAINT fk_alarm_state FOREIGN KEY (state) REFERENCES alarm_state (name);
ALTER TABLE ONLY alarm_action
ADD CONSTRAINT fk_alarm_action_state FOREIGN KEY (alarm_state) REFERENCES alarm_state (name);
ALTER TABLE ONLY alarm_definition
ADD CONSTRAINT fk_alarm_definition_severity FOREIGN KEY (severity) REFERENCES alarm_definition_severity (name);
ALTER TABLE ONLY notification_method
ADD CONSTRAINT fk_alarm_noticication_method_type FOREIGN KEY (type) REFERENCES notification_method_type (name);
---
-- data for enum tables
---
insert into alarm_state values ('UNDETERMINED');
insert into alarm_state values ('OK');
insert into alarm_state values ('ALARM');
insert into alarm_definition_severity values ('LOW');
insert into alarm_definition_severity values ('MEDIUM');
insert into alarm_definition_severity values ('HIGH');
insert into alarm_definition_severity values ('CRITICAL');
insert into notification_method_type values ('EMAIL');
insert into notification_method_type values ('WEBHOOK');
insert into notification_method_type values ('PAGERDUTY');