From 6409d064390b11b0c4d622e35f1cfb2d99215674 Mon Sep 17 00:00:00 2001 From: Witold Bedyk Date: Tue, 4 Dec 2018 16:28:10 +0100 Subject: [PATCH] Set up DB schema in DevStack plugin using Alembic SQL schema scripts are replaced with Alembic command line tool. Notification plugins are enabled in notification engine configuration file. The change also fixes the `sub_alarm` table schema. The foreign key must refer to the field with the same data type, charset and collation. Otherwise the schema migration fails occasionally with Python 3 with the IntegrityError[1]: oslo_db.exception.DBError: (pymysql.err.IntegrityError) (1215, 'Cannot add foreign key constraint') [1] http://logs.openstack.org/61/622361/8/gate/monasca-tempest-python3-influxdb/26104a3/controller/logs/devstacklog.txt.gz#_2019-01-30_15_52_45_455 Change-Id: I95d7e91e62ff13e84f963fdbb3bca6b7dfd7c310 Story: 2001654 Task: 14421 --- .../monasca-notification/notification.yaml | 4 + devstack/files/schema/mon_mysql.sql | 198 --------------- devstack/files/schema/mon_postgresql.sql | 227 ------------------ devstack/lib/notification.sh | 2 +- devstack/plugin.sh | 19 +- .../alembic/versions/00597b5c8325_initial.py | 15 +- .../6b2b88f3cab4_add_sub_alarm_state.py | 3 +- 7 files changed, 18 insertions(+), 450 deletions(-) delete mode 100644 devstack/files/schema/mon_mysql.sql delete mode 100644 devstack/files/schema/mon_postgresql.sql diff --git a/devstack/files/monasca-notification/notification.yaml b/devstack/files/monasca-notification/notification.yaml index 5e386f6b4..1f9ad9503 100644 --- a/devstack/files/monasca-notification/notification.yaml +++ b/devstack/files/monasca-notification/notification.yaml @@ -48,6 +48,10 @@ postgresql: database: mon notification_types: + plugins: + - monasca_notification.plugins.email_notifier:EmailNotifier + - monasca_notification.plugins.webhook_notifier:WebhookNotifier + - monasca_notification.plugins.pagerduty_notifier:PagerdutyNotifier email: server: "localhost" diff --git a/devstack/files/schema/mon_mysql.sql b/devstack/files/schema/mon_mysql.sql deleted file mode 100644 index d041f08fb..000000000 --- a/devstack/files/schema/mon_mysql.sql +++ /dev/null @@ -1,198 +0,0 @@ -/* -* (C) Copyright 2015,2016 Hewlett Packard Enterprise Development LP -* Copyright 2017 FUJITSU LIMITED -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -*    http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -* implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -USE `mon`; -SET foreign_key_checks = 0; - -/* - * Enum tables - */ -CREATE TABLE `alarm_state` ( - `name` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, - PRIMARY KEY (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `alarm_definition_severity` ( - `name` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, - PRIMARY KEY (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `notification_method_type` ( - `name` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, - PRIMARY KEY (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `alarm` ( - `id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `alarm_definition_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - `state` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, - `lifecycle_state` varchar(50) DEFAULT NULL, - `link` varchar(512) DEFAULT NULL, - `created_at` datetime NOT NULL, - `state_updated_at` datetime, - `updated_at` datetime NOT NULL, - PRIMARY KEY (`id`), - KEY `alarm_definition_id` (`alarm_definition_id`), - CONSTRAINT `fk_alarm_definition_id` FOREIGN KEY (`alarm_definition_id`) REFERENCES `alarm_definition` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_alarm_alarm_state` FOREIGN KEY (`state`) REFERENCES `alarm_state` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `alarm_action` ( - `alarm_definition_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `alarm_state` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, - `action_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - PRIMARY KEY (`alarm_definition_id`,`alarm_state`,`action_id`), - CONSTRAINT `fk_alarm_action_alarm_definition_id` FOREIGN KEY (`alarm_definition_id`) REFERENCES `alarm_definition` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_alarm_action_notification_method_id` FOREIGN KEY (`action_id`) REFERENCES `notification_method` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_alarm_action_alarm_state` FOREIGN KEY (`alarm_state`) REFERENCES `alarm_state` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `alarm_definition` ( - `id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `tenant_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - `description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `expression` longtext COLLATE utf8mb4_unicode_ci NOT NULL, - `severity` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, - `match_by` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '', - `actions_enabled` tinyint(1) NOT NULL DEFAULT '1', - `created_at` datetime NOT NULL, - `updated_at` datetime NOT NULL, - `deleted_at` datetime DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `tenant_id` (`tenant_id`), - KEY `deleted_at` (`deleted_at`), - CONSTRAINT `fk_alarm_definition_severity` FOREIGN KEY (`severity`) REFERENCES `alarm_definition_severity` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `alarm_metric` ( - `alarm_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `metric_definition_dimensions_id` binary(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - PRIMARY KEY (`alarm_id`,`metric_definition_dimensions_id`), - KEY `alarm_id` (`alarm_id`), - KEY `metric_definition_dimensions_id` (`metric_definition_dimensions_id`), - CONSTRAINT `fk_alarm_id` FOREIGN KEY (`alarm_id`) REFERENCES `alarm` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `metric_definition` ( - `id` binary(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, - `tenant_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `region` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `metric_definition_dimensions` ( - `id` binary(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `metric_definition_id` binary(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `metric_dimension_set_id` binary(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - KEY `metric_definition_id` (`metric_definition_id`), - KEY `metric_dimension_set_id` (`metric_dimension_set_id`), - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -/* - * mysql limits the size of a unique key to 767 bytes. The utf8mb4 charset requires - * 4 bytes to be allocated for each character while the utf8 charset requires 3 bytes. - * The utf8 charset should be sufficient for any reasonable characters, see the definition - * of supplementary characters for what it doesn't support. - * Even with utf8, the unique key length would be 785 bytes so only a subset of the - * name is used. Potentially the size of the name should be limited to 250 characters - * which would resolve this issue. - * - * The unique key is required to allow high performance inserts without doing a select by using - * the "insert into metric_dimension ... on duplicate key update dimension_set_id=dimension_set_id - * syntax - */ -CREATE TABLE `metric_dimension` ( - `dimension_set_id` binary(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `value` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - UNIQUE KEY `metric_dimension_key` (`dimension_set_id`,`name`(252)), - KEY `dimension_set_id` (`dimension_set_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='PRIMARY KEY (`id`)'; - -CREATE TABLE `notification_method` ( - `id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `tenant_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `name` varchar(250) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL, - `address` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `period` int NOT NULL DEFAULT 0, - `created_at` datetime NOT NULL, - `updated_at` datetime NOT NULL, - PRIMARY KEY (`id`), - CONSTRAINT `fk_alarm_noticication_method_type` FOREIGN KEY (`type`) REFERENCES `notification_method_type` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `sub_alarm_definition` ( - `id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `alarm_definition_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - `function` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL, - `metric_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `operator` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL, - `threshold` double NOT NULL, - `period` int(11) NOT NULL, - `periods` int(11) NOT NULL, - `is_deterministic` tinyint(1) NOT NULL DEFAULT '0', - `created_at` datetime NOT NULL, - `updated_at` datetime NOT NULL, - PRIMARY KEY (`id`), - KEY `fk_sub_alarm_definition` (`alarm_definition_id`), - CONSTRAINT `fk_sub_alarm_definition` FOREIGN KEY (`alarm_definition_id`) REFERENCES `alarm_definition` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `sub_alarm_definition_dimension` ( - `sub_alarm_definition_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - `dimension_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - `value` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - CONSTRAINT `fk_sub_alarm_definition_dimension` FOREIGN KEY (`sub_alarm_definition_id`) REFERENCES `sub_alarm_definition` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; - -CREATE TABLE `sub_alarm` ( - `id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL, - `alarm_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - `sub_expression_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', - `expression` longtext COLLATE utf8mb4_unicode_ci NOT NULL, - `created_at` datetime NOT NULL, - `updated_at` datetime NOT NULL, - `state` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'OK', - PRIMARY KEY (`id`), - KEY `fk_sub_alarm` (`alarm_id`), - KEY `fk_sub_alarm_expr` (`sub_expression_id`), - CONSTRAINT `fk_sub_alarm` FOREIGN KEY (`alarm_id`) REFERENCES `alarm` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_sub_alarm_state` FOREIGN KEY (`state`) REFERENCES `alarm_state` (`name`), - CONSTRAINT `fk_sub_alarm_expr` FOREIGN KEY (`sub_expression_id`) REFERENCES `sub_alarm_definition` (`id`) -); - -SET foreign_key_checks = 1; - -/* provide 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'); -/* provide data for enum tables */ diff --git a/devstack/files/schema/mon_postgresql.sql b/devstack/files/schema/mon_postgresql.sql deleted file mode 100644 index 000113a25..000000000 --- a/devstack/files/schema/mon_postgresql.sql +++ /dev/null @@ -1,227 +0,0 @@ ---- --- # 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'); diff --git a/devstack/lib/notification.sh b/devstack/lib/notification.sh index c060ca2af..accf46d71 100644 --- a/devstack/lib/notification.sh +++ b/devstack/lib/notification.sh @@ -46,7 +46,7 @@ install_monasca-notification() { if python3_enabled; then enable_python3_package monasca-notification fi - setup_develop ${MONASCA_NOTIFICATION_DIR} + setup_develop ${MONASCA_NOTIFICATION_DIR} jira_plugin # see devstack/plugin.sh install_monasca_common install_monasca_statsd diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 64c2592fb..aafdadacf 100755 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -148,14 +148,13 @@ function install_monasca { function configure_monasca { echo_summary "Configuring Monasca" - #(trebskit) Installing should happen in post-config phase - # at this point databases is already configured - install_schema + configure_storm configure_ui configure_monasca_api configure_monasca-notification configure_monasca-persister + install_schema } function configure_system_encoding_format { @@ -653,17 +652,9 @@ function install_schema_kafka_topics { function install_schema_alarm_database { local databaseName="mon" - # copy the file with the $DATABASE_TYPE to just know what DB is used - sudo cp -f "${MONASCA_API_DIR}"/devstack/files/schema/mon_$DATABASE_TYPE.sql $MONASCA_SCHEMA_DIR/mon_$DATABASE_TYPE.sql - sudo ln -sf $MONASCA_SCHEMA_DIR/mon_$DATABASE_TYPE.sql $MONASCA_SCHEMA_DIR/mon.sql - sudo chmod 0644 $MONASCA_SCHEMA_DIR/mon.sql - sudo chown root:root $MONASCA_SCHEMA_DIR/mon.sql - - recreate_database $databaseName - if is_service_enabled mysql; then - sudo mysql -u$DATABASE_USER -p$DATABASE_PASSWORD -h$MYSQL_HOST < $MONASCA_SCHEMA_DIR/mon.sql - elif is_service_enabled postgresql; then - sudo -u root sudo -u postgres -i psql -d $databaseName -f $MONASCA_SCHEMA_DIR/mon.sql + if is_service_enabled mysql postgresql; then + recreate_database $databaseName + $MONASCA_API_BIN_DIR/monasca_db upgrade fi } diff --git a/monasca_api/db/alembic/versions/00597b5c8325_initial.py b/monasca_api/db/alembic/versions/00597b5c8325_initial.py index fb5ac170d..b04486363 100644 --- a/monasca_api/db/alembic/versions/00597b5c8325_initial.py +++ b/monasca_api/db/alembic/versions/00597b5c8325_initial.py @@ -401,25 +401,22 @@ def upgrade(): op.create_table( 'sub_alarm', sa.Column('id', - sa.dialects.mysql.VARCHAR(length=36, - collation='utf8mb4_unicode_ci'), + sa.String(length=36), nullable=False), sa.Column('alarm_id', - sa.dialects.mysql.VARCHAR(length=36, - collation='utf8mb4_unicode_ci'), + sa.String(length=36), sa.ForeignKey('alarm.id', ondelete='CASCADE', name='fk_sub_alarm'), nullable=False, server_default=''), sa.Column('sub_expression_id', - sa.dialects.mysql.VARCHAR(length=36, - collation='utf8mb4_unicode_ci'), + sa.String(length=36), sa.ForeignKey('sub_alarm_definition.id', name='fk_sub_alarm_expr'), nullable=False, server_default=''), sa.Column('expression', - sa.dialects.mysql.LONGTEXT(collation='utf8mb4_unicode_ci'), + sa.dialects.mysql.LONGTEXT(), nullable=False), sa.Column('created_at', sa.DateTime(), @@ -427,7 +424,9 @@ def upgrade(): sa.Column('updated_at', sa.DateTime(), nullable=False), - sa.PrimaryKeyConstraint('id')) + sa.PrimaryKeyConstraint('id'), + mysql_charset='utf8mb4', + mysql_collate='utf8mb4_unicode_ci') op.create_table( 'schema_migrations', diff --git a/monasca_api/db/alembic/versions/6b2b88f3cab4_add_sub_alarm_state.py b/monasca_api/db/alembic/versions/6b2b88f3cab4_add_sub_alarm_state.py index 73f55cd33..75c29096f 100644 --- a/monasca_api/db/alembic/versions/6b2b88f3cab4_add_sub_alarm_state.py +++ b/monasca_api/db/alembic/versions/6b2b88f3cab4_add_sub_alarm_state.py @@ -34,8 +34,7 @@ def upgrade(): op.add_column( 'sub_alarm', sa.Column('state', - sa.dialects.mysql.VARCHAR(length=20, - collate='utf8mb4_unicode_ci'), + sa.String(length=20), sa.ForeignKey('alarm_state.name'), nullable=False, server_default='OK'))