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

Method ScriptFunc

lib/methods/clusterzonechecktask.cpp:18–219  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16REGISTER_FUNCTION_NONCONST(Internal, ClusterZoneCheck, &ClusterZoneCheckTask::ScriptFunc, "checkable:cr:producer:resolvedMacros:useResolvedMacros");
17
18void ClusterZoneCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr,
19 const WaitGroup::Ptr& producer, const Dictionary::Ptr& resolvedMacros, bool useResolvedMacros)
20{
21 REQUIRE_NOT_NULL(checkable);
22 REQUIRE_NOT_NULL(cr);
23
24 ApiListener::Ptr listener = ApiListener::GetInstance();
25 CheckCommand::Ptr command = CheckCommand::ExecuteOverride ? CheckCommand::ExecuteOverride : checkable->GetCheckCommand();
26 String commandName = command->GetName();
27
28 if (!listener) {
29 String output = "No API listener is configured for this instance.";
30 ServiceState state = ServiceUnknown;
31
32 if (Checkable::ExecuteCommandProcessFinishedHandler) {
33 double now = Utility::GetTime();
34 ProcessResult pr;
35 pr.PID = -1;
36 pr.Output = output;
37 pr.ExecutionStart = now;
38 pr.ExecutionEnd = now;
39 pr.ExitStatus = state;
40
41 Checkable::ExecuteCommandProcessFinishedHandler(commandName, pr);
42 } else {
43 cr->SetCommand(commandName);
44 cr->SetOutput(output);
45 cr->SetState(state);
46 checkable->ProcessCheckResult(cr, producer);
47 }
48
49 return;
50 }
51
52 Value raw_command = command->GetCommandLine();
53
54 Host::Ptr host;
55 Service::Ptr service;
56 tie(host, service) = GetHostService(checkable);
57
58 MacroProcessor::ResolverList resolvers;
59
60 if (MacroResolver::OverrideMacros)
61 resolvers.emplace_back("override", MacroResolver::OverrideMacros);
62
63 if (service)
64 resolvers.emplace_back("service", service);
65 resolvers.emplace_back("host", host);
66 resolvers.emplace_back("command", command);
67
68 String zoneName = MacroProcessor::ResolveMacros("$cluster_zone$", resolvers, checkable->GetLastCheckResult(),
69 nullptr, MacroProcessor::EscapeCallback(), resolvedMacros, useResolvedMacros);
70
71 String missingLagWarning;
72 String missingLagCritical;
73
74 double lagWarning = MacroProcessor::ResolveMacros("$cluster_lag_warning$", resolvers, checkable->GetLastCheckResult(),
75 &missingLagWarning, MacroProcessor::EscapeCallback(), resolvedMacros, useResolvedMacros);

Callers

nothing calls this directly

Calls 13

GetCheckCommandMethod · 0.80
GetCommandLineMethod · 0.80
GetEndpointsMethod · 0.80
GetConnectedMethod · 0.80
GetBytesSentPerSecondMethod · 0.80
GetNameMethod · 0.45
ProcessCheckResultMethod · 0.45
IsEmptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected