String config = params->Get("config");
+ bool newObject = false;
+
if (!object && !config.IsEmpty()) {
+ newObject = true;
+
/* object does not exist, create it through the API */
Array::Ptr errors = new Array();
if (!object)
return Empty;
- /* update object attributes if version was changed */
- if (objVersion <= object->GetVersion()) {
+ /* update object attributes if version was changed or if this is a new object */
+ if (newObject || objVersion <= object->GetVersion()) {
Log(LogNotice, "ApiListener")
<< "Discarding config update for object '" << object->GetName()
<< "': Object version " << std::fixed << object->GetVersion()
if (client)
JsonRpc::SendMessage(client->GetStream(), message);
- else
+ else {
+ Zone::Ptr target = static_pointer_cast<Zone>(object->GetZone());
+
+ if (!target)
+ target = Zone::GetLocalZone();
+
RelayMessage(origin, object, message, false);
+ }
}
if (client)
JsonRpc::SendMessage(client->GetStream(), message);
- else
- RelayMessage(origin, object, message, false);
+ else {
+ Zone::Ptr target = static_pointer_cast<Zone>(object->GetZone());
+
+ if (!target)
+ target = Zone::GetLocalZone();
+
+ RelayMessage(origin, target, message, false);
+ }
}
/* Initial sync on connect for new endpoints */
virtual void OnConfigLoaded(void) override;
virtual void OnAllConfigLoaded(void) override;
virtual void Start(bool runtimeCreated) override;
+ virtual void Stop(bool runtimeDeleted) override;
virtual void ValidateTlsProtocolmin(const String& value, const ValidationUtils& utils) override;