Merge branch 'feature/icinga-legacy-config-13049'

This commit is contained in:
Thomas Gelf 2016-11-30 08:12:44 +01:00
commit 16dbf8e503
3 changed files with 62 additions and 0 deletions

View File

@ -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"
}
');
}
}

View File

@ -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;

View File

@ -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 (