Merge pull request #7096 from Icinga/feature/derivative-states

Expose derivative states via API
This commit is contained in:
Michael Friedrich 2019-04-09 16:55:47 +02:00 committed by GitHub
commit fdb1a36ab6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 32 additions and 5 deletions

View File

@ -139,6 +139,21 @@ int Checkable::GetSeverity() const
return 0;
}
bool Checkable::GetReachable() const
{
return IsReachable();
}
bool Checkable::GetProblem() const
{
return !IsStateOK(GetStateRaw());
}
bool Checkable::GetHandled() const
{
return GetProblem() && (IsInDowntime() || IsAcknowledged());
}
void Checkable::NotifyFixedDowntimeStart(const Downtime::Ptr& downtime)
{
if (!downtime->GetFixed())

View File

@ -85,6 +85,9 @@ public:
void ClearAcknowledgement(const MessageOrigin::Ptr& origin = nullptr);
int GetSeverity() const override;
bool GetReachable() const override;
bool GetProblem() const override;
bool GetHandled() const override;
/* Checks */
intrusive_ptr<CheckCommand> GetCheckCommand() const;
@ -96,7 +99,7 @@ public:
void UpdateNextCheck(const MessageOrigin::Ptr& origin = nullptr);
bool HasBeenChecked() const;
virtual bool IsStateOK(ServiceState state) = 0;
virtual bool IsStateOK(ServiceState state) const = 0;
double GetLastCheck() const final;

View File

@ -123,6 +123,15 @@ abstract class Checkable : CustomVarObject
[no_storage] int severity {
get;
};
[no_storage] bool reachable {
get;
};
[no_storage] bool problem {
get;
};
[no_storage] bool handled {
get;
};
[state] bool force_next_check;
[state] int acknowledgement (AcknowledgementRaw) {

View File

@ -192,7 +192,7 @@ int Host::GetSeverity() const
return severity;
}
bool Host::IsStateOK(ServiceState state)
bool Host::IsStateOK(ServiceState state) const
{
return Host::CalculateState(state) == HostUp;
}

View File

@ -39,7 +39,7 @@ public:
HostState GetLastHardState() const override;
int GetSeverity() const override;
bool IsStateOK(ServiceState state) override;
bool IsStateOK(ServiceState state) const override;
void SaveLastState(ServiceState state, double timestamp) override;
static HostState StateFromString(const String& state);

View File

@ -133,7 +133,7 @@ int Service::GetSeverity() const
return severity;
}
bool Service::IsStateOK(ServiceState state)
bool Service::IsStateOK(ServiceState state) const
{
return state == ServiceOK;
}

View File

@ -32,7 +32,7 @@ public:
bool ResolveMacro(const String& macro, const CheckResult::Ptr& cr, Value *result) const override;
bool IsStateOK(ServiceState state) override;
bool IsStateOK(ServiceState state) const override;
void SaveLastState(ServiceState state, double timestamp) override;
static ServiceState StateFromString(const String& state);