MCPcopy Create free account
hub / github.com/Icinga/icinga2 / ScriptFunc

Method ScriptFunc

lib/methods/sleepchecktask.cpp:15–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13REGISTER_FUNCTION_NONCONST(Internal, SleepCheck, &SleepCheckTask::ScriptFunc, "checkable:cr:producer:resolvedMacros:useResolvedMacros");
14
15void SleepCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr,
16 const WaitGroup::Ptr& producer, const Dictionary::Ptr& resolvedMacros, bool useResolvedMacros)
17{
18 REQUIRE_NOT_NULL(checkable);
19 REQUIRE_NOT_NULL(cr);
20
21 CheckCommand::Ptr commandObj = CheckCommand::ExecuteOverride ? CheckCommand::ExecuteOverride : checkable->GetCheckCommand();
22
23 Host::Ptr host;
24 Service::Ptr service;
25 tie(host, service) = GetHostService(checkable);
26
27 MacroProcessor::ResolverList resolvers;
28
29 if (MacroResolver::OverrideMacros)
30 resolvers.emplace_back("override", MacroResolver::OverrideMacros);
31
32 if (service)
33 resolvers.emplace_back("service", service);
34 resolvers.emplace_back("host", host);
35 resolvers.emplace_back("command", commandObj);
36
37 double sleepTime = MacroProcessor::ResolveMacros("$sleep_time$", resolvers, checkable->GetLastCheckResult(),
38 nullptr, MacroProcessor::EscapeCallback(), resolvedMacros, useResolvedMacros);
39
40 if (resolvedMacros && !useResolvedMacros)
41 return;
42
43 Utility::Sleep(sleepTime);
44
45 String output = "Slept for " + Convert::ToString(sleepTime) + " seconds.";
46
47 double now = Utility::GetTime();
48 CheckCommand::Ptr command = checkable->GetCheckCommand();
49 String commandName = command->GetName();
50
51 if (Checkable::ExecuteCommandProcessFinishedHandler) {
52 ProcessResult pr;
53 pr.PID = -1;
54 pr.Output = output;
55 pr.ExecutionStart = now - sleepTime;
56 pr.ExecutionEnd = now;
57 pr.ExitStatus = 0;
58
59 Checkable::ExecuteCommandProcessFinishedHandler("", pr);
60 } else {
61 cr->SetOutput(output);
62 cr->SetExecutionStart(now);
63 cr->SetExecutionEnd(now);
64 cr->SetCommand(commandName);
65
66 checkable->ProcessCheckResult(cr, producer);
67 }
68}

Callers

nothing calls this directly

Calls 3

GetCheckCommandMethod · 0.80
GetNameMethod · 0.45
ProcessCheckResultMethod · 0.45

Tested by

no test coverage detected