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:
parent
6ebb1bf192
commit
9c7c039365
@ -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
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
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();*/
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user