Log a warning if there are more than 2 zone endpoint members

fixes #12222
This commit is contained in:
Gunnar Beutner 2016-07-26 08:10:47 +02:00
parent f2bacb2697
commit 55a3dc22bf
2 changed files with 15 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#include "remote/zone.tcpp"
#include "remote/jsonrpcconnection.hpp"
#include "base/objectlock.hpp"
#include "base/logger.hpp"
#include <boost/foreach.hpp>
using namespace icinga;
@ -121,3 +122,14 @@ Zone::Ptr Zone::GetLocalZone(void)
return local->GetZone();
}
void Zone::ValidateEndpointsRaw(const Array::Ptr& value, const ValidationUtils& utils)
{
ObjectImpl<Zone>::ValidateEndpointsRaw(value, utils);
if (value && value->GetLength() > 2) {
Log(LogWarning, "Zone")
<< "The Zone object '" << GetName() << "' has more than two endpoints."
<< " Due to a known issue this type of configuration is strongly"
<< " discouraged and may cause Icinga to use excessive amounts of CPU time.";
}
}

View File

@ -48,6 +48,9 @@ public:
static Zone::Ptr GetLocalZone(void);
protected:
virtual void ValidateEndpointsRaw(const Array::Ptr& value, const ValidationUtils& utils) override;
private:
Zone::Ptr m_Parent;
std::vector<Zone::Ptr> m_AllParents;