mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-25 14:44:32 +02:00
parent
17615ac444
commit
dc7980586b
@ -117,9 +117,9 @@ AcknowledgementType Checkable::GetAcknowledgement(void)
|
|||||||
return avalue;
|
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)
|
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());
|
return Endpoint::GetByName(GetCommandEndpointRaw());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Checkable::GetSeverity(void) const
|
||||||
|
{
|
||||||
|
/* overridden in Host/Service class. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void Checkable::NotifyFixedDowntimeStart(const Downtime::Ptr& downtime)
|
void Checkable::NotifyFixedDowntimeStart(const Downtime::Ptr& downtime)
|
||||||
{
|
{
|
||||||
if (!downtime->GetFixed())
|
if (!downtime->GetFixed())
|
||||||
|
@ -53,6 +53,22 @@ enum CheckableType
|
|||||||
CheckableService
|
CheckableService
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Severity Flags
|
||||||
|
*
|
||||||
|
* @ingroup icinga
|
||||||
|
*/
|
||||||
|
enum SeverityFlag
|
||||||
|
{
|
||||||
|
SeverityFlagDowntime = 1,
|
||||||
|
SeverityFlagAcknowledgement = 2,
|
||||||
|
SeverityFlagUnhandled = 8,
|
||||||
|
SeverityFlagPending = 16,
|
||||||
|
SeverityFlagWarning = 32,
|
||||||
|
SeverityFlagUnknown = 64,
|
||||||
|
SeverityFlagCritical = 128,
|
||||||
|
};
|
||||||
|
|
||||||
class CheckCommand;
|
class CheckCommand;
|
||||||
class EventCommand;
|
class EventCommand;
|
||||||
class Dependency;
|
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 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());
|
void ClearAcknowledgement(const MessageOrigin::Ptr& origin = MessageOrigin::Ptr());
|
||||||
|
|
||||||
|
virtual int GetSeverity(void) const override;
|
||||||
|
|
||||||
/* Checks */
|
/* Checks */
|
||||||
intrusive_ptr<CheckCommand> GetCheckCommand(void) const;
|
intrusive_ptr<CheckCommand> GetCheckCommand(void) const;
|
||||||
TimePeriod::Ptr GetCheckPeriod(void) const;
|
TimePeriod::Ptr GetCheckPeriod(void) const;
|
||||||
@ -132,7 +150,7 @@ public:
|
|||||||
void RemoveAllDowntimes(void);
|
void RemoveAllDowntimes(void);
|
||||||
void TriggerDowntimes(void);
|
void TriggerDowntimes(void);
|
||||||
bool IsInDowntime(void) const;
|
bool IsInDowntime(void) const;
|
||||||
bool IsAcknowledged(void);
|
bool IsAcknowledged(void) const;
|
||||||
|
|
||||||
std::set<Downtime::Ptr> GetDowntimes(void) const;
|
std::set<Downtime::Ptr> GetDowntimes(void) const;
|
||||||
void RegisterDowntime(const Downtime::Ptr& downtime);
|
void RegisterDowntime(const Downtime::Ptr& downtime);
|
||||||
|
@ -128,6 +128,11 @@ abstract class Checkable : CustomVarObject
|
|||||||
default {{{ return Application::GetStartTime(); }}}
|
default {{{ return Application::GetStartTime(); }}}
|
||||||
};
|
};
|
||||||
[state] Timestamp last_state_unreachable;
|
[state] Timestamp last_state_unreachable;
|
||||||
|
|
||||||
|
[no_storage] int severity {
|
||||||
|
get;
|
||||||
|
};
|
||||||
|
|
||||||
[state] bool force_next_check;
|
[state] bool force_next_check;
|
||||||
[state] int acknowledgement (AcknowledgementRaw) {
|
[state] int acknowledgement (AcknowledgementRaw) {
|
||||||
default {{{ return AcknowledgementNone; }}}
|
default {{{ return AcknowledgementNone; }}}
|
||||||
|
@ -181,6 +181,34 @@ HostState Host::GetLastHardState(void) const
|
|||||||
return CalculateState(GetLastHardStateRaw());
|
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)
|
bool Host::IsStateOK(ServiceState state)
|
||||||
{
|
{
|
||||||
return Host::CalculateState(state) == HostUp;
|
return Host::CalculateState(state) == HostUp;
|
||||||
|
@ -54,6 +54,7 @@ public:
|
|||||||
virtual HostState GetState(void) const override;
|
virtual HostState GetState(void) const override;
|
||||||
virtual HostState GetLastState(void) const override;
|
virtual HostState GetLastState(void) const override;
|
||||||
virtual HostState GetLastHardState(void) const override;
|
virtual HostState GetLastHardState(void) const override;
|
||||||
|
virtual int GetSeverity(void) const override;
|
||||||
|
|
||||||
virtual bool IsStateOK(ServiceState state) override;
|
virtual bool IsStateOK(ServiceState state) override;
|
||||||
virtual void SaveLastState(ServiceState state, double timestamp) override;
|
virtual void SaveLastState(ServiceState state, double timestamp) override;
|
||||||
|
@ -124,6 +124,36 @@ Host::Ptr Service::GetHost(void) const
|
|||||||
return m_Host;
|
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)
|
bool Service::IsStateOK(ServiceState state)
|
||||||
{
|
{
|
||||||
return state == ServiceOK;
|
return state == ServiceOK;
|
||||||
|
@ -42,6 +42,7 @@ public:
|
|||||||
static Service::Ptr GetByNamePair(const String& hostName, const String& serviceName);
|
static Service::Ptr GetByNamePair(const String& hostName, const String& serviceName);
|
||||||
|
|
||||||
virtual Host::Ptr GetHost(void) const override;
|
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;
|
virtual bool ResolveMacro(const String& macro, const CheckResult::Ptr& cr, Value *result) const override;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user