Add random state to NullCheckTask.

refs #4774
This commit is contained in:
Michael Friedrich 2013-10-03 20:33:32 +02:00
parent a24c233ecb
commit d79680c642
2 changed files with 27 additions and 1 deletions

View File

@ -17,7 +17,11 @@
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
******************************************************************************/
#ifndef _WIN32
#include <stdlib.h>
#endif
#include "icinga/nullchecktask.h"
#include "base/utility.h"
#include "base/scriptfunction.h"
#include "base/logger_fwd.h"
#include <boost/smart_ptr/make_shared.hpp>
@ -36,9 +40,30 @@ Dictionary::Ptr NullCheckTask::ScriptFunc(const Service::Ptr&)
String output = "Hello from ";
output += name;
#ifndef _WIN32
unsigned int seed = Utility::GetPid() * time(NULL);
int state = rand_r(&seed) % 4;
#else
int state = 0;
#endif
Dictionary::Ptr cr = boost::make_shared<Dictionary>();
cr->Set("output", output);
cr->Set("state", StateOK);
cr->Set("state", ExitStatusToState(state));
return cr;
}
ServiceState NullCheckTask::ExitStatusToState(int exitStatus)
{
switch (exitStatus) {
case 0:
return StateOK;
case 1:
return StateWarning;
case 2:
return StateCritical;
default:
return StateUnknown;
}
}

View File

@ -36,6 +36,7 @@ class I2_ICINGA_API NullCheckTask
{
public:
static Dictionary::Ptr ScriptFunc(const Service::Ptr& service);
static ServiceState ExitStatusToState(int exitStatus);
private:
NullCheckTask(void);