]> granicus.if.org Git - icinga2/commitdiff
Implemented the external commands "ENABLE_SERVICEGROUP_SVC_CHECKS", "DISABLE_SERVICEG...
authorGunnar Beutner <gunnar.beutner@netways.de>
Thu, 24 Jan 2013 12:39:42 +0000 (13:39 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Thu, 24 Jan 2013 12:39:42 +0000 (13:39 +0100)
lib/icinga/externalcommand.cpp
lib/icinga/externalcommand.h

index 6759d73a87ecbd2bf841150cec30f15a0c7fdd0d..491260b297d95061c2f2019b2a9f24f466bf3d25 100644 (file)
@@ -41,7 +41,10 @@ void ExternalCommand::Execute(double time, const String& command, const vector<S
                RegisterCommand("ACKNOWLEDGE_SVC_PROBLEM", &ExternalCommand::AcknowledgeSvcProblem);
                RegisterCommand("ACKNOWLEDGE_SVC_PROBLEM_EXPIRE", &ExternalCommand::AcknowledgeSvcProblemExpire);
                RegisterCommand("REMOVE_SVC_ACKNOWLEDGEMENT", &ExternalCommand::RemoveSvcAcknowledgement);
-
+               RegisterCommand("ENABLE_HOSTGROUP_SVC_CHECKS", &ExternalCommand::EnableHostgroupSvcChecks);
+               RegisterCommand("DISABLE_HOSTGROUP_SVC_CHECKS", &ExternalCommand::DisableHostgroupSvcChecks);
+               RegisterCommand("ENABLE_SERVICEGROUP_SVC_CHECKS", &ExternalCommand::EnableServicegroupSvcChecks);
+               RegisterCommand("DISABLE_SERVICEGROUP_SVC_CHECKS", &ExternalCommand::DisableServicegroupSvcChecks);
 
                m_Initialized = true;
        }
@@ -315,3 +318,65 @@ void ExternalCommand::RemoveSvcAcknowledgement(double time, const vector<String>
        service->SetAcknowledgementExpiry(0);
 }
 
+void ExternalCommand::EnableHostgroupSvcChecks(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()) {
+               // TODO: finish implementing this (#3566)
+       }
+}
+
+void ExternalCommand::DisableHostgroupSvcChecks(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()) {
+               // TODO: finish implementing this (#3566)
+       }
+}
+
+void ExternalCommand::EnableServicegroupSvcChecks(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 checks for service '" + service->GetName() + "'");
+               service->SetEnableChecks(true);
+       }
+}
+
+void ExternalCommand::DisableServicegroupSvcChecks(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 checks for service '" + service->GetName() + "'");
+               service->SetEnableChecks(false);
+       }
+}
+
index 346c6041bad87357716a343bd6e7f7ded4b02760..964d419f8588678c8231590d6fbbfb9801332f81 100644 (file)
@@ -42,6 +42,10 @@ public:
        static void AcknowledgeSvcProblem(double time, const vector<String>& arguments);
        static void AcknowledgeSvcProblemExpire(double time, const vector<String>& arguments);
        static void RemoveSvcAcknowledgement(double time, const vector<String>& arguments);
+       static void EnableHostgroupSvcChecks(double time, const vector<String>& arguments);
+       static void DisableHostgroupSvcChecks(double time, const vector<String>& arguments);
+       static void EnableServicegroupSvcChecks(double time, const vector<String>& arguments);
+       static void DisableServicegroupSvcChecks(double time, const vector<String>& arguments);
 
 private:
        typedef function<void (double time, const vector<String>& arguments)> Callback;