diff --git a/lib/base/configobject.ti b/lib/base/configobject.ti index 432b3a79e..ea67dfa7b 100644 --- a/lib/base/configobject.ti +++ b/lib/base/configobject.ti @@ -88,6 +88,7 @@ abstract class ConfigObject : ConfigObjectBase < ConfigType [state, no_user_modify] double version { default {{{ return 0; }}} }; + [no_user_view, no_user_modify] String icingadb_identifier; }; } diff --git a/lib/icingadb/icingadb-utility.cpp b/lib/icingadb/icingadb-utility.cpp index bb24e0314..b247ed84a 100644 --- a/lib/icingadb/icingadb-utility.cpp +++ b/lib/icingadb/icingadb-utility.cpp @@ -62,7 +62,13 @@ String IcingaDB::FormatCommandLine(const Value& commandLine) String IcingaDB::GetObjectIdentifier(const ConfigObject::Ptr& object) { - return HashValue(new Array({m_EnvironmentId, object->GetName()})); + String identifier = object->GetIcingadbIdentifier(); + if (identifier.IsEmpty()) { + identifier = HashValue(new Array({m_EnvironmentId, object->GetName()})); + object->SetIcingadbIdentifier(identifier); + } + + return identifier; } /**