]> granicus.if.org Git - icinga2/commitdiff
Implement host check commands
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 15 Apr 2013 08:23:06 +0000 (10:23 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 15 Apr 2013 08:23:06 +0000 (10:23 +0200)
Fixes #3674

lib/icinga/externalcommandprocessor.cpp
lib/icinga/externalcommandprocessor.h

index 929e278d19f2f0138a4331c3ed8fec44b9277f50..e5ce06d59c3786c6d9f947f296a4995cc6ba5446 100644 (file)
@@ -152,6 +152,14 @@ void ExternalCommandProcessor::Initialize(void)
        RegisterCommand("DISABLE_HOST_NOTIFICATIONS", &ExternalCommandProcessor::DisableHostNotifications);
        RegisterCommand("ENABLE_SVC_NOTIFICATIONS", &ExternalCommandProcessor::EnableSvcNotifications);
        RegisterCommand("DISABLE_SVC_NOTIFICATIONS", &ExternalCommandProcessor::DisableSvcNotifications);
+       RegisterCommand("DISABLE_HOSTGROUP_HOST_CHECKS", &ExternalCommandProcessor::DisableHostgroupHostChecks);
+       RegisterCommand("DISABLE_HOSTGROUP_PASSIVE_HOST_CHECKS", &ExternalCommandProcessor::DisableHostgroupPassiveHostChecks);
+       RegisterCommand("DISABLE_SERVICEGROUP_HOST_CHECKS", &ExternalCommandProcessor::DisableServicegroupHostChecks);
+       RegisterCommand("DISABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS", &ExternalCommandProcessor::DisableServicegroupPassiveHostChecks);
+       RegisterCommand("ENABLE_HOSTGROUP_HOST_CHECKS", &ExternalCommandProcessor::EnableHostgroupHostChecks);
+       RegisterCommand("ENABLE_HOSTGROUP_PASSIVE_HOST_CHECKS", &ExternalCommandProcessor::EnableHostgroupPassiveHostChecks);
+       RegisterCommand("ENABLE_SERVICEGROUP_HOST_CHECKS", &ExternalCommandProcessor::EnableServicegroupHostChecks);
+       RegisterCommand("ENABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS", &ExternalCommandProcessor::EnableServicegroupPassiveHostChecks);
 }
 
 void ExternalCommandProcessor::RegisterCommand(const String& command, const ExternalCommandProcessor::Callback& callback)
@@ -1233,3 +1241,191 @@ void ExternalCommandProcessor::DisableSvcNotifications(double, const std::vector
                service->SetEnableNotifications(false);
        }
 }
