Implement ScheduledDowntime::AllConfigIsLoaded()

refs #6542

(cherry picked from commit bbcf469af1)
This commit is contained in:
Alexander A. Klimov 2018-12-06 12:41:49 +01:00 committed by Michael Friedrich
parent 9f22300cf7
commit 7c71218d88
2 changed files with 13 additions and 0 deletions

View File

@ -80,6 +80,8 @@ void ScheduledDowntime::OnAllConfigLoaded()
if (!GetCheckable())
BOOST_THROW_EXCEPTION(ScriptError("ScheduledDowntime '" + GetName() + "' references a host/service which doesn't exist.", GetDebugInfo()));
m_AllConfigLoaded.store(true);
}
void ScheduledDowntime::Start(bool runtimeCreated)
@ -339,3 +341,10 @@ void ScheduledDowntime::ValidateChildOptions(const Lazy<Value>& lvalue, const Va
BOOST_THROW_EXCEPTION(ValidationError(this, { "child_options" }, "Invalid child_options specified"));
}
}
bool ScheduledDowntime::AllConfigIsLoaded()
{
return m_AllConfigLoaded.load();
}
std::atomic<bool> ScheduledDowntime::m_AllConfigLoaded (false);

View File

@ -23,6 +23,7 @@
#include "icinga/i2-icinga.hpp"
#include "icinga/scheduleddowntime-ti.hpp"
#include "icinga/checkable.hpp"
#include <atomic>
namespace icinga
{
@ -47,6 +48,7 @@ public:
static void EvaluateApplyRules(const intrusive_ptr<Host>& host);
static void EvaluateApplyRules(const intrusive_ptr<Service>& service);
static bool AllConfigIsLoaded();
void ValidateRanges(const Lazy<Dictionary::Ptr>& lvalue, const ValidationUtils& utils) override;
void ValidateChildOptions(const Lazy<Value>& lvalue, const ValidationUtils& utils) override;
@ -62,6 +64,8 @@ private:
std::pair<double, double> FindNextSegment();
void CreateNextDowntime();
static std::atomic<bool> m_AllConfigLoaded;
static bool EvaluateApplyRuleInstance(const Checkable::Ptr& checkable, const String& name, ScriptFrame& frame, const ApplyRule& rule);
static bool EvaluateApplyRule(const Checkable::Ptr& checkable, const ApplyRule& rule);
};