From 9c00ae53b386dfd1939ddbe845acaed41d1a23d3 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Thu, 6 Aug 2020 16:56:13 +0200 Subject: [PATCH] modified-attributes.conf: store attributes to modify in Internal.modified_attributes --- lib/base/scriptframe.cpp | 4 +++- lib/icinga/icingaapplication.cpp | 14 +++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/base/scriptframe.cpp b/lib/base/scriptframe.cpp index 7a7f44c5f..6fb0a6ca4 100644 --- a/lib/base/scriptframe.cpp +++ b/lib/base/scriptframe.cpp @@ -36,7 +36,9 @@ INITIALIZE_ONCE_WITH_PRIORITY([]() { l_StatsNS = new Namespace(true); globalNS->Set("StatsFunctions", l_StatsNS, true); - globalNS->Set("Internal", new Namespace(), true); + Namespace::Ptr intNS = new Namespace(); + intNS->Set("modified_attributes", new Dictionary(), true); + globalNS->Set("Internal", intNS, true); }, InitializePriority::CreateNamespaces); INITIALIZE_ONCE_WITH_PRIORITY([]() { diff --git a/lib/icinga/icingaapplication.cpp b/lib/icinga/icingaapplication.cpp index 94ae0ede7..14194166f 100644 --- a/lib/icinga/icingaapplication.cpp +++ b/lib/icinga/icingaapplication.cpp @@ -135,15 +135,11 @@ static void PersistModAttrHelper(AtomicFile& fp, ConfigObject::Ptr& previousObje ConfigWriter::EmitRaw(fp, "\n}\n\n"); } - ConfigWriter::EmitRaw(fp, "var obj = "); - - Array::Ptr args1 = new Array({ - object->GetReflectionType()->GetName(), - object->GetName() - }); - ConfigWriter::EmitFunctionCall(fp, "get_object", args1); - - ConfigWriter::EmitRaw(fp, "\nif (obj) {\n"); + ConfigWriter::EmitRaw(fp, "Internal.modified_attributes["); + ConfigWriter::EmitValue(fp, 0, object->GetReflectionType()->GetName()); + ConfigWriter::EmitRaw(fp, "]["); + ConfigWriter::EmitValue(fp, 0, object->GetName()); + ConfigWriter::EmitRaw(fp, "] = obj => {\n"); } ConfigWriter::EmitRaw(fp, "\tobj.");