]> granicus.if.org Git - icinga2/commitdiff
Add RandomCheck similar to NullCheck.
authorGunnar Beutner <gunnar@beutner.name>
Wed, 23 Oct 2013 09:23:48 +0000 (11:23 +0200)
committerGunnar Beutner <gunnar@beutner.name>
Wed, 23 Oct 2013 11:51:52 +0000 (13:51 +0200)
Refs #4896

lib/icinga/Makefile.am
lib/icinga/icinga.vcxproj
lib/icinga/nullchecktask.cpp
lib/icinga/randomchecktask.cpp [new file with mode: 0644]
lib/icinga/randomchecktask.h [new file with mode: 0644]

index 8395813723aa6dec3c55c002dc531389be4ade7f..f625a58aa83fe86fd9dbfce70bb34add52f4a30d 100644 (file)
@@ -55,6 +55,8 @@ libicinga_la_SOURCES =  \
        plugineventtask.h \
        pluginnotificationtask.cpp \
        pluginnotificationtask.h \
+       randomchecktask.cpp \
+       randomchecktask.h \
        service.cpp \
        service-check.cpp \
        service-comment.cpp \
index 7a0705ecd133af87833947e4d7c7779b432e7f20..e68544e0ba3cefcea734fd6a8ee5e424e7aed87a 100644 (file)
@@ -47,6 +47,7 @@
     <ClCompile Include="nullchecktask.cpp" />
     <ClCompile Include="plugineventtask.cpp" />
     <ClCompile Include="pluginnotificationtask.cpp" />
+    <ClCompile Include="randomchecktask.cpp" />
     <ClCompile Include="service-event.cpp" />
     <ClCompile Include="service-flapping.cpp" />
     <ClCompile Include="service-notification.cpp" />
@@ -82,6 +83,7 @@
     <ClInclude Include="nullchecktask.h" />
     <ClInclude Include="plugineventtask.h" />
     <ClInclude Include="pluginnotificationtask.h" />
+    <ClInclude Include="randomchecktask.h" />
     <ClInclude Include="service.h" />
     <ClInclude Include="servicegroup.h" />
     <ClInclude Include="timeperiod.h" />
     <Import Project="..\..\packages\boost_date_time.1.54.0.2\build\native\boost_date_time.targets" Condition="Exists('..\..\packages\boost_date_time.1.54.0.2\build\native\boost_date_time.targets')" />
     <Import Project="..\..\packages\boost_chrono.1.54.0.2\build\native\boost_chrono.targets" Condition="Exists('..\..\packages\boost_chrono.1.54.0.2\build\native\boost_chrono.targets')" />
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index f08ef7aca1fe1d65c5685d838474bc58557e896f..eb0d5a0eaf76879699e70193eee187ab883dff24 100644 (file)
@@ -45,7 +45,7 @@ Dictionary::Ptr NullCheckTask::ScriptFunc(const Service::Ptr&)
        Dictionary::Ptr cr = boost::make_shared<Dictionary>();
        cr->Set("output", output);
        cr->Set("performance_data_raw", perfdata);
-       cr->Set("state", static_cast<ServiceState>(Utility::Random() % 4));
+       cr->Set("state", StateOK);
 
        return cr;
 }
diff --git a/lib/icinga/randomchecktask.cpp b/lib/icinga/randomchecktask.cpp
new file mode 100644 (file)
index 0000000..1b6ac3a
--- /dev/null
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Icinga 2                                                                   *
+ * Copyright (C) 2012-2013 Icinga Development Team (http://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.             *
+ ******************************************************************************/
+
+#ifndef _WIN32
+#include <stdlib.h>
+#endif
+#include "icinga/randomchecktask.h"
+#include "base/utility.h"
+#include "base/convert.h"
+#include "base/scriptfunction.h"
+#include "base/logger_fwd.h"
+#include <boost/smart_ptr/make_shared.hpp>
+
+using namespace icinga;
+
+REGISTER_SCRIPTFUNCTION(RandomCheck, &RandomCheckTask::ScriptFunc);
+
+Dictionary::Ptr RandomCheckTask::ScriptFunc(const Service::Ptr&)
+{
+       char name[255];
+
+       if (gethostname(name, sizeof(name)) < 0)
+               strcpy(name, "<unknown host>");
+
+       String output = "Hello from ";
+       output += name;
+       String perfdata = "time=" + Convert::ToString(static_cast<double>(Utility::GetTime()));
+
+       Dictionary::Ptr cr = boost::make_shared<Dictionary>();
+       cr->Set("output", output);
+       cr->Set("performance_data_raw", perfdata);
+       cr->Set("state", static_cast<ServiceState>(Utility::Random() % 4));
+
+       return cr;
+}
+
diff --git a/lib/icinga/randomchecktask.h b/lib/icinga/randomchecktask.h
new file mode 100644 (file)
index 0000000..3007eaa
--- /dev/null
@@ -0,0 +1,46 @@
+/******************************************************************************
+ * Icinga 2                                                                   *
+ * Copyright (C) 2012-2013 Icinga Development Team (http://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.             *
+ ******************************************************************************/
+
+#ifndef RANDOMCHECKTASK_H
+#define RANDOMCHECKTASK_H
+
+#include "icinga/i2-icinga.h"
+#include "icinga/service.h"
+#include "base/dictionary.h"
+
+namespace icinga
+{
+
+/**
+ * Test class for additional check types. Implements the "null" check type.
+ *
+ * @ingroup icinga
+ */
+class I2_ICINGA_API RandomCheckTask
+{
+public:
+       static Dictionary::Ptr ScriptFunc(const Service::Ptr& service);
+
+private:
+       RandomCheckTask(void);
+};
+
+}
+
+#endif /* RANDOMCHECKTASK_H */