1
0
mirror of https://github.com/Icinga/icinga2.git synced 2025-04-07 20:25:08 +02:00

Implemented native::NullCheck check method.

This commit is contained in:
Gunnar Beutner 2012-07-16 15:10:42 +02:00
parent 6ebb1bf192
commit 9c7c039365
5 changed files with 88 additions and 2 deletions

@ -19,6 +19,8 @@ libcib_la_SOURCES = \
macroprocessor.h \
nagioschecktask.cpp \
nagioschecktask.h \
nullchecktask.cpp \
nullchecktask.h \
service.cpp \
service.h \
servicegroup.cpp \

@ -45,6 +45,7 @@
#include "macroprocessor.h"
#include "checkresult.h"
#include "nagioschecktask.h"
#include "nullchecktask.h"
#include "servicestatusmessage.h"

46
cib/nullchecktask.cpp Normal file

@ -0,0 +1,46 @@
/******************************************************************************
* Icinga 2 *
* Copyright (C) 2012 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. *
******************************************************************************/
#include "i2-cib.h"
using namespace icinga;
void NullCheckTask::ScriptFunc(const ScriptTask::Ptr& task, const vector<Variant>& arguments)
{
if (arguments.size() < 1)
throw invalid_argument("Missing argument: Service must be specified.");
time_t now;
time(&now);
CheckResult cr;
cr.SetScheduleStart(now);
cr.SetScheduleEnd(now);
cr.SetExecutionStart(now);
cr.SetExecutionEnd(now);
cr.SetState(StateUnknown);
task->FinishResult(cr.GetDictionary());
}
void NullCheckTask::Register(void)
{
ScriptFunction::Ptr func = boost::make_shared<ScriptFunction>(&NullCheckTask::ScriptFunc);
ScriptFunction::Register("native::NullCheck", func);
}

36
cib/nullchecktask.h Normal file

@ -0,0 +1,36 @@
/******************************************************************************
* Icinga 2 *
* Copyright (C) 2012 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 NULLCHECKTASK_H
#define NULLCHECKTASK_H
namespace icinga
{
class I2_CIB_API NullCheckTask
{
public:
static void ScriptFunc(const ScriptTask::Ptr& task, const vector<Variant>& arguments);
static void Register(void);
};
}
#endif /* NULLCHECKTASK_H */

@ -42,6 +42,7 @@ void CheckerComponent::Start(void)
m_CheckTimer->Start();
NagiosCheckTask::Register();
NullCheckTask::Register();
m_ResultTimer = boost::make_shared<Timer>();
m_ResultTimer->SetInterval(5);
@ -76,14 +77,14 @@ void CheckerComponent::CheckTimerHandler(void)
Logger::Write(LogDebug, "checker", "Executing service check for '" + service.GetName() + "'");
m_PendingServices.insert(service.GetConfigObject());
vector<Variant> arguments;
arguments.push_back(service.GetConfigObject());
ScriptTask::Ptr task;
task = service.InvokeMethod("check", arguments, boost::bind(&CheckerComponent::CheckCompletedHandler, this, service, _1));
assert(task); /* TODO: gracefully handle missing hooks */
m_PendingServices.insert(service.GetConfigObject());
/*CheckTask::Ptr task = CheckTask::CreateTask(service, boost::bind(&CheckerComponent::CheckCompletedHandler, this, _1));
task->Start();*/