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
This commit is contained in:
Witold Bedyk 2018-12-04 16:28:10 +01:00 committed by Witek Bedyk
parent 1e74dd67e7
commit 6409d06439
7 changed files with 18 additions and 450 deletions

View File

@ -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"

View File

@ -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 */

View File

@ -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');

View File

@ -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

View File

@ -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
}

View File

@ -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',

View File

@ -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'))