From 44c156041ad77cf5e5811776ebceed618b170866 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Thu, 28 Sep 2017 10:58:07 +0200 Subject: [PATCH] schema: add PostgreSQL, small fixes for MySQL refs #132 --- ...grade_dependencies.sql => upgrade_144.sql} | 15 +-- .../upgrade_dependencies_2.sql | 2 - schema/mysql.sql | 22 ++--- schema/pgsql-migrations/upgrade_144.sql | 99 +++++++++++++++++++ schema/pgsql.sql | 98 +++++++++++++++++- 5 files changed, 216 insertions(+), 20 deletions(-) rename schema/mysql-migrations/{upgrade_dependencies.sql => upgrade_144.sql} (89%) delete mode 100644 schema/mysql-migrations/upgrade_dependencies_2.sql create mode 100644 schema/pgsql-migrations/upgrade_144.sql diff --git a/schema/mysql-migrations/upgrade_dependencies.sql b/schema/mysql-migrations/upgrade_144.sql similarity index 89% rename from schema/mysql-migrations/upgrade_dependencies.sql rename to schema/mysql-migrations/upgrade_144.sql index d80098b1..fff6f8f8 100644 --- a/schema/mysql-migrations/upgrade_dependencies.sql +++ b/schema/mysql-migrations/upgrade_144.sql @@ -1,4 +1,3 @@ - CREATE TABLE icinga_dependency ( id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, object_name VARCHAR(255) DEFAULT NULL, @@ -9,22 +8,23 @@ CREATE TABLE icinga_dependency ( parent_service_id INT(10) UNSIGNED DEFAULT NULL, child_host_id INT(10) UNSIGNED DEFAULT NULL, child_service_id INT(10) UNSIGNED DEFAULT NULL, - disable_checks ENUM('y', 'n'), - disable_notifications ENUM('y', 'n'), - ignore_soft_states ENUM('y', 'n'), + disable_checks ENUM('y', 'n') DEFAULT NULL, + disable_notifications ENUM('y', 'n') DEFAULT NULL, + ignore_soft_states ENUM('y', 'n') DEFAULT NULL, period_id INT(10) UNSIGNED DEFAULT NULL, zone_id INT(10) UNSIGNED DEFAULT NULL, assign_filter TEXT DEFAULT NULL, + parent_service_by_name VARCHAR(255) DEFAULT NULL, PRIMARY KEY (id), CONSTRAINT icinga_dependency_parent_host FOREIGN KEY parent_host (parent_host_id) REFERENCES icinga_host (id) - ON DELETE CASCADE + ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT icinga_dependency_parent_service FOREIGN KEY parent_service (parent_service_id) REFERENCES icinga_service (id) - ON DELETE CASCADE + ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT icinga_dependency_child_host FOREIGN KEY child_host (child_host_id) @@ -86,3 +86,6 @@ CREATE TABLE icinga_dependency_states_set ( ON UPDATE CASCADE ) ENGINE=InnoDB; +INSERT INTO director_schema_migration + (schema_version, migration_time) + VALUES (144, NOW()); diff --git a/schema/mysql-migrations/upgrade_dependencies_2.sql b/schema/mysql-migrations/upgrade_dependencies_2.sql deleted file mode 100644 index f147e38b..00000000 --- a/schema/mysql-migrations/upgrade_dependencies_2.sql +++ /dev/null @@ -1,2 +0,0 @@ - -ALTER TABLE icinga_dependency ADD COLUMN parent_service_by_name VARCHAR(255); diff --git a/schema/mysql.sql b/schema/mysql.sql index fa0b8e17..b8b1dfd7 100644 --- a/schema/mysql.sql +++ b/schema/mysql.sql @@ -1585,9 +1585,9 @@ CREATE TABLE icinga_dependency ( parent_service_id INT(10) UNSIGNED DEFAULT NULL, child_host_id INT(10) UNSIGNED DEFAULT NULL, child_service_id INT(10) UNSIGNED DEFAULT NULL, - disable_checks ENUM('y', 'n'), - disable_notifications ENUM('y', 'n'), - ignore_soft_states ENUM('y', 'n'), + disable_checks ENUM('y', 'n') DEFAULT NULL, + disable_notifications ENUM('y', 'n') DEFAULT NULL, + ignore_soft_states ENUM('y', 'n') DEFAULT NULL, period_id INT(10) UNSIGNED DEFAULT NULL, zone_id INT(10) UNSIGNED DEFAULT NULL, assign_filter TEXT DEFAULT NULL, @@ -1596,12 +1596,12 @@ CREATE TABLE icinga_dependency ( CONSTRAINT icinga_dependency_parent_host FOREIGN KEY parent_host (parent_host_id) REFERENCES icinga_host (id) - ON DELETE CASCADE + ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT icinga_dependency_parent_service FOREIGN KEY parent_service (parent_service_id) REFERENCES icinga_service (id) - ON DELETE CASCADE + ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT icinga_dependency_child_host FOREIGN KEY child_host (child_host_id) @@ -1632,13 +1632,13 @@ CREATE TABLE icinga_dependency_inheritance ( PRIMARY KEY (dependency_id, parent_dependency_id), UNIQUE KEY unique_order (dependency_id, weight), CONSTRAINT icinga_dependency_inheritance_dependency - FOREIGN KEY dependency (dependency_id) - REFERENCES icinga_dependency (id) + FOREIGN KEY dependency (dependency_id) + REFERENCES icinga_dependency (id) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT icinga_dependency_inheritance_parent_dependency - FOREIGN KEY parent_dependency (parent_dependency_id) - REFERENCES icinga_dependency (id) + FOREIGN KEY parent_dependency (parent_dependency_id) + REFERENCES icinga_dependency (id) ON DELETE RESTRICT ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -1661,8 +1661,8 @@ CREATE TABLE icinga_dependency_states_set ( REFERENCES icinga_dependency (id) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB; +) ENGINE=InnoDB; INSERT INTO director_schema_migration (schema_version, migration_time) - VALUES (143, NOW()); + VALUES (144, NOW()); diff --git a/schema/pgsql-migrations/upgrade_144.sql b/schema/pgsql-migrations/upgrade_144.sql new file mode 100644 index 00000000..4516f5e9 --- /dev/null +++ b/schema/pgsql-migrations/upgrade_144.sql @@ -0,0 +1,99 @@ +CREATE TABLE icinga_dependency ( + id serial, + object_name character varying(255) NOT NULL, + object_type enum_object_type_all NOT NULL, + disabled enum_boolean DEFAULT 'n', + apply_to enum_host_service NULL DEFAULT NULL, + parent_host_id integer DEFAULT NULL, + parent_service_id integer DEFAULT NULL, + child_host_id integer DEFAULT NULL, + child_service_id integer DEFAULT NULL, + disable_checks enum_boolean DEFAULT NULL, + disable_notifications enum_boolean DEFAULT NULL, + ignore_soft_states enum_boolean DEFAULT NULL, + period_id integer DEFAULT NULL, + zone_id integer DEFAULT NULL, + assign_filter text DEFAULT NULL, + parent_service_by_name character varying(255), + PRIMARY KEY (id), + CONSTRAINT icinga_dependency_parent_host + FOREIGN KEY (parent_host_id) + REFERENCES icinga_host (id) + ON DELETE RESTRICT + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_parent_service + FOREIGN KEY (parent_service_id) + REFERENCES icinga_service (id) + ON DELETE RESTRICT + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_child_host + FOREIGN KEY (child_host_id) + REFERENCES icinga_host (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_child_service + FOREIGN KEY (child_service_id) + REFERENCES icinga_service (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_period + FOREIGN KEY (period_id) + REFERENCES icinga_timeperiod (id) + ON DELETE RESTRICT + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_zone + FOREIGN KEY (zone_id) + REFERENCES icinga_zone (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE INDEX dependency_parent_host ON icinga_dependency (parent_host_id); +CREATE INDEX dependency_parent_service ON icinga_dependency (parent_service_id); +CREATE INDEX dependency_child_host ON icinga_dependency (child_host_id); +CREATE INDEX dependency_child_service ON icinga_dependency (child_service_id); +CREATE INDEX dependency_period ON icinga_dependency (period_id); +CREATE INDEX dependency_zone ON icinga_dependency (zone_id); + + +CREATE TABLE icinga_dependency_inheritance ( + dependency_id integer NOT NULL, + parent_dependency_id integer NOT NULL, + weight integer DEFAULT NULL, + PRIMARY KEY (dependency_id, parent_dependency_id), + CONSTRAINT icinga_dependency_inheritance_dependency + FOREIGN KEY (dependency_id) + REFERENCES icinga_dependency (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_inheritance_parent_dependency + FOREIGN KEY (parent_dependency_id) + REFERENCES icinga_dependency (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE UNIQUE INDEX dependency_inheritance_unique_order ON icinga_dependency_inheritance (dependency_id, weight); +CREATE INDEX dependency_inheritance_dependency ON icinga_dependency_inheritance (dependency_id); +CREATE INDEX dependency_inheritance_dependency_parent ON icinga_dependency_inheritance (parent_dependency_id); + + +CREATE TABLE icinga_dependency_states_set ( + dependency_id integer NOT NULL, + property enum_state_name NOT NULL, + merge_behaviour enum_set_merge_behaviour NOT NULL DEFAULT 'override', + PRIMARY KEY (dependency_id, property, merge_behaviour), + CONSTRAINT icinga_dependency_states_set_dependency + FOREIGN KEY (dependency_id) + REFERENCES icinga_dependency (id) + ON DELETE CASCADE + ON UPDATE CASCADE +); + +CREATE INDEX dependency_states_set_dependency ON icinga_dependency_states_set (dependency_id); +COMMENT ON COLUMN icinga_dependency_states_set.merge_behaviour IS 'override: = [], extend: += [], blacklist: -= []'; + + +INSERT INTO director_schema_migration + (schema_version, migration_time) + VALUES (144, NOW()); diff --git a/schema/pgsql.sql b/schema/pgsql.sql index f227734b..5eb2233a 100644 --- a/schema/pgsql.sql +++ b/schema/pgsql.sql @@ -1855,6 +1855,102 @@ CREATE INDEX user_resolved_var_user_id ON icinga_user_resolved_var (user_id); CREATE INDEX user_resolved_var_schecksum ON icinga_user_resolved_var (checksum); +CREATE TABLE icinga_dependency ( + id serial, + object_name character varying(255) NOT NULL, + object_type enum_object_type_all NOT NULL, + disabled enum_boolean DEFAULT 'n', + apply_to enum_host_service NULL DEFAULT NULL, + parent_host_id integer DEFAULT NULL, + parent_service_id integer DEFAULT NULL, + child_host_id integer DEFAULT NULL, + child_service_id integer DEFAULT NULL, + disable_checks enum_boolean DEFAULT NULL, + disable_notifications enum_boolean DEFAULT NULL, + ignore_soft_states enum_boolean DEFAULT NULL, + period_id integer DEFAULT NULL, + zone_id integer DEFAULT NULL, + assign_filter text DEFAULT NULL, + parent_service_by_name character varying(255), + PRIMARY KEY (id), + CONSTRAINT icinga_dependency_parent_host + FOREIGN KEY (parent_host_id) + REFERENCES icinga_host (id) + ON DELETE RESTRICT + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_parent_service + FOREIGN KEY (parent_service_id) + REFERENCES icinga_service (id) + ON DELETE RESTRICT + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_child_host + FOREIGN KEY (child_host_id) + REFERENCES icinga_host (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_child_service + FOREIGN KEY (child_service_id) + REFERENCES icinga_service (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_period + FOREIGN KEY period (period_id) + REFERENCES icinga_timeperiod (id) + ON DELETE RESTRICT + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_zone + FOREIGN KEY zone (zone_id) + REFERENCES icinga_zone (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE INDEX dependency_parent_host ON icinga_dependency (parent_host_id); +CREATE INDEX dependency_parent_service ON icinga_dependency (parent_service_id); +CREATE INDEX dependency_child_host ON icinga_dependency (child_host_id); +CREATE INDEX dependency_child_service ON icinga_dependency (child_service_id); +CREATE INDEX dependency_period ON icinga_dependency (period_id); +CREATE INDEX dependency_zone ON icinga_dependency (zone_id); + + +CREATE TABLE icinga_dependency_inheritance ( + dependency_id integer NOT NULL, + parent_dependency_id integer NOT NULL, + weight integer DEFAULT NULL, + PRIMARY KEY (dependency_id, parent_dependency_id), + CONSTRAINT icinga_dependency_inheritance_dependency + FOREIGN KEY (dependency_id) + REFERENCES icinga_dependency (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_dependency_inheritance_parent_dependency + FOREIGN KEY (parent_dependency_id) + REFERENCES icinga_dependency (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE UNIQUE INDEX dependency_inheritance_unique_order ON icinga_dependency_inheritance (dependency_id, weight); +CREATE INDEX dependency_inheritance_dependency ON icinga_dependency_inheritance (dependency_id); +CREATE INDEX dependency_inheritance_dependency_parent ON icinga_dependency_inheritance (parent_dependency_id); + + +CREATE TABLE icinga_dependency_states_set ( + icinga_dependency integer NOT NULL, + property enum_state_name NOT NULL, + merge_behaviour enum_set_merge_behaviour NOT NULL DEFAULT 'override', + PRIMARY KEY (dependency_id, property, merge_behaviour), + CONSTRAINT icinga_dependency_states_set_dependency + FOREIGN KEY (dependency_id) + REFERENCES icinga_dependency (id) + ON DELETE CASCADE + ON UPDATE CASCADE +); + +CREATE INDEX dependency_states_set_dependency ON icinga_dependency_states_set (user_id); +COMMENT ON COLUMN icinga_dependency_states_set.merge_behaviour IS 'override: = [], extend: += [], blacklist: -= []'; + + INSERT INTO director_schema_migration (schema_version, migration_time) - VALUES (143, NOW()); + VALUES (144, NOW());