]> granicus.if.org Git - icinga2/commitdiff
Implement CHANGE_HOST_MODATTR.
authorGunnar Beutner <gunnar.beutner@netways.de>
Wed, 16 Oct 2013 10:08:36 +0000 (12:08 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Wed, 16 Oct 2013 10:08:58 +0000 (12:08 +0200)
lib/icinga/externalcommandprocessor.cpp
lib/icinga/externalcommandprocessor.h

index 5abdfa1fcb1cad6e2a52b073468e05cb49180f0a..e447a166037cabf0e6fd52c4d1e87c45eaac220a 100644 (file)
@@ -181,6 +181,7 @@ void ExternalCommandProcessor::Initialize(void)
        RegisterCommand("START_EXECUTING_SVC_CHECKS", &ExternalCommandProcessor::StartExecutingSvcChecks);
        RegisterCommand("STOP_EXECUTING_SVC_CHECKS", &ExternalCommandProcessor::StopExecutingSvcChecks);
        RegisterCommand("CHANGE_SVC_MODATTR", &ExternalCommandProcessor::ChangeSvcModAttr);
+       RegisterCommand("CHANGE_HOST_MODATTR", &ExternalCommandProcessor::ChangeHostModAttr);
 }
 
 void ExternalCommandProcessor::RegisterCommand(const String& command, const ExternalCommandProcessor::Callback& callback)
@@ -1836,4 +1837,26 @@ void ExternalCommandProcessor::ChangeSvcModAttr(double time, const std::vector<S
 
                service->SetModifiedAttributes(modifiedAttributes);
        }
+}
+
+void ExternalCommandProcessor::ChangeHostModAttr(double time, const std::vector<String>& arguments)
+{
+       if (arguments.size() < 3)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 3 arguments."));
+
+       Host::Ptr host = Host::GetByName(arguments[0]);
+
+       if (!host)
+               BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot update modified attributes for non-existent host '" + arguments[0] + "'"));
+
+       Log(LogInformation, "icinga", "Updating modified attributes for for host '" + arguments[0] + "'");
+       Service::Ptr hc = host->GetCheckService();
+
+       int modifiedAttributes = Convert::ToLong(arguments[2]);
+
+       {
+               ObjectLock olock(service);
+
+               hc->SetModifiedAttributes(modifiedAttributes);
+       }
 }
\ No newline at end of file
index 03e9fd3037376fb34494fc44a4c08e1068529812..f8cf9b94cf2190f9f85b719946f9216c52ff5f26 100644 (file)
@@ -132,6 +132,7 @@ private:
        static void StartExecutingSvcChecks(double time, const std::vector<String>& arguments);
        static void StopExecutingSvcChecks(double time, const std::vector<String>& arguments);
        static void ChangeSvcModAttr(double time, const std::vector<String>& arguments);
+       static void ChangeHostModAttr(double time, const std::vector<String>& arguments);
 };
 
 }