diff --git a/library/Director/Objects/IcingaApiUser.php b/library/Director/Objects/IcingaApiUser.php index 0c40c7b7..84407156 100644 --- a/library/Director/Objects/IcingaApiUser.php +++ b/library/Director/Objects/IcingaApiUser.php @@ -15,6 +15,7 @@ class IcingaApiUser extends IcingaObject 'id' => null, 'object_name' => null, 'object_type' => null, + 'disabled' => 'n', 'password' => null, 'client_dn' => null, 'permissions' => null, diff --git a/library/Director/Objects/IcingaCommand.php b/library/Director/Objects/IcingaCommand.php index 6ed0d21f..646a26fd 100644 --- a/library/Director/Objects/IcingaCommand.php +++ b/library/Director/Objects/IcingaCommand.php @@ -13,11 +13,12 @@ class IcingaCommand extends IcingaObject protected $defaultProperties = array( 'id' => null, 'object_name' => null, + 'object_type' => null, + 'disabled' => 'n', 'methods_execute' => null, 'command' => null, 'timeout' => null, 'zone_id' => null, - 'object_type' => null, ); protected $supportsCustomVars = true; diff --git a/library/Director/Objects/IcingaEndpoint.php b/library/Director/Objects/IcingaEndpoint.php index 4d073d4d..cc4524e8 100644 --- a/library/Director/Objects/IcingaEndpoint.php +++ b/library/Director/Objects/IcingaEndpoint.php @@ -12,10 +12,11 @@ class IcingaEndpoint extends IcingaObject 'id' => null, 'zone_id' => null, 'object_name' => null, + 'object_type' => null, + 'disabled' => 'n', 'host' => null, 'port' => null, 'log_duration' => null, - 'object_type' => null, 'apiuser_id' => null, ); diff --git a/library/Director/Objects/IcingaHost.php b/library/Director/Objects/IcingaHost.php index 02da814f..f693a445 100644 --- a/library/Director/Objects/IcingaHost.php +++ b/library/Director/Objects/IcingaHost.php @@ -12,6 +12,8 @@ class IcingaHost extends IcingaObject protected $defaultProperties = array( 'id' => null, 'object_name' => null, + 'object_type' => null, + 'disabled' => 'n', 'display_name' => null, 'address' => null, 'address6' => null, @@ -36,7 +38,6 @@ class IcingaHost extends IcingaObject 'action_url' => null, 'icon_image' => null, 'icon_image_alt' => null, - 'object_type' => null, 'has_agent' => null, 'master_should_connect' => null, 'accept_config' => null, diff --git a/library/Director/Objects/IcingaHostGroup.php b/library/Director/Objects/IcingaHostGroup.php index 11542d6a..afcb0b33 100644 --- a/library/Director/Objects/IcingaHostGroup.php +++ b/library/Director/Objects/IcingaHostGroup.php @@ -11,7 +11,8 @@ class IcingaHostGroup extends IcingaObject protected $defaultProperties = array( 'id' => null, 'object_name' => null, - 'display_name' => null, 'object_type' => null, + 'disabled' => 'n', + 'display_name' => null, ); } diff --git a/library/Director/Objects/IcingaObject.php b/library/Director/Objects/IcingaObject.php index cfc1f4ff..ac8eaadf 100644 --- a/library/Director/Objects/IcingaObject.php +++ b/library/Director/Objects/IcingaObject.php @@ -219,6 +219,11 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer } } + protected function setDisabled($disabled) + { + return parent::set($this->normalizeBoolean($disabled)); + } + public function markForRemoval($remove = true) { $this->shouldBeRemoved = $remove; @@ -740,6 +745,12 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer } } + // Disabled is a virtual property + protected function renderDisabled() + { + return ''; + } + protected function renderProperties() { $out = ''; diff --git a/library/Director/Objects/IcingaService.php b/library/Director/Objects/IcingaService.php index 9d1f540b..852fea5c 100644 --- a/library/Director/Objects/IcingaService.php +++ b/library/Director/Objects/IcingaService.php @@ -9,6 +9,8 @@ class IcingaService extends IcingaObject protected $defaultProperties = array( 'id' => null, 'object_name' => null, + 'object_type' => null, + 'disabled' => 'n', 'display_name' => null, 'host_id' => null, 'check_command_id' => null, @@ -32,7 +34,6 @@ class IcingaService extends IcingaObject 'action_url' => null, 'icon_image' => null, 'icon_image_alt' => null, - 'object_type' => null, 'use_agent' => null, ); diff --git a/library/Director/Objects/IcingaServiceGroup.php b/library/Director/Objects/IcingaServiceGroup.php index 2a4220bc..c2aa3530 100644 --- a/library/Director/Objects/IcingaServiceGroup.php +++ b/library/Director/Objects/IcingaServiceGroup.php @@ -11,7 +11,8 @@ class IcingaServiceGroup extends IcingaObject protected $defaultProperties = array( 'id' => null, 'object_name' => null, - 'display_name' => null, 'object_type' => null, + 'disabled' => 'n', + 'display_name' => null, ); } diff --git a/library/Director/Objects/IcingaTimePeriod.php b/library/Director/Objects/IcingaTimePeriod.php index f3c9f79a..232f9448 100644 --- a/library/Director/Objects/IcingaTimePeriod.php +++ b/library/Director/Objects/IcingaTimePeriod.php @@ -10,9 +10,10 @@ class IcingaTimePeriod extends IcingaObject 'id' => null, 'zone_id' => null, 'object_name' => null, + 'object_type' => null, + 'disabled' => 'n', 'display_name' => null, 'update_method' => null, - 'object_type' => null, ); protected $supportsImports = true; diff --git a/library/Director/Objects/IcingaUser.php b/library/Director/Objects/IcingaUser.php index ee78f1e4..4732414b 100644 --- a/library/Director/Objects/IcingaUser.php +++ b/library/Director/Objects/IcingaUser.php @@ -9,13 +9,14 @@ class IcingaUser extends IcingaObject protected $defaultProperties = array( 'id' => null, 'object_name' => null, + 'object_type' => null, + 'disabled' => 'n', 'display_name' => null, 'email' => null, 'pager' => null, 'enable_notifications' => null, 'period_id' => null, 'zone_id' => null, - 'object_type' => null, ); protected $supportsGroups = true; diff --git a/library/Director/Objects/IcingaUserGroup.php b/library/Director/Objects/IcingaUserGroup.php index 46520c68..a64fb5e6 100644 --- a/library/Director/Objects/IcingaUserGroup.php +++ b/library/Director/Objects/IcingaUserGroup.php @@ -11,8 +11,9 @@ class IcingaUserGroup extends IcingaObject protected $defaultProperties = array( 'id' => null, 'object_name' => null, - 'display_name' => null, 'object_type' => null, + 'disabled' => 'n', + 'display_name' => null, 'zone_id' => null, ); } diff --git a/library/Director/Objects/IcingaZone.php b/library/Director/Objects/IcingaZone.php index 19b7ce27..ea05b8db 100644 --- a/library/Director/Objects/IcingaZone.php +++ b/library/Director/Objects/IcingaZone.php @@ -12,6 +12,7 @@ class IcingaZone extends IcingaObject 'id' => null, 'object_name' => null, 'object_type' => null, + 'disabled' => 'n', 'parent_id' => null, 'is_global' => 'n', ); diff --git a/schema/mysql-migrations/upgrade_65.sql b/schema/mysql-migrations/upgrade_65.sql new file mode 100644 index 00000000..7c23c911 --- /dev/null +++ b/schema/mysql-migrations/upgrade_65.sql @@ -0,0 +1,37 @@ +ALTER TABLE icinga_zone + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_timeperiod + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_command + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_apiuser + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_endpoint + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_host + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_service + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_hostgroup + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_servicegroup + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_user + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +ALTER TABLE icinga_usergroup + ADD COLUMN disabled ENUM('y', 'n') NOT NULL DEFAULT 'n' AFTER object_type; + +INSERT INTO director_schema_migration + SET migration_time = NOW(), + schema_version = 65; + diff --git a/schema/mysql.sql b/schema/mysql.sql index baab6e8b..33523382 100644 --- a/schema/mysql.sql +++ b/schema/mysql.sql @@ -162,6 +162,7 @@ CREATE TABLE icinga_zone ( parent_id INT(10) UNSIGNED DEFAULT NULL, object_name VARCHAR(255) NOT NULL, object_type ENUM('object', 'template', 'external_object') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', is_global ENUM('y', 'n') NOT NULL DEFAULT 'n', PRIMARY KEY (id), UNIQUE INDEX object_name (object_name), @@ -197,6 +198,7 @@ CREATE TABLE icinga_timeperiod ( update_method VARCHAR(64) DEFAULT NULL COMMENT 'Usually LegacyTimePeriod', zone_id INT(10) UNSIGNED DEFAULT NULL, object_type ENUM('object', 'template') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', PRIMARY KEY (id), UNIQUE INDEX object_name (object_name, zone_id), CONSTRAINT icinga_timeperiod_zone @@ -243,14 +245,15 @@ CREATE TABLE icinga_timeperiod_range ( CREATE TABLE icinga_command ( id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, object_name VARCHAR(255) NOT NULL, + object_type ENUM('object', 'template', 'external_object') NOT NULL + COMMENT 'external_object is an attempt to work with existing commands', + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', methods_execute VARCHAR(64) DEFAULT NULL, command TEXT DEFAULT NULL, -- env text DEFAULT NULL, -- vars text DEFAULT NULL, timeout SMALLINT UNSIGNED DEFAULT NULL, zone_id INT(10) UNSIGNED DEFAULT NULL, - object_type ENUM('object', 'template', 'external_object') NOT NULL - COMMENT 'external_object is an attempt to work with existing commands', PRIMARY KEY (id), UNIQUE INDEX object_name (object_name, zone_id), CONSTRAINT icinga_command_zone @@ -335,6 +338,7 @@ CREATE TABLE icinga_apiuser ( id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, object_name VARCHAR(255) NOT NULL, object_type ENUM('object', 'template', 'external_object') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', password VARCHAR(255) DEFAULT NULL, client_dn VARCHAR(64) DEFAULT NULL, permissions TEXT DEFAULT NULL COMMENT 'JSON-encoded permissions', @@ -345,10 +349,11 @@ CREATE TABLE icinga_endpoint ( id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, zone_id INT(10) UNSIGNED DEFAULT NULL, object_name VARCHAR(255) NOT NULL, + object_type ENUM('object', 'template', 'external_object') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', host VARCHAR(255) DEFAULT NULL COMMENT 'IP address / hostname of remote node', port SMALLINT UNSIGNED DEFAULT NULL COMMENT '5665 if not set', log_duration VARCHAR(32) DEFAULT NULL COMMENT '1d if not set', - object_type ENUM('object', 'template', 'external_object') NOT NULL, apiuser_id INT(10) UNSIGNED DEFAULT NULL, PRIMARY KEY (id), UNIQUE INDEX object_name (object_name), @@ -385,6 +390,8 @@ CREATE TABLE icinga_endpoint_inheritance ( CREATE TABLE icinga_host ( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, object_name VARCHAR(255) NOT NULL, + object_type ENUM('object', 'template') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', display_name VARCHAR(255) DEFAULT NULL, address VARCHAR(64) DEFAULT NULL, address6 VARCHAR(45) DEFAULT NULL, @@ -409,7 +416,6 @@ CREATE TABLE icinga_host ( action_url VARCHAR(255) DEFAULT NULL, icon_image VARCHAR(255) DEFAULT NULL, icon_image_alt VARCHAR(255) DEFAULT NULL, - object_type ENUM('object', 'template') NOT NULL, has_agent ENUM('y', 'n') DEFAULT NULL, master_should_connect ENUM('y', 'n') DEFAULT NULL, accept_config ENUM('y', 'n') DEFAULT NULL, @@ -495,6 +501,8 @@ CREATE TABLE icinga_host_var ( CREATE TABLE icinga_service ( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, object_name VARCHAR(255) NOT NULL, + object_type ENUM('object', 'template', 'apply') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', display_name VARCHAR(255) DEFAULT NULL, host_id INT(10) UNSIGNED DEFAULT NULL, check_command_id INT(10) UNSIGNED DEFAULT NULL, @@ -518,7 +526,6 @@ CREATE TABLE icinga_service ( action_url VARCHAR(255) DEFAULT NULL, icon_image VARCHAR(255) DEFAULT NULL, icon_image_alt VARCHAR(255) DEFAULT NULL, - object_type ENUM('object', 'template', 'apply') NOT NULL, use_agent ENUM('y', 'n') DEFAULT NULL, PRIMARY KEY (id), -- UNIQUE INDEX object_name (object_name, zone_id), @@ -635,8 +642,9 @@ CREATE TABLE icinga_host_service ( CREATE TABLE icinga_hostgroup ( id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, object_name VARCHAR(255) NOT NULL, - display_name VARCHAR(255) DEFAULT NULL, object_type ENUM('object', 'template') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', + display_name VARCHAR(255) DEFAULT NULL, PRIMARY KEY (id), UNIQUE INDEX object_name (object_name), KEY search_idx (display_name) @@ -664,8 +672,9 @@ CREATE TABLE icinga_hostgroup_inheritance ( CREATE TABLE icinga_servicegroup ( id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, object_name VARCHAR(255) DEFAULT NULL, - display_name VARCHAR(255) DEFAULT NULL, object_type ENUM('object', 'template') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', + display_name VARCHAR(255) DEFAULT NULL, PRIMARY KEY (id), UNIQUE INDEX object_name (object_name), KEY search_idx (display_name) @@ -740,13 +749,14 @@ CREATE TABLE icinga_hostgroup_parent ( CREATE TABLE icinga_user ( id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, object_name VARCHAR(255) DEFAULT NULL, + object_type ENUM('object', 'template') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', display_name VARCHAR(255) DEFAULT NULL, email VARCHAR(255) DEFAULT NULL, pager VARCHAR(255) DEFAULT NULL, enable_notifications ENUM('y', 'n') DEFAULT NULL, period_id INT(10) UNSIGNED DEFAULT NULL, zone_id INT(10) UNSIGNED DEFAULT NULL, - object_type ENUM('object', 'template') NOT NULL, PRIMARY KEY (id), UNIQUE INDEX object_name (object_name, zone_id), CONSTRAINT icinga_user_zone @@ -834,9 +844,10 @@ CREATE TABLE icinga_user_var ( CREATE TABLE icinga_usergroup ( id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL, object_name VARCHAR(255) NOT NULL, + object_type ENUM('object', 'template') NOT NULL, + disabled ENUM('y', 'n') NOT NULL DEFAULT 'n', display_name VARCHAR(255) DEFAULT NULL, zone_id INT(10) UNSIGNED DEFAULT NULL, - object_type ENUM('object', 'template') NOT NULL, PRIMARY KEY (id), UNIQUE INDEX object_name (object_name, zone_id), KEY search_idx (display_name)