From: Michael Friedrich Date: Thu, 10 Nov 2016 16:16:08 +0000 (+0100) Subject: API: Set zone attribute for local zone if not specified X-Git-Tag: v2.6.0~64 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=72bf538c2984284a0c0c2e13a611b72accb241fa;p=icinga2 API: Set zone attribute for local zone if not specified This allows to sync the object to other nodes in the same zone on reconnect. refs #11684 --- diff --git a/lib/remote/createobjecthandler.cpp b/lib/remote/createobjecthandler.cpp index bcb0b256c..97f993bbc 100644 --- a/lib/remote/createobjecthandler.cpp +++ b/lib/remote/createobjecthandler.cpp @@ -22,6 +22,7 @@ #include "remote/httputility.hpp" #include "remote/filterutility.hpp" #include "remote/apiaction.hpp" +#include "remote/zone.hpp" #include "base/configtype.hpp" #include #include @@ -51,6 +52,18 @@ bool CreateObjectHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& r Array::Ptr templates = params->Get("templates"); Dictionary::Ptr attrs = params->Get("attrs"); + /* Put created objects into the local zone if not explicitely defined. + * This allows additional zone members to sync the + * configuration at some later point. + */ + Zone::Ptr localZone = Zone::GetLocalZone(); + String localZoneName; + + if (localZone && !attrs->Contains("zone")) { + localZoneName = localZone->GetName(); + attrs->Set("zone", localZoneName); + } + Dictionary::Ptr result1 = new Dictionary(); String status; Array::Ptr errors = new Array();