Merge pull request #10399 from Icinga/severity-reachability

`Checkable::GetSeverity()`: consider reachability
This commit is contained in:
Julian Brost 2025-04-02 09:39:40 +02:00 committed by GitHub
commit 27e1850381
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 40 additions and 53 deletions

View File

@ -170,33 +170,29 @@ HostState Host::GetLastHardState() const
* sort by severity. It is therefore easier to keep them seperated here. */
int Host::GetSeverity() const
{
int severity = 0;
ObjectLock olock(this);
HostState state = GetState();
if (!HasBeenChecked()) {
severity = 16;
} else if (state == HostUp) {
severity = 0;
} else {
if (IsReachable())
severity = 64;
else
severity = 32;
if (IsAcknowledged())
severity += 512;
else if (IsInDowntime())
severity += 256;
else
severity += 2048;
return 16;
}
if (state == HostUp) {
return 0;
}
olock.Unlock();
int severity = 32; // DOWN
if (IsAcknowledged()) {
severity += 512;
} else if (IsInDowntime()) {
severity += 256;
} else if (!IsReachable()) {
severity += 1024;
} else {
severity += 2048;
}
return severity;
}
bool Host::IsStateOK(ServiceState state) const

View File

@ -111,46 +111,37 @@ Host::Ptr Service::GetHost() const
* sort by severity. It is therefore easier to keep them seperated here. */
int Service::GetSeverity() const
{
int severity;
ObjectLock olock(this);
ServiceState state = GetStateRaw();
if (!HasBeenChecked()) {
severity = 16;
} else if (state == ServiceOK) {
severity = 0;
} else {
switch (state) {
case ServiceWarning:
severity = 32;
break;
case ServiceUnknown:
severity = 64;
break;
case ServiceCritical:
severity = 128;
break;
default:
severity = 256;
}
Host::Ptr host = GetHost();
ObjectLock hlock (host);
if (host->GetState() != HostUp) {
severity += 1024;
} else {
if (IsAcknowledged())
severity += 512;
else if (IsInDowntime())
severity += 256;
else
severity += 2048;
}
hlock.Unlock();
return 16;
}
if (state == ServiceOK) {
return 0;
}
olock.Unlock();
int severity = 0;
if (state == ServiceWarning) {
severity = 32;
} else if (state == ServiceUnknown) {
severity = 64;
} else if (state == ServiceCritical) {
severity = 128;
} else {
severity = 256;
}
if (IsAcknowledged()) {
severity += 512;
} else if (IsInDowntime()) {
severity += 256;
} else if (!IsReachable()) {
severity += 1024;
} else {
severity += 2048;
}
return severity;
}