From 963dccfac8dcb1fefeb5b5ae71669f6dfbd8cee5 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Wed, 23 Oct 2013 11:23:48 +0200 Subject: [PATCH] Add RandomCheck similar to NullCheck. Refs #4896 --- lib/icinga/Makefile.am | 2 ++ lib/icinga/icinga.vcxproj | 4 ++- lib/icinga/nullchecktask.cpp | 2 +- lib/icinga/randomchecktask.cpp | 52 ++++++++++++++++++++++++++++++++++ lib/icinga/randomchecktask.h | 46 ++++++++++++++++++++++++++++++ 5 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 lib/icinga/randomchecktask.cpp create mode 100644 lib/icinga/randomchecktask.h diff --git a/lib/icinga/Makefile.am b/lib/icinga/Makefile.am index 839581372..f625a58aa 100644 --- a/lib/icinga/Makefile.am +++ b/lib/icinga/Makefile.am @@ -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 \ diff --git a/lib/icinga/icinga.vcxproj b/lib/icinga/icinga.vcxproj index 7a0705ecd..e68544e0b 100644 --- a/lib/icinga/icinga.vcxproj +++ b/lib/icinga/icinga.vcxproj @@ -47,6 +47,7 @@ + @@ -82,6 +83,7 @@ + @@ -278,4 +280,4 @@ - \ No newline at end of file + diff --git a/lib/icinga/nullchecktask.cpp b/lib/icinga/nullchecktask.cpp index f08ef7aca..eb0d5a0ea 100644 --- a/lib/icinga/nullchecktask.cpp +++ b/lib/icinga/nullchecktask.cpp @@ -45,7 +45,7 @@ Dictionary::Ptr NullCheckTask::ScriptFunc(const Service::Ptr&) Dictionary::Ptr cr = boost::make_shared(); cr->Set("output", output); cr->Set("performance_data_raw", perfdata); - cr->Set("state", static_cast(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 index 000000000..1b6ac3ada --- /dev/null +++ b/lib/icinga/randomchecktask.cpp @@ -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 +#endif +#include "icinga/randomchecktask.h" +#include "base/utility.h" +#include "base/convert.h" +#include "base/scriptfunction.h" +#include "base/logger_fwd.h" +#include + +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, ""); + + String output = "Hello from "; + output += name; + String perfdata = "time=" + Convert::ToString(static_cast(Utility::GetTime())); + + Dictionary::Ptr cr = boost::make_shared(); + cr->Set("output", output); + cr->Set("performance_data_raw", perfdata); + cr->Set("state", static_cast(Utility::Random() % 4)); + + return cr; +} + diff --git a/lib/icinga/randomchecktask.h b/lib/icinga/randomchecktask.h new file mode 100644 index 000000000..3007eaa33 --- /dev/null +++ b/lib/icinga/randomchecktask.h @@ -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 */ -- 2.40.0