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

Method ScriptFunc

lib/methods/dummychecktask.cpp:19–76  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17REGISTER_FUNCTION_NONCONST(Internal, DummyCheck, &DummyCheckTask::ScriptFunc, "checkable:cr:producer:resolvedMacros:useResolvedMacros");
18
19void DummyCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr,
20 const WaitGroup::Ptr& producer, const Dictionary::Ptr& resolvedMacros, bool useResolvedMacros)
21{
22 REQUIRE_NOT_NULL(checkable);
23 REQUIRE_NOT_NULL(cr);
24
25 CheckCommand::Ptr command = CheckCommand::ExecuteOverride ? CheckCommand::ExecuteOverride : checkable->GetCheckCommand();
26
27 Host::Ptr host;
28 Service::Ptr service;
29 tie(host, service) = GetHostService(checkable);
30
31 MacroProcessor::ResolverList resolvers;
32
33 if (MacroResolver::OverrideMacros)
34 resolvers.emplace_back("override", MacroResolver::OverrideMacros);
35
36 if (service)
37 resolvers.emplace_back("service", service);
38 resolvers.emplace_back("host", host);
39 resolvers.emplace_back("command", command);
40
41 int dummyState = MacroProcessor::ResolveMacros("$dummy_state$", resolvers, checkable->GetLastCheckResult(),
42 nullptr, MacroProcessor::EscapeCallback(), resolvedMacros, useResolvedMacros);
43
44 String dummyText = MacroProcessor::ResolveMacros("$dummy_text$", resolvers, checkable->GetLastCheckResult(),
45 nullptr, MacroProcessor::EscapeCallback(), resolvedMacros, useResolvedMacros);
46
47 if (resolvedMacros && !useResolvedMacros)
48 return;
49
50 /* Parse output and performance data. */
51 std::pair<String, String> co = PluginUtility::ParseCheckOutput(dummyText);
52
53 double now = Utility::GetTime();
54 String commandName = command->GetName();
55
56 if (Checkable::ExecuteCommandProcessFinishedHandler) {
57 ProcessResult pr;
58 pr.PID = -1;
59 pr.Output = dummyText;
60 pr.ExecutionStart = now;
61 pr.ExecutionEnd = now;
62 pr.ExitStatus = dummyState;
63
64 Checkable::ExecuteCommandProcessFinishedHandler(commandName, pr);
65 } else {
66 cr->SetOutput(co.first);
67 cr->SetPerformanceData(PluginUtility::SplitPerfdata(co.second));
68 cr->SetState(PluginUtility::ExitStatusToState(dummyState));
69 cr->SetExitStatus(dummyState);
70 cr->SetExecutionStart(now);
71 cr->SetExecutionEnd(now);
72 cr->SetCommand(commandName);
73
74 checkable->ProcessCheckResult(cr, producer);
75 }
76}

Callers

nothing calls this directly

Calls 3

GetCheckCommandMethod · 0.80
GetNameMethod · 0.45
ProcessCheckResultMethod · 0.45

Tested by

no test coverage detected