[icinga-checkins] icinga.org: icinga2/master: Implement process_check_result script method for the Checkable class

git at icinga.org git at icinga.org
Mon Aug 8 14:14:54 CEST 2016


Module: icinga2
Branch: master
Commit: c7602a0f34572a1a7c34cc22c59be0ea85272574
URL:    https://git.icinga.org/?p=icinga2.git;a=commit;h=c7602a0f34572a1a7c34cc22c59be0ea85272574

Author: Gunnar Beutner <gunnar.beutner at netways.de>
Date:   Mon Aug  8 14:14:45 2016 +0200

Implement process_check_result script method for the Checkable class

fixes #12329

---

 lib/icinga/CMakeLists.txt       |    2 +-
 lib/icinga/checkable-script.cpp |   47 +++++++++++++++++++++++++++++++++++++++
 lib/icinga/checkable.cpp        |    2 +-
 lib/icinga/checkable.hpp        |    2 ++
 4 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/lib/icinga/CMakeLists.txt b/lib/icinga/CMakeLists.txt
index 3ba0ad0..521da77 100644
--- a/lib/icinga/CMakeLists.txt
+++ b/lib/icinga/CMakeLists.txt
@@ -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
index 0000000..ce02e66
--- /dev/null
+++ b/lib/icinga/checkable-script.cpp
@@ -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;
+}
+
diff --git a/lib/icinga/checkable.cpp b/lib/icinga/checkable.cpp
index dbf1305..ec42dd2 100644
--- a/lib/icinga/checkable.cpp
+++ b/lib/icinga/checkable.cpp
@@ -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;
diff --git a/lib/icinga/checkable.hpp b/lib/icinga/checkable.hpp
index eef0208..7d75933 100644
--- a/lib/icinga/checkable.hpp
+++ b/lib/icinga/checkable.hpp
@@ -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;
 



More information about the icinga-checkins mailing list