From f1c3f9025b7a4de01408400bbae87905e2798b17 Mon Sep 17 00:00:00 2001 From: Alexander Fuhr Date: Mon, 29 Jun 2015 11:02:30 +0200 Subject: [PATCH] Add imports support for UserGroup --- application/forms/IcingaUserGroupForm.php | 5 +++++ library/Director/Objects/IcingaUserGroup.php | 2 ++ schema/mysql-changes/upgrade_19.sql | 17 +++++++++++++++ schema/mysql.sql | 18 ++++++++++++++++ schema/pgsql-changes/upgrade-10.sql | 20 ++++++++++++++++++ schema/pgsql.sql | 22 ++++++++++++++++++++ 6 files changed, 84 insertions(+) create mode 100644 schema/mysql-changes/upgrade_19.sql create mode 100644 schema/pgsql-changes/upgrade-10.sql diff --git a/application/forms/IcingaUserGroupForm.php b/application/forms/IcingaUserGroupForm.php index 90c18add..ff1b15c8 100644 --- a/application/forms/IcingaUserGroupForm.php +++ b/application/forms/IcingaUserGroupForm.php @@ -42,5 +42,10 @@ class IcingaUserGroupForm extends DirectorObjectForm 'label' => $this->translate('Cluster Zone'), 'description' => $this->translate('Check this usergroup in this specific Icinga cluster zone') )); + + $this->addElement('text', 'imports', array( + 'label' => $this->translate('Imports'), + 'description' => $this->translate('The inherited usergroup template names') + )); } } diff --git a/library/Director/Objects/IcingaUserGroup.php b/library/Director/Objects/IcingaUserGroup.php index f1edb8ec..46520c68 100644 --- a/library/Director/Objects/IcingaUserGroup.php +++ b/library/Director/Objects/IcingaUserGroup.php @@ -6,6 +6,8 @@ class IcingaUserGroup extends IcingaObject { protected $table = 'icinga_usergroup'; + protected $supportsImports = true; + protected $defaultProperties = array( 'id' => null, 'object_name' => null, diff --git a/schema/mysql-changes/upgrade_19.sql b/schema/mysql-changes/upgrade_19.sql new file mode 100644 index 00000000..2980ccca --- /dev/null +++ b/schema/mysql-changes/upgrade_19.sql @@ -0,0 +1,17 @@ +CREATE TABLE icinga_usergroup_inheritance ( + usergroup_id INT(10) UNSIGNED NOT NULL, + parent_usergroup_id INT(10) UNSIGNED NOT NULL, + weight MEDIUMINT UNSIGNED DEFAULT NULL, + PRIMARY KEY (usergroup_id, parent_usergroup_id), + UNIQUE KEY unique_order (usergroup_id, weight), + CONSTRAINT icinga_usergroup_inheritance_usergroup + FOREIGN KEY usergroup (usergroup_id) + REFERENCES icinga_usergroup (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_usergroup_inheritance_parent_usergroup + FOREIGN KEY usergroup (parent_usergroup_id) + REFERENCES icinga_usergroup (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/schema/mysql.sql b/schema/mysql.sql index 7b911ab6..9c202863 100644 --- a/schema/mysql.sql +++ b/schema/mysql.sql @@ -695,6 +695,24 @@ CREATE TABLE icinga_usergroup ( KEY search_idx (display_name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE icinga_usergroup_inheritance ( + usergroup_id INT(10) UNSIGNED NOT NULL, + parent_usergroup_id INT(10) UNSIGNED NOT NULL, + weight MEDIUMINT UNSIGNED DEFAULT NULL, + PRIMARY KEY (usergroup_id, parent_usergroup_id), + UNIQUE KEY unique_order (usergroup_id, weight), + CONSTRAINT icinga_usergroup_inheritance_usergroup + FOREIGN KEY usergroup (usergroup_id) + REFERENCES icinga_usergroup (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_usergroup_inheritance_parent_usergroup + FOREIGN KEY usergroup (parent_usergroup_id) + REFERENCES icinga_usergroup (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + CREATE TABLE icinga_usergroup_user ( usergroup_id INT(10) UNSIGNED NOT NULL, user_id INT(10) UNSIGNED NOT NULL, diff --git a/schema/pgsql-changes/upgrade-10.sql b/schema/pgsql-changes/upgrade-10.sql new file mode 100644 index 00000000..4fd3cc1d --- /dev/null +++ b/schema/pgsql-changes/upgrade-10.sql @@ -0,0 +1,20 @@ +CREATE TABLE icinga_usergroup_inheritance ( + usergroup_id integer NOT NULL, + parent_usergroup_id integer NOT NULL, + weight integer DEFAULT NULL, + PRIMARY KEY (usergroup_id, parent_usergroup_id), + CONSTRAINT icinga_usergroup_inheritance_usergroup + FOREIGN KEY (usergroup_id) + REFERENCES icinga_usergroup (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_usergroup_inheritance_parent_usergroup + FOREIGN KEY (parent_usergroup_id) + REFERENCES icinga_usergroup (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE UNIQUE INDEX usergroup_inheritance_unique_order ON icinga_usergroup_inheritance (usergroup_id, weight); +CREATE INDEX usergroup_inheritance_usergroup ON icinga_usergroup_inheritance (usergroup_id); +CREATE INDEX usergroup_inheritance_usergroup_parent ON icinga_usergroup_inheritance (parent_usergroup_id); diff --git a/schema/pgsql.sql b/schema/pgsql.sql index 0cee0575..b3427d0b 100644 --- a/schema/pgsql.sql +++ b/schema/pgsql.sql @@ -832,6 +832,28 @@ CREATE UNIQUE INDEX usergroup_search_idx ON icinga_usergroup (display_name); CREATE INDEX usergroup_object_name ON icinga_usergroup (object_name, zone_id); +CREATE TABLE icinga_usergroup_inheritance ( + usergroup_id integer NOT NULL, + parent_usergroup_id integer NOT NULL, + weight integer DEFAULT NULL, + PRIMARY KEY (usergroup_id, parent_usergroup_id), + CONSTRAINT icinga_usergroup_inheritance_usergroup + FOREIGN KEY (usergroup_id) + REFERENCES icinga_usergroup (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT icinga_usergroup_inheritance_parent_usergroup + FOREIGN KEY (parent_usergroup_id) + REFERENCES icinga_usergroup (id) + ON DELETE RESTRICT + ON UPDATE CASCADE +); + +CREATE UNIQUE INDEX usergroup_inheritance_unique_order ON icinga_usergroup_inheritance (usergroup_id, weight); +CREATE INDEX usergroup_inheritance_usergroup ON icinga_usergroup_inheritance (usergroup_id); +CREATE INDEX usergroup_inheritance_usergroup_parent ON icinga_usergroup_inheritance (parent_usergroup_id); + + CREATE TABLE icinga_usergroup_user ( usergroup_id integer NOT NULL, user_id integer NOT NULL,