msgbuf << "SERVICE ALERT: "
<< host->GetName() << ";"
<< service->GetShortName() << ";"
- << Service::StateToString(static_cast<ServiceState>(state_after)) << ";"
- << Service::StateTypeToString(static_cast<StateType>(stateType_after)) << ";"
+ << Service::StateToString(service->GetState()) << ";"
+ << Service::StateTypeToString(service->GetStateType()) << ";"
<< attempt_after << ";"
<< output << ""
<< "";
} else {
String state = Host::StateToString(Host::CalculateState(static_cast<ServiceState>(state_after)));
- if (!reachable_after)
- state = "UNREACHABLE";
-
msgbuf << "HOST ALERT: "
<< host->GetName() << ";"
- << state << ";"
- << Host::StateTypeToString(static_cast<StateType>(stateType_after)) << ";"
+ << CompatUtility::GetHostStateString(host) << ";"
+ << Host::StateTypeToString(host->GetStateType()) << ";"
<< attempt_after << ";"
<< output << ""
<< "";
if (service)
notification_type_str = Service::StateToString(service->GetState());
else
- notification_type_str = host->IsReachable() ? Host::StateToString(host->GetState()) : "UNREACHABLE";
+ notification_type_str = CompatUtility::GetHostStateString(host);
}
String author_comment = "";
<< user->GetName() << ";"
<< host->GetName() << ";"
<< notification_type_str << " "
- << "(" << (host->IsReachable() ? Host::StateToString(host->GetState()) : "UNREACHABLE") << ");"
+ << "(" << CompatUtility::GetHostStateString(host) << ");"
<< command_name << ";"
<< output << ";"
<< author_comment
} else {
msgbuf << "HOST EVENT HANDLER: "
<< host->GetName() << ";"
- << (host->IsReachable() ? Host::StateToString(host->GetState()) : "UNREACHABLE") << ";"
+ << CompatUtility::GetHostStateString(host) << ";"
<< Host::StateTypeToString(host->GetStateType()) << ";"
<< current_attempt << ";"
<< event_command_name;
std::ostringstream msgbuf;
msgbuf << "CURRENT HOST STATE: "
<< host->GetName() << ";"
- << (host->IsReachable() ? Host::StateToString(host->GetState()) : "UNREACHABLE") << ";"
+ << CompatUtility::GetHostStateString(host) << ";"
<< Host::StateTypeToString(host->GetStateType()) << ";"
<< host->GetCheckAttempt() << ";"
<< output << "";
fp << "\t" << "current_state=" << service->GetState() << "\n"
<< "\t" << "last_hard_state=" << service->GetLastHardState() << "\n";
} else {
- fp << "\t" << "current_state=" << (host->IsReachable() ? host->GetState() : 2) << "\n"
+ fp << "\t" << "current_state=" << CompatUtility::GetHostCurrentState(host) << "\n"
<< "\t" << "last_hard_state=" << host->GetLastHardState() << "\n";
}
msgbuf << "SERVICE ALERT: "
<< host->GetName() << ";"
<< service->GetShortName() << ";"
- << Service::StateToString(static_cast<ServiceState>(state_after)) << ";"
- << Service::StateTypeToString(static_cast<StateType>(stateType_after)) << ";"
+ << Service::StateToString(service->GetState()) << ";"
+ << Service::StateTypeToString(service->GetStateType()) << ";"
<< attempt_after << ";"
<< output << ""
<< "";
return;
}
} else {
- String state = Host::StateToString(Host::CalculateState(static_cast<ServiceState>(state_after)));
-
- if (!reachable_after)
- state = "UNREACHABLE";
-
msgbuf << "HOST ALERT: "
<< host->GetName() << ";"
- << state << ";"
- << Service::StateTypeToString(static_cast<StateType>(stateType_after)) << ";"
+ << CompatUtility::GetHostStateString(host) << ";"
+ << Host::StateTypeToString(host->GetStateType()) << ";"
<< attempt_after << ";"
<< output << ""
<< "";
fields->Set("check_source", cr->GetCheckSource());
}
- fields->Set("current_state", host->IsReachable() ? host->GetState() : 2);
+ fields->Set("current_state", CompatUtility::GetHostCurrentState(host));
fields->Set("has_been_checked", CompatUtility::GetCheckableHasBeenChecked(host));
fields->Set("should_be_scheduled", host->GetEnableActiveChecks());
fields->Set("current_check_attempt", host->GetCheckAttempt());
return false;
}
- BOOST_FOREACH(const Checkable::Ptr& service, GetParents()) {
- if (!service->IsReachable(dt, failedDependency, rstack + 1))
+ BOOST_FOREACH(const Checkable::Ptr& checkable, GetParents()) {
+ if (!checkable->IsReachable(dt, failedDependency, rstack + 1))
return false;
}
}
/* host */
+int CompatUtility::GetHostCurrentState(const Host::Ptr& host)
+{
+ if (host->GetState() != HostUp && !host->IsReachable())
+ return 2; /* hardcoded compat state */
+
+ return host->GetState();
+}
+
+String CompatUtility::GetHostStateString(const Host::Ptr& host)
+{
+ if (host->GetState() != HostUp && !host->IsReachable())
+ return "UNREACHABLE"; /* hardcoded compat state */
+
+ return Host::StateToString(host->GetState());
+}
+
String CompatUtility::GetHostAlias(const Host::Ptr& host)
{
if (!host->GetDisplayName().IsEmpty())
static String GetCommandName(const Command::Ptr command);
/* host */
+ static int GetHostCurrentState(const Host::Ptr& host);
+ static String GetHostStateString(const Host::Ptr& host);
static String GetHostAlias(const Host::Ptr& host);
static int GetHostNotifyOnDown(const Host::Ptr& host);
static int GetHostNotifyOnUnreachable(const Host::Ptr& host);
{
Checkable::Ptr parent = GetParent();
- Host::Ptr host;
- Service::Ptr service;
- tie(host, service) = GetHostService(parent);
+ Host::Ptr parentHost;
+ Service::Ptr parentService;
+ tie(parentHost, parentService) = GetHostService(parent);
/* ignore if it's the same checkable object */
if (parent == GetChild()) {
Log(LogNotice, "Dependency")
- << "Dependency '" << GetName() << "' passed: Parent and child " << (service ? "service" : "host") << " are identical.";
+ << "Dependency '" << GetName() << "' passed: Parent and child " << (parentService ? "service" : "host") << " are identical.";
return true;
}
/* ignore pending */
if (!parent->GetLastCheckResult()) {
Log(LogNotice, "Dependency")
- << "Dependency '" << GetName() << "' passed: " << (service ? "Service" : "Host") << " '" << parent->GetName() << "' hasn't been checked yet.";
+ << "Dependency '" << GetName() << "' passed: Parent " << (parentService ? "service" : "host") << " '" << parent->GetName() << "' hasn't been checked yet.";
return true;
}
/* ignore soft states */
if (parent->GetStateType() == StateTypeSoft) {
Log(LogNotice, "Dependency")
- << "Dependency '" << GetName() << "' passed: " << (service ? "Service" : "Host") << " '" << parent->GetName() << "' is in a soft state.";
+ << "Dependency '" << GetName() << "' passed: Parent " << (parentService ? "service" : "host") << " '" << parent->GetName() << "' is in a soft state.";
return true;
}
} else {
Log(LogNotice, "Dependency")
- << "Dependency '" << GetName() << "' failed: " << (service ? "Service" : "Host") << " '" << parent->GetName() << "' is in a soft state.";
+ << "Dependency '" << GetName() << "' failed: Parent " << (parentService ? "service" : "host") << " '" << parent->GetName() << "' is in a soft state.";
}
int state;
- if (service)
- state = ServiceStateToFilter(service->GetState());
+ if (parentService)
+ state = ServiceStateToFilter(parentService->GetState());
else
- state = HostStateToFilter(host->GetState());
+ state = HostStateToFilter(parentHost->GetState());
/* check state */
if (state & GetStateFilter()) {
Log(LogNotice, "Dependency")
- << "Dependency '" << GetName() << "' passed: " << (service ? "Service" : "Host") << " '" << parent->GetName() << "' matches state filter.";
+ << "Dependency '" << GetName() << "' passed: Parent " << (parentService ? "service" : "host") << " '" << parent->GetName() << "' matches state filter.";
return true;
}
Log(LogNotice, "Dependency")
<< "Dependency '" << GetName() << "' failed. Parent "
- << (service ? "service" : "host") << " '" << parent->GetName() << "' is "
- << (service ? Service::StateToString(service->GetState()) : Host::StateToString(host->GetState()));
+ << (parentService ? "service" : "host") << " '" << parent->GetName() << "' is "
+ << (parentService ? Service::StateToString(parentService->GetState()) : Host::StateToString(parentHost->GetState()));
return false;
}
fields->Set("short_message", output);
} else {
fields->Set("_type", "HOST NOTIFICATION");
- fields->Set("short_message", "(" + (host->IsReachable() ? Host::StateToString(host->GetState()) : String("UNREACHABLE")) + ")");
+ fields->Set("short_message", "(" + CompatUtility::GetHostStateString(host) + ")");
}
fields->Set("_state", service ? Service::StateToString(service->GetState()) : Host::StateToString(host->GetState()));