RegisterCommand("DISABLE_HOSTGROUP_SVC_CHECKS", &ExternalCommand::DisableHostgroupSvcChecks);
RegisterCommand("ENABLE_SERVICEGROUP_SVC_CHECKS", &ExternalCommand::EnableServicegroupSvcChecks);
RegisterCommand("DISABLE_SERVICEGROUP_SVC_CHECKS", &ExternalCommand::DisableServicegroupSvcChecks);
+ RegisterCommand("ENABLE_PASSIVE_SVC_CHECKS", &ExternalCommand::EnablePassiveSvcChecks);
+ RegisterCommand("DISABLE_PASSIVE_SVC_CHECKS", &ExternalCommand::DisablePassiveSvcChecks);
+ RegisterCommand("ENABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS", &ExternalCommand::EnableServicegroupPassiveSvcChecks);
+ RegisterCommand("DISABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS", &ExternalCommand::DisableServicegroupPassiveSvcChecks);
+ RegisterCommand("ENABLE_HOSTGROUP_PASSIVE_SVC_CHECKS", &ExternalCommand::EnableHostgroupPassiveSvcChecks);
+ RegisterCommand("DISABLE_HOSTGROUP_PASSIVE_SVC_CHECKS", &ExternalCommand::DisableHostgroupPassiveSvcChecks);
m_Initialized = true;
}
Service::Ptr service = Service::GetByName(arguments[1]);
+ if (!service->GetEnablePassiveChecks())
+ throw_exception(invalid_argument("Got passive check result for service '" + arguments[1] + "' which has passive checks disabled."));
+
int exitStatus = arguments[2].ToDouble();
Dictionary::Ptr result = PluginCheckTask::ParseCheckOutput(arguments[3]);
result->Set("state", PluginCheckTask::ExitStatusToState(exitStatus));
Service::Ptr service = Service::GetByName(arguments[1]);
- Logger::Write(LogInformation, "icinga", "Enabling checks for service '" + arguments[1] + "'");
- service->SetEnableChecks(true);
+ Logger::Write(LogInformation, "icinga", "Enabling active checks for service '" + arguments[1] + "'");
+ service->SetEnableActiveChecks(true);
}
void ExternalCommand::DisableSvcCheck(double time, const vector<String>& arguments)
Service::Ptr service = Service::GetByName(arguments[1]);
- Logger::Write(LogInformation, "icinga", "Disabling checks for service '" + arguments[1] + "'");
- service->SetEnableChecks(false);
+ Logger::Write(LogInformation, "icinga", "Disabling active checks for service '" + arguments[1] + "'");
+ service->SetEnableActiveChecks(false);
}
void ExternalCommand::ShutdownProcess(double time, const vector<String>& arguments)
if (service->GetHost() != host)
continue;
- Logger::Write(LogInformation, "icinga", "Enabling checks for service '" + service->GetName() + "'");
- service->SetEnableChecks(true);
+ Logger::Write(LogInformation, "icinga", "Enabling active checks for service '" + service->GetName() + "'");
+ service->SetEnableActiveChecks(true);
}
}
if (service->GetHost() != host)
continue;
- Logger::Write(LogInformation, "icinga", "Disabling checks for service '" + service->GetName() + "'");
- service->SetEnableChecks(false);
+ Logger::Write(LogInformation, "icinga", "Disabling active checks for service '" + service->GetName() + "'");
+ service->SetEnableActiveChecks(false);
}
}
BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) {
BOOST_FOREACH(const Service::Ptr& service, host->GetServices()) {
- Logger::Write(LogInformation, "icinga", "Enabling checks for service '" + service->GetName() + "'");
- service->SetEnableChecks(true);
+ Logger::Write(LogInformation, "icinga", "Enabling active checks for service '" + service->GetName() + "'");
+ service->SetEnableActiveChecks(true);
}
}
}
BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) {
BOOST_FOREACH(const Service::Ptr& service, host->GetServices()) {
- Logger::Write(LogInformation, "icinga", "Disabling checks for service '" + service->GetName() + "'");
- service->SetEnableChecks(false);
+ Logger::Write(LogInformation, "icinga", "Disabling active checks for service '" + service->GetName() + "'");
+ service->SetEnableActiveChecks(false);
}
}
}
ServiceGroup::Ptr sg = ServiceGroup::GetByName(arguments[0]);
BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
- Logger::Write(LogInformation, "icinga", "Enabling checks for service '" + service->GetName() + "'");
- service->SetEnableChecks(true);
+ Logger::Write(LogInformation, "icinga", "Enabling active checks for service '" + service->GetName() + "'");
+ service->SetEnableActiveChecks(true);
}
}
ServiceGroup::Ptr sg = ServiceGroup::GetByName(arguments[0]);
BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
- Logger::Write(LogInformation, "icinga", "Disabling checks for service '" + service->GetName() + "'");
- service->SetEnableChecks(false);
+ Logger::Write(LogInformation, "icinga", "Disabling active checks for service '" + service->GetName() + "'");
+ service->SetEnableActiveChecks(false);
+ }
+}
+
+void ExternalCommand::EnablePassiveSvcChecks(double time, const vector<String>& arguments)
+{
+ if (arguments.size() < 2)
+ throw_exception(invalid_argument("Expected 2 arguments."));
+
+ if (!Service::Exists(arguments[1]))
+ throw_exception(invalid_argument("The service '" + arguments[1] + "' does not exist."));
+
+ Service::Ptr service = Service::GetByName(arguments[1]);
+
+ Logger::Write(LogInformation, "icinga", "Enabling passive checks for service '" + arguments[1] + "'");
+ service->SetEnablePassiveChecks(true);
+}
+
+void ExternalCommand::DisablePassiveSvcChecks(double time, const vector<String>& arguments)
+{
+ if (arguments.size() < 2)
+ throw_exception(invalid_argument("Expected 2 arguments."));
+
+ if (!Service::Exists(arguments[1]))
+ throw_exception(invalid_argument("The service '" + arguments[1] + "' does not exist."));
+
+ Service::Ptr service = Service::GetByName(arguments[1]);
+
+ Logger::Write(LogInformation, "icinga", "Disabling passive checks for service '" + arguments[1] + "'");
+ service->SetEnablePassiveChecks(false);
+}
+
+void ExternalCommand::EnableServicegroupPassiveSvcChecks(double time, const vector<String>& arguments)
+{
+ if (arguments.size() < 1)
+ throw_exception(invalid_argument("Expected 1 argument."));
+
+ if (!ServiceGroup::Exists(arguments[0]))
+ throw_exception(invalid_argument("The service group '" + arguments[0] + "' does not exist."));
+
+ ServiceGroup::Ptr sg = ServiceGroup::GetByName(arguments[0]);
+
+ BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
+ Logger::Write(LogInformation, "icinga", "Enabling passive checks for service '" + service->GetName() + "'");
+ service->SetEnablePassiveChecks(true);
+ }
+}
+
+void ExternalCommand::DisableServicegroupPassiveSvcChecks(double time, const vector<String>& arguments)
+{
+ if (arguments.size() < 1)
+ throw_exception(invalid_argument("Expected 1 argument."));
+
+ if (!ServiceGroup::Exists(arguments[0]))
+ throw_exception(invalid_argument("The service group '" + arguments[0] + "' does not exist."));
+
+ ServiceGroup::Ptr sg = ServiceGroup::GetByName(arguments[0]);
+
+ BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
+ Logger::Write(LogInformation, "icinga", "Disabling passive checks for service '" + service->GetName() + "'");
+ service->SetEnablePassiveChecks(true);
}
}
+void ExternalCommand::EnableHostgroupPassiveSvcChecks(double time, const vector<String>& arguments)
+{
+ if (arguments.size() < 1)
+ throw_exception(invalid_argument("Expected 1 argument."));
+
+ if (!HostGroup::Exists(arguments[0]))
+ throw_exception(invalid_argument("The host group '" + arguments[0] + "' does not exist."));
+
+ HostGroup::Ptr hg = HostGroup::GetByName(arguments[0]);
+
+ BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) {
+ BOOST_FOREACH(const Service::Ptr& service, host->GetServices()) {
+ Logger::Write(LogInformation, "icinga", "Enabling passive checks for service '" + service->GetName() + "'");
+ service->SetEnablePassiveChecks(true);
+ }
+ }
+}
+
+void ExternalCommand::DisableHostgroupPassiveSvcChecks(double time, const vector<String>& arguments)
+{
+ if (arguments.size() < 1)
+ throw_exception(invalid_argument("Expected 1 argument."));
+
+ if (!HostGroup::Exists(arguments[0]))
+ throw_exception(invalid_argument("The host group '" + arguments[0] + "' does not exist."));
+
+ HostGroup::Ptr hg = HostGroup::GetByName(arguments[0]);
+
+ BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) {
+ BOOST_FOREACH(const Service::Ptr& service, host->GetServices()) {
+ Logger::Write(LogInformation, "icinga", "Disabling passive checks for service '" + service->GetName() + "'");
+ service->SetEnablePassiveChecks(false);
+ }
+ }
+}
{ "last_result", Attribute_Replicated },
{ "last_state_change", Attribute_Replicated },
{ "last_hard_state_change", Attribute_Replicated },
- { "enable_checks", Attribute_Replicated },
+ { "enable_active_checks", Attribute_Replicated },
+ { "enable_passive_checks", Attribute_Replicated },
{ "force_next_check", Attribute_Replicated },
{ "acknowledgement", Attribute_Replicated },
{ "acknowledgement_expiry", Attribute_Replicated }
return value;
}
-bool Service::GetEnableChecks(void) const
+bool Service::GetEnableActiveChecks(void) const
{
- Value value = Get("enable_checks");
+ Value value = Get("enable_active_checks");
if (value.IsEmpty())
return true;
return static_cast<bool>(value);
}
-void Service::SetEnableChecks(bool enabled)
+void Service::SetEnablePassiveChecks(bool enabled)
{
- Set("enable_checks", enabled ? 1 : 0);
+ Set("enable_passive_checks", enabled ? 1 : 0);
+}
+
+bool Service::GetEnablePassiveChecks(void) const
+{
+ Value value = Get("enable_passive_checks");
+
+ if (value.IsEmpty())
+ return true;
+
+ return static_cast<bool>(value);
+}
+
+void Service::SetEnableActiveChecks(bool enabled)
+{
+ Set("enable_active_checks", enabled ? 1 : 0);
}
bool Service::GetForceNextCheck(void) const