From: Michael Friedrich Date: Fri, 18 Sep 2015 10:49:38 +0000 (+0200) Subject: Only sync objects actually belonging to a cluster zone X-Git-Tag: v2.4.0~310 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=57179f3bdd26f30f3e0d6939b117e01603eac2da;p=icinga2 Only sync objects actually belonging to a cluster zone refs #9927 refs #9100 --- diff --git a/lib/remote/apilistener-configsync.cpp b/lib/remote/apilistener-configsync.cpp index d38444684..d15fbfcdc 100644 --- a/lib/remote/apilistener-configsync.cpp +++ b/lib/remote/apilistener-configsync.cpp @@ -248,6 +248,10 @@ void ApiListener::UpdateConfigObject(const ConfigObject::Ptr& object, const Mess if (object->GetPackage() != "_api") return; + /* don't sync objects without a zone attribute */ + if (object->GetZoneName().IsEmpty()) + return; + Dictionary::Ptr message = new Dictionary(); message->Set("jsonrpc", "2.0"); message->Set("method", "config::UpdateObject"); @@ -303,6 +307,10 @@ void ApiListener::DeleteConfigObject(const ConfigObject::Ptr& object, const Mess if (object->GetPackage() != "_api") return; + /* don't sync objects without a zone attribute */ + if (object->GetZoneName().IsEmpty()) + return; + Dictionary::Ptr message = new Dictionary(); message->Set("jsonrpc", "2.0"); message->Set("method", "config::DeleteObject"); @@ -346,17 +354,12 @@ void ApiListener::SendRuntimeConfigObjects(const JsonRpcConnection::Ptr& aclient String objZone = object->GetZoneName(); - /* only sync objects in the same zone if no zone attribute was set */ - if (objZone.IsEmpty() && azone != lzone) { - Log(LogDebug, "ApiListener") - << "Skipping sync: No object zone specified and client zone '" - << azone->GetName() << "' does not match local zone '" - << lzone->GetName() << "'."; + /* don't sync objects without a zone attribute */ + if (objZone.IsEmpty()) continue; - } /* don't sync objects for non-matching parent-child zones */ - if (!objZone.IsEmpty() && !azone->IsChildOf(lzone)) { + if (!azone->IsChildOf(lzone) && azone != lzone) { Log(LogDebug, "ApiListener") << "Skipping sync: object zone '" << objZone << "' defined but client zone '" << azone->GetName()