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
This commit is contained in:
Michael Friedrich 2016-11-10 17:16:08 +01:00
parent 5dd4898eb3
commit 72bf538c29
1 changed files with 13 additions and 0 deletions

View File

@ -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 <boost/algorithm/string.hpp>
#include <set>
@ -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();