From f11ed8a68461f9a57708cdcd8f7736990f848f3b Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Mon, 20 Jan 2014 16:04:02 +0100 Subject: [PATCH] Implement ENABLE_HOSTGROUP_PASSIVE_HOST_CHECKS fixes #5501 fixes #5502 fixes #5503 --- lib/icinga/externalcommandprocessor.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/icinga/externalcommandprocessor.cpp b/lib/icinga/externalcommandprocessor.cpp index 4a1c48fff..0c206a18d 100644 --- a/lib/icinga/externalcommandprocessor.cpp +++ b/lib/icinga/externalcommandprocessor.cpp @@ -918,7 +918,7 @@ void ExternalCommandProcessor::DisableServicegroupPassiveSvcChecks(double, const { ObjectLock olock(service); - service->SetEnablePassiveChecks(true); + service->SetEnablePassiveChecks(false); } } } @@ -1615,6 +1615,26 @@ void ExternalCommandProcessor::EnableHostgroupPassiveHostChecks(double, const st if (arguments.size() < 1) BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments.")); + HostGroup::Ptr hg = HostGroup::GetByName(arguments[0]); + + if (!hg) + BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot enable hostgroup passive host checks for non-existent hostgroup '" + arguments[0] + "'")); + + BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) { + Service::Ptr hc = host->GetCheckService(); + + if (!hc) { + Log(LogInformation, "icinga", "Cannot enable passive checks for host '" + host->GetName() + "' which has no check service."); + } else { + Log(LogInformation, "icinga", "Enabling passive checks for host '" + host->GetName() + "'"); + + { + ObjectLock olock(hc); + + hc->SetEnablePassiveChecks(true); + } + } + } } void ExternalCommandProcessor::EnableServicegroupHostChecks(double, const std::vector& arguments) @@ -1669,7 +1689,7 @@ void ExternalCommandProcessor::EnableServicegroupPassiveHostChecks(double, const { ObjectLock olock(hc); - hc->SetEnablePassiveChecks(false); + hc->SetEnablePassiveChecks(true); } } } -- 2.40.0