diff --git a/library/Director/IcingaConfig/IcingaConfig.php b/library/Director/IcingaConfig/IcingaConfig.php index 19d902e4..1d1ffb8f 100644 --- a/library/Director/IcingaConfig/IcingaConfig.php +++ b/library/Director/IcingaConfig/IcingaConfig.php @@ -500,6 +500,15 @@ class IcingaConfig protected function prepareGlobalBasics() { if ($this->isLegacy()) { + $this->configFile( + sprintf( + 'director/%s/001-director-basics', + $this->connection->getDefaultGlobalZoneName() + ), '.cfg' + )->prepend( + $this->renderLegacyDefaultNotification() + ); + return $this; } @@ -781,4 +790,39 @@ apply Service for (title => params in host.vars["%s"]) { return $this->lastActivityChecksum; } + + protected function renderLegacyDefaultNotification() + { + return preg_replace('~^ {12}~m', '', ' + # + # Default objects to avoid warnings + # + + define contact { + contact_name icingaadmin + alias Icinga Admin + host_notifications_enabled 0 + host_notification_commands notify-never-default + host_notification_period notification_none + service_notifications_enabled 0 + service_notification_commands notify-never-default + service_notification_period notification_none + } + + define contactgroup { + contactgroup_name icingaadmins + members icingaadmin + } + + define timeperiod { + timeperiod_name notification_none + alias No Notifications + } + + define command { + command_name notify-never-default + command_line /bin/echo "NOOP" + } + '); + } } diff --git a/library/Director/Objects/IcingaHostGroup.php b/library/Director/Objects/IcingaHostGroup.php index 6eb7a3ae..148559e9 100644 --- a/library/Director/Objects/IcingaHostGroup.php +++ b/library/Director/Objects/IcingaHostGroup.php @@ -59,6 +59,14 @@ class IcingaHostGroup extends IcingaObjectGroup } else { $allMembers = array(); + // make sure we write to all zones + // so host -> group relations are still possible + foreach (IcingaObject::loadAllByType('zone', $conn) as $zone) { + if (! array_key_exists($zone->id, $zoneMap)) { + $zoneMap[$zone->id] = array(); + } + } + foreach ($zoneMap as $zoneId => $members) { $file = $this->legacyZoneHostgroupFile($config, $zoneId); $this->properties['members'] = $members; diff --git a/library/Director/Objects/IcingaObject.php b/library/Director/Objects/IcingaObject.php index 83994fd2..f84b066d 100644 --- a/library/Director/Objects/IcingaObject.php +++ b/library/Director/Objects/IcingaObject.php @@ -2054,6 +2054,16 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer { $str = ''; + // Set notification settings for the object to suppress warnings + if ( + array_key_exists('enable_notifications', $this->defaultProperties) + && $this->isTemplate() + ) { + $str .= c1::renderKeyValue('notification_period', 'notification_none'); + $str .= c1::renderKeyValue('notification_interval', '0'); + $str .= c1::renderKeyValue('contact_groups', 'icingaadmins'); + } + // force rendering of check_command when ARG1 is set if ($this->supportsCustomVars() && array_key_exists('check_command_id', $this->defaultProperties)) { if (