mirror of
https://github.com/Icinga/icinga2.git
synced 2025-04-08 17:05:25 +02:00
parent
17615ac444
commit
dc7980586b
@ -117,9 +117,9 @@ AcknowledgementType Checkable::GetAcknowledgement(void)
|
||||
return avalue;
|
||||
}
|
||||
|
||||
bool Checkable::IsAcknowledged(void)
|
||||
bool Checkable::IsAcknowledged(void) const
|
||||
{
|
||||
return GetAcknowledgement() != AcknowledgementNone;
|
||||
return const_cast<Checkable *>(this)->GetAcknowledgement() != AcknowledgementNone;
|
||||
}
|
||||
|
||||
void Checkable::AcknowledgeProblem(const String& author, const String& comment, AcknowledgementType type, bool notify, double expiry, const MessageOrigin::Ptr& origin)
|
||||
@ -146,6 +146,12 @@ Endpoint::Ptr Checkable::GetCommandEndpoint(void) const
|
||||
return Endpoint::GetByName(GetCommandEndpointRaw());
|
||||
}
|
||||
|
||||
int Checkable::GetSeverity(void) const
|
||||
{
|
||||
/* overridden in Host/Service class. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Checkable::NotifyFixedDowntimeStart(const Downtime::Ptr& downtime)
|
||||
{
|
||||
if (!downtime->GetFixed())
|
||||
|
@ -53,6 +53,22 @@ enum CheckableType
|
||||
CheckableService
|
||||
};
|
||||
|
||||
/**
|
||||
* Severity Flags
|
||||
*
|
||||
* @ingroup icinga
|
||||
*/
|
||||
enum SeverityFlag
|
||||
{
|
||||
SeverityFlagDowntime = 1,
|
||||
SeverityFlagAcknowledgement = 2,
|
||||
SeverityFlagUnhandled = 8,
|
||||
SeverityFlagPending = 16,
|
||||
SeverityFlagWarning = 32,
|
||||
SeverityFlagUnknown = 64,
|
||||
SeverityFlagCritical = 128,
|
||||
};
|
||||
|
||||
class CheckCommand;
|
||||
class EventCommand;
|
||||
class Dependency;
|
||||
@ -85,6 +101,8 @@ public:
|
||||
void AcknowledgeProblem(const String& author, const String& comment, AcknowledgementType type, bool notify = true, double expiry = 0, const MessageOrigin::Ptr& origin = MessageOrigin::Ptr());
|
||||
void ClearAcknowledgement(const MessageOrigin::Ptr& origin = MessageOrigin::Ptr());
|
||||
|
||||
virtual int GetSeverity(void) const override;
|
||||
|
||||
/* Checks */
|
||||
intrusive_ptr<CheckCommand> GetCheckCommand(void) const;
|
||||
TimePeriod::Ptr GetCheckPeriod(void) const;
|
||||
@ -132,7 +150,7 @@ public:
|
||||
void RemoveAllDowntimes(void);
|
||||
void TriggerDowntimes(void);
|
||||
bool IsInDowntime(void) const;
|
||||
bool IsAcknowledged(void);
|
||||
bool IsAcknowledged(void) const;
|
||||
|
||||
std::set<Downtime::Ptr> GetDowntimes(void) const;
|
||||
void RegisterDowntime(const Downtime::Ptr& downtime);
|
||||
|
@ -128,6 +128,11 @@ abstract class Checkable : CustomVarObject
|
||||
default {{{ return Application::GetStartTime(); }}}
|
||||
};
|
||||
[state] Timestamp last_state_unreachable;
|
||||
|
||||
[no_storage] int severity {
|
||||
get;
|
||||
};
|
||||
|
||||
[state] bool force_next_check;
|
||||
[state] int acknowledgement (AcknowledgementRaw) {
|
||||
default {{{ return AcknowledgementNone; }}}
|
||||
|
@ -181,6 +181,34 @@ HostState Host::GetLastHardState(void) const
|
||||
return CalculateState(GetLastHardStateRaw());
|
||||
}
|
||||
|
||||
/* keep in sync with Service::GetSeverity() */
|
||||
int Host::GetSeverity(void) const
|
||||
{
|
||||
int severity = 0;
|
||||
|
||||
ObjectLock olock(this);
|
||||
ServiceState state = GetStateRaw();
|
||||
|
||||
/* OK/Warning = Up, Critical/Unknownb = Down */
|
||||
if (!HasBeenChecked())
|
||||
severity |= SeverityFlagPending;
|
||||
else if (state == ServiceUnknown)
|
||||
severity |= SeverityFlagCritical;
|
||||
else if (state == ServiceCritical)
|
||||
severity |= SeverityFlagCritical;
|
||||
|
||||
if (IsInDowntime())
|
||||
severity |= SeverityFlagDowntime;
|
||||
else if (IsAcknowledged())
|
||||
severity |= SeverityFlagAcknowledgement;
|
||||
else
|
||||
severity |= SeverityFlagUnhandled;
|
||||
|
||||
olock.Unlock();
|
||||
|
||||
return severity;
|
||||
}
|
||||
|
||||
bool Host::IsStateOK(ServiceState state)
|
||||
{
|
||||
return Host::CalculateState(state) == HostUp;
|
||||
|
@ -54,6 +54,7 @@ public:
|
||||
virtual HostState GetState(void) const override;
|
||||
virtual HostState GetLastState(void) const override;
|
||||
virtual HostState GetLastHardState(void) const override;
|
||||
virtual int GetSeverity(void) const override;
|
||||
|
||||
virtual bool IsStateOK(ServiceState state) override;
|
||||
virtual void SaveLastState(ServiceState state, double timestamp) override;
|
||||
|
@ -124,6 +124,36 @@ Host::Ptr Service::GetHost(void) const
|
||||
return m_Host;
|
||||
}
|
||||
|
||||
/* keep in sync with Host::GetSeverity() */
|
||||
int Service::GetSeverity(void) const
|
||||
{
|
||||
int severity = 0;
|
||||
|
||||
ObjectLock olock(this);
|
||||
ServiceState state = GetStateRaw();
|
||||
|
||||
if (!HasBeenChecked())
|
||||
severity |= SeverityFlagPending;
|
||||
else if (state == ServiceWarning)
|
||||
severity |= SeverityFlagWarning;
|
||||
else if (state == ServiceUnknown)
|
||||
severity |= SeverityFlagUnknown;
|
||||
else if (state == ServiceCritical)
|
||||
severity |= SeverityFlagCritical;
|
||||
|
||||
/* TODO: Add host reachability and handled */
|
||||
if (IsInDowntime())
|
||||
severity |= SeverityFlagDowntime;
|
||||
else if (IsAcknowledged())
|
||||
severity |= SeverityFlagAcknowledgement;
|
||||
else
|
||||
severity |= SeverityFlagUnhandled;
|
||||
|
||||
olock.Unlock();
|
||||
|
||||
return severity;
|
||||
}
|
||||
|
||||
bool Service::IsStateOK(ServiceState state)
|
||||
{
|
||||
return state == ServiceOK;
|
||||
|
@ -42,6 +42,7 @@ public:
|
||||
static Service::Ptr GetByNamePair(const String& hostName, const String& serviceName);
|
||||
|
||||
virtual Host::Ptr GetHost(void) const override;
|
||||
virtual int GetSeverity(void) const override;
|
||||
|
||||
virtual bool ResolveMacro(const String& macro, const CheckResult::Ptr& cr, Value *result) const override;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user