From c7f7d37523925965a306ed1a3aad1442699dfa04 Mon Sep 17 00:00:00 2001 From: Alexander Fuhr Date: Mon, 29 Jun 2015 10:28:57 +0200 Subject: [PATCH] Add imports support for Servicegroup --- application/forms/IcingaServiceGroupForm.php | 5 +++++ .../Director/Objects/IcingaServiceGroup.php | 2 ++ schema/mysql-changes/upgrade_16.sql | 17 ++++++++++++++ schema/mysql.sql | 18 +++++++++++++++ schema/pgsql-changes/upgrade-7.sql | 20 +++++++++++++++++ schema/pgsql.sql | 22 +++++++++++++++++++ 6 files changed, 84 insertions(+) create mode 100644 schema/mysql-changes/upgrade_16.sql create mode 100644 schema/pgsql-changes/upgrade-7.sql diff --git a/application/forms/IcingaServiceGroupForm.php b/application/forms/IcingaServiceGroupForm.php index 68e35eed..6829d16c 100644 --- a/application/forms/IcingaServiceGroupForm.php +++ b/application/forms/IcingaServiceGroupForm.php @@ -37,5 +37,10 @@ class IcingaServiceGroupForm extends DirectorObjectForm 'label' => $this->translate('Display Name'), 'description' => $this->translate('The name which should displayed.') )); + + $this->addElement('text', 'imports', array( + 'label' => $this->translate('Imports'), + 'description' => $this->translate('The inherited servicegroup template names') + )); } } diff --git a/library/Director/Objects/IcingaServiceGroup.php b/library/Director/Objects/IcingaServiceGroup.php index 66dbda8b..2a4220bc 100644 --- a/library/Director/Objects/IcingaServiceGroup.php +++ b/library/Director/Objects/IcingaServiceGroup.php @@ -6,6 +6,8 @@ class IcingaServiceGroup extends IcingaObject { protected $table = 'icinga_servicegroup'; + protected $supportsImports = true; + protected $defaultProperties = array( 'id' => null, 'object_name' => null, diff --git a/schema/mysql-changes/upgrade_16.sql b/schema/mysql-changes/upgrade_16.sql new file mode 100644 index 00000000..0a41a68b --- /dev/null +++ b/schema/mysql-changes/upgrade_16.sql @@ -0,0 +1,17 @@ +CREATE TABLE icinga_servicegroup_inheritance ( + servicegroup_id INT(10) UNSIGNED NOT NULL, + parent_servicegroup_id INT(10) UNSIGNED NOT NULL, + weight MEDIUMINT UNSIGNED DEFAULT NULL, + PRIMARY KEY (servicegroup_id, parent_servicegroup_id), + UNIQUE KEY unique_order (servicegroup_id, weight), + CONSTRAINT icinga_servicegroup_inheritance_servicegroup + FOREIGN KEY host (servicegroup_id) + REFERENCES icinga_servicegroup (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_servicegroup_inheritance_parent_servicegroup + FOREIGN KEY host (parent_servicegroup_id) + REFERENCES icinga_servicegroup (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/schema/mysql.sql b/schema/mysql.sql index 9f5df567..e0278a7d 100644 --- a/schema/mysql.sql +++ b/schema/mysql.sql @@ -488,6 +488,24 @@ CREATE TABLE icinga_servicegroup ( KEY search_idx (display_name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE icinga_servicegroup_inheritance ( + servicegroup_id INT(10) UNSIGNED NOT NULL, + parent_servicegroup_id INT(10) UNSIGNED NOT NULL, + weight MEDIUMINT UNSIGNED DEFAULT NULL, + PRIMARY KEY (servicegroup_id, parent_servicegroup_id), + UNIQUE KEY unique_order (servicegroup_id, weight), + CONSTRAINT icinga_servicegroup_inheritance_servicegroup + FOREIGN KEY host (servicegroup_id) + REFERENCES icinga_servicegroup (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_servicegroup_inheritance_parent_servicegroup + FOREIGN KEY host (parent_servicegroup_id) + REFERENCES icinga_servicegroup (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + CREATE TABLE icinga_servicegroup_service ( servicegroup_id INT(10) UNSIGNED NOT NULL, service_id INT(10) UNSIGNED NOT NULL, diff --git a/schema/pgsql-changes/upgrade-7.sql b/schema/pgsql-changes/upgrade-7.sql new file mode 100644 index 00000000..0d781f68 --- /dev/null +++ b/schema/pgsql-changes/upgrade-7.sql @@ -0,0 +1,20 @@ +CREATE TABLE icinga_servicegroup_inheritance ( + servicegroup_id integer NOT NULL, + parent_servicegroup_id integer NOT NULL, + weight integer DEFAULT NULL, + PRIMARY KEY (servicegroup_id, parent_servicegroup_id), + CONSTRAINT icinga_servicegroup_inheritance_servicegroup + FOREIGN KEY (servicegroup_id) + REFERENCES icinga_servicegroup (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_servicegroup_inheritance_parent_servicegroup + FOREIGN KEY (parent_servicegroup_id) + REFERENCES icinga_servicegroup (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE UNIQUE INDEX servicegroup_inheritance_unique_order ON icinga_servicegroup_inheritance (servicegroup_id, weight); +CREATE INDEX servicegroup_inheritance_servicegroup ON icinga_servicegroup_inheritance (servicegroup_id); +CREATE INDEX servicegroup_inheritance_servicegroup_parent ON icinga_servicegroup_inheritance (parent_servicegroup_id); diff --git a/schema/pgsql.sql b/schema/pgsql.sql index 543519ab..90a6880e 100644 --- a/schema/pgsql.sql +++ b/schema/pgsql.sql @@ -600,6 +600,28 @@ CREATE UNIQUE INDEX servicegroup_object_name ON icinga_servicegroup (object_name CREATE INDEX servicegroup_search_idx ON icinga_servicegroup (display_name); +CREATE TABLE icinga_servicegroup_inheritance ( + servicegroup_id integer NOT NULL, + parent_servicegroup_id integer NOT NULL, + weight integer DEFAULT NULL, + PRIMARY KEY (servicegroup_id, parent_servicegroup_id), + CONSTRAINT icinga_servicegroup_inheritance_servicegroup + FOREIGN KEY (servicegroup_id) + REFERENCES icinga_servicegroup (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_servicegroup_inheritance_parent_servicegroup + FOREIGN KEY (parent_servicegroup_id) + REFERENCES icinga_servicegroup (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE UNIQUE INDEX servicegroup_inheritance_unique_order ON icinga_servicegroup_inheritance (servicegroup_id, weight); +CREATE INDEX servicegroup_inheritance_servicegroup ON icinga_servicegroup_inheritance (servicegroup_id); +CREATE INDEX servicegroup_inheritance_servicegroup_parent ON icinga_servicegroup_inheritance (parent_servicegroup_id); + + CREATE TABLE icinga_servicegroup_service ( servicegroup_id integer NOT NULL, service_id integer NOT NULL,