| 16 | REGISTER_FUNCTION_NONCONST(Internal, ClusterZoneCheck, &ClusterZoneCheckTask::ScriptFunc, "checkable:cr:producer:resolvedMacros:useResolvedMacros"); |
| 17 | |
| 18 | void 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); |
nothing calls this directly
no test coverage detected