]> granicus.if.org Git - icinga2/commitdiff
Implement process_check_result script method for the Checkable class
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 8 Aug 2016 12:14:45 +0000 (14:14 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 8 Aug 2016 12:14:45 +0000 (14:14 +0200)
fixes #12329

lib/icinga/CMakeLists.txt
lib/icinga/checkable-script.cpp [new file with mode: 0644]
lib/icinga/checkable.cpp
lib/icinga/checkable.hpp

index 3ba0ad028e898f9324fd228d10ce322b9e80fa8d..521da77b96f7dfb5ff9782326716b19d7c6052c5 100644 (file)
@@ -39,7 +39,7 @@ mkclass_target(user.ti user.tcpp user.thpp)
 
 set(icinga_SOURCES
   apiactions.cpp apievents.cpp checkable.cpp checkable.thpp checkable-dependency.cpp checkable-downtime.cpp checkable-event.cpp
-  checkable-flapping.cpp checkcommand.cpp checkcommand.thpp checkresult.cpp checkresult.thpp
+  checkable-flapping.cpp checkable-script.cpp checkcommand.cpp checkcommand.thpp checkresult.cpp checkresult.thpp
   cib.cpp clusterevents.cpp command.cpp command.thpp comment.cpp comment.thpp compatutility.cpp dependency.cpp dependency.thpp
   dependency-apply.cpp downtime.cpp downtime.thpp eventcommand.cpp eventcommand.thpp
   externalcommandprocessor.cpp host.cpp host.thpp hostgroup.cpp hostgroup.thpp icingaapplication.cpp icingaapplication.thpp
diff --git a/lib/icinga/checkable-script.cpp b/lib/icinga/checkable-script.cpp
new file mode 100644 (file)
index 0000000..ce02e66
--- /dev/null
@@ -0,0 +1,47 @@
+/******************************************************************************
+ * Icinga 2                                                                   *
+ * Copyright (C) 2012-2016 Icinga Development Team (https://www.icinga.org/)  *
+ *                                                                            *
+ * This program is free software; you can redistribute it and/or              *
+ * modify it under the terms of the GNU General Public License                *
+ * as published by the Free Software Foundation; either version 2             *
+ * of the License, or (at your option) any later version.                     *
+ *                                                                            *
+ * This program is distributed in the hope that it will be useful,            *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of             *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
+ * GNU General Public License for more details.                               *
+ *                                                                            *
+ * You should have received a copy of the GNU General Public License          *
+ * along with this program; if not, write to the Free Software Foundation     *
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.             *
+ ******************************************************************************/
+
+#include "icinga/checkable.hpp"
+#include "base/configobject.hpp"
+#include "base/dictionary.hpp"
+#include "base/function.hpp"
+#include "base/functionwrapper.hpp"
+#include "base/scriptframe.hpp"
+
+using namespace icinga;
+
+static void CheckableProcessCheckResult(const CheckResult::Ptr& cr)
+{
+       ScriptFrame *vframe = ScriptFrame::GetCurrentFrame();
+       Checkable::Ptr self = vframe->Self;
+       self->ProcessCheckResult(cr);
+}
+
+Object::Ptr Checkable::GetPrototype(void)
+{
+       static Dictionary::Ptr prototype;
+
+       if (!prototype) {
+               prototype = new Dictionary();
+               prototype->Set("process_check_result", new Function(WrapFunction(CheckableProcessCheckResult), false));
+       }
+
+       return prototype;
+}
+
index dbf1305e1ba3e76818db8bf7775a9476a187bd61..ec42dd298807f7c667353678c5b5835ffc691037 100644 (file)
@@ -29,7 +29,7 @@
 
 using namespace icinga;
 
-REGISTER_TYPE(Checkable);
+REGISTER_TYPE_WITH_PROTOTYPE(Checkable, Checkable::GetPrototype());
 
 boost::signals2::signal<void (const Checkable::Ptr&, const String&, const String&, AcknowledgementType, bool, double, const MessageOrigin::Ptr&)> Checkable::OnAcknowledgementSet;
 boost::signals2::signal<void (const Checkable::Ptr&, const MessageOrigin::Ptr&)> Checkable::OnAcknowledgementCleared;
index eef0208d499c60b0cb04ac3374b15d8bd9a89316..7d7593385572831aab0df73d6651f9b7a6ca2194 100644 (file)
@@ -179,6 +179,8 @@ public:
        static void DecreasePendingChecks(void);
        static int GetPendingChecks(void);
 
+       static Object::Ptr GetPrototype(void);
+
 protected:
        virtual void Start(bool runtimeCreated) override;