+
+void ExternalCommandProcessor::DisableHostgroupHostChecks(double, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 1)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments."));
+
+       HostGroup::Ptr hg = HostGroup::GetByName(arguments[0]);
+
+       BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) {
+               Service::Ptr hc = host->GetHostCheckService();
+
+               if (!hc)
+                       continue;
+
+               Log(LogInformation, "icinga", "Disabling active checks for host '" + host->GetName() + "'");
+
+               {
+                       ObjectLock olock(hc);
+
+                       hc->SetEnableActiveChecks(false);
+               }
+       }
+}
+
+void ExternalCommandProcessor::DisableHostgroupPassiveHostChecks(double, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 1)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments."));
+
+       HostGroup::Ptr hg = HostGroup::GetByName(arguments[0]);
+
+       BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) {
+               Service::Ptr hc = host->GetHostCheckService();
+
+               if (!hc)
+                       continue;
+
+               Log(LogInformation, "icinga", "Disabling active checks for host '" + host->GetName() + "'");
+
+               {
+                       ObjectLock olock(hc);
+
+                       hc->SetEnablePassiveChecks(false);
+               }
+       }
+}
+
+void ExternalCommandProcessor::DisableServicegroupHostChecks(double, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 1)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments."));
+
+       ServiceGroup::Ptr sg = ServiceGroup::GetByName(arguments[0]);
+
+       BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
+               Host::Ptr host = service->GetHost();
+
+               if (!host)
+                       continue;
+
+               Service::Ptr hc = host->GetHostCheckService();
+
+               if (!hc)
+                       continue;
+
+               Log(LogInformation, "icinga", "Disabling active checks for host '" + host->GetName() + "'");
+
+               {
+                       ObjectLock olock(hc);
+
+                       hc->SetEnableActiveChecks(false);
+               }
+       }
+}
+
+void ExternalCommandProcessor::DisableServicegroupPassiveHostChecks(double, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 1)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments."));
+
+       ServiceGroup::Ptr sg = ServiceGroup::GetByName(arguments[0]);
+
+       BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
+               Host::Ptr host = service->GetHost();
+
+               if (!host)
+                       continue;
+
+               Service::Ptr hc = host->GetHostCheckService();
+
+               if (!hc)
+                       continue;
+
+               Log(LogInformation, "icinga", "Disabling active checks for host '" + host->GetName() + "'");
+
+               {
+                       ObjectLock olock(hc);
+
+                       hc->SetEnablePassiveChecks(false);
+               }
+       }
+}
+
+void ExternalCommandProcessor::EnableHostgroupHostChecks(double, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 1)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments."));
+
+       HostGroup::Ptr hg = HostGroup::GetByName(arguments[0]);
+
+       BOOST_FOREACH(const Host::Ptr& host, hg->GetMembers()) {
+               Service::Ptr hc = host->GetHostCheckService();
+
+               if (!hc)
+                       continue;
+
+               Log(LogInformation, "icinga", "Enabling active checks for host '" + host->GetName() + "'");
+
+               {
+                       ObjectLock olock(hc);
+
+                       hc->SetEnableActiveChecks(true);
+               }
+       }
+}
+
+void ExternalCommandProcessor::EnableHostgroupPassiveHostChecks(double, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 1)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments."));
+
+}
+
+void ExternalCommandProcessor::EnableServicegroupHostChecks(double, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 1)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments."));
+
+       ServiceGroup::Ptr sg = ServiceGroup::GetByName(arguments[0]);
+
+       BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
+               Host::Ptr host = service->GetHost();
+
+               if (!host)
+                       continue;
+
+               Service::Ptr hc = host->GetHostCheckService();
+
+               if (!hc)
+                       continue;
+
+               Log(LogInformation, "icinga", "Enabling active checks for host '" + host->GetName() + "'");
+
+               {
+                       ObjectLock olock(hc);
+
+                       hc->SetEnableActiveChecks(true);
+               }
+       }
+}
+
+void ExternalCommandProcessor::EnableServicegroupPassiveHostChecks(double, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 1)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 1 arguments."));
+
+       ServiceGroup::Ptr sg = ServiceGroup::GetByName(arguments[0]);
+
+       BOOST_FOREACH(const Service::Ptr& service, sg->GetMembers()) {
+               Host::Ptr host = service->GetHost();
+
+               if (!host)
+                       continue;
+
+               Service::Ptr hc = host->GetHostCheckService();
+
+               if (!hc)
+                       continue;
+
+               Log(LogInformation, "icinga", "Enabling active checks for host '" + host->GetName() + "'");
+
+               {
+                       ObjectLock olock(hc);
+
+                       hc->SetEnablePassiveChecks(false);
+               }
+       }
+}
index e261ec7d62d34acc8df80af072d54f553d0c05a4..ab77e480a84660dbcbf01508c23c1d67f18b60d3 100644 (file)
@@ -105,6 +105,14 @@ private:
        static void DisableHostNotifications(double time, const std::vector<String>& arguments);
        static void EnableSvcNotifications(double time, const std::vector<String>& arguments);
        static void DisableSvcNotifications(double time, const std::vector<String>& arguments);
+       static void DisableHostgroupHostChecks(double, const std::vector<String>& arguments);
+       static void DisableHostgroupPassiveHostChecks(double, const std::vector<String>& arguments);
+       static void DisableServicegroupHostChecks(double, const std::vector<String>& arguments);
+       static void DisableServicegroupPassiveHostChecks(double, const std::vector<String>& arguments);
+       static void EnableHostgroupHostChecks(double, const std::vector<String>& arguments);
+       static void EnableHostgroupPassiveHostChecks(double, const std::vector<String>& arguments);
+       static void EnableServicegroupHostChecks(double, const std::vector<String>& arguments);
+       static void EnableServicegroupPassiveHostChecks(double, const std::vector<String>& arguments);
 };
 
 }