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

Method CheckResultHandler

lib/compat/compatlogger.cpp:102–161  ·  view source on GitHub ↗

* @threadsafety Always. */

Source from the content-addressed store, hash-verified

100 * @threadsafety Always.
101 */
102void CompatLogger::CheckResultHandler(const Checkable::Ptr& checkable, const CheckResult::Ptr &cr)
103{
104 Host::Ptr host;
105 Service::Ptr service;
106 tie(host, service) = GetHostService(checkable);
107
108 Dictionary::Ptr vars_after = cr->GetVarsAfter();
109
110 long state_after = vars_after->Get("state");
111 long stateType_after = vars_after->Get("state_type");
112 long attempt_after = vars_after->Get("attempt");
113 bool reachable_after = vars_after->Get("reachable");
114
115 Dictionary::Ptr vars_before = cr->GetVarsBefore();
116
117 if (vars_before) {
118 long state_before = vars_before->Get("state");
119 long stateType_before = vars_before->Get("state_type");
120 long attempt_before = vars_before->Get("attempt");
121 bool reachable_before = vars_before->Get("reachable");
122
123 if (state_before == state_after && stateType_before == stateType_after &&
124 attempt_before == attempt_after && reachable_before == reachable_after)
125 return; /* Nothing changed, ignore this checkresult. */
126 }
127
128 String output;
129 if (cr)
130 output = CompatUtility::GetCheckResultOutput(cr);
131
132 std::ostringstream msgbuf;
133
134 if (service) {
135 msgbuf << "SERVICE ALERT: "
136 << host->GetName() << ";"
137 << service->GetShortName() << ";"
138 << Service::StateToString(service->GetState()) << ";"
139 << Checkable::StateTypeToString(service->GetStateType()) << ";"
140 << attempt_after << ";"
141 << output << ""
142 << "";
143 } else {
144 String state = Host::StateToString(Host::CalculateState(static_cast<ServiceState>(state_after)));
145
146 msgbuf << "HOST ALERT: "
147 << host->GetName() << ";"
148 << GetHostStateString(host) << ";"
149 << Checkable::StateTypeToString(host->GetStateType()) << ";"
150 << attempt_after << ";"
151 << output << ""
152 << "";
153
154 }
155
156 {
157 ObjectLock olock(this);
158 WriteLine(msgbuf.str());
159 Flush();

Callers

nothing calls this directly

Calls 3

GetMethod · 0.45
GetNameMethod · 0.45
GetStateMethod · 0.45

Tested by

no test coverage detected