From f0bdd4cf21ae2335edaa32bb25817f0bc8487af9 Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Thu, 24 Sep 2015 11:45:44 +0200 Subject: [PATCH] DB IDO: Fix modified custom attribute update query problems fixes #10190 --- lib/db_ido/dbconnection.cpp | 30 ------------------------------ lib/db_ido/dbobject.cpp | 10 ++++++++-- 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/lib/db_ido/dbconnection.cpp b/lib/db_ido/dbconnection.cpp index c5948cf14..f2b6b90af 100644 --- a/lib/db_ido/dbconnection.cpp +++ b/lib/db_ido/dbconnection.cpp @@ -167,36 +167,6 @@ void DbConnection::ProgramStatusHandler(void) InsertRuntimeVariable("total_scheduled_services", std::distance(DynamicType::GetObjectsByType().first, DynamicType::GetObjectsByType().second)); InsertRuntimeVariable("total_hosts", std::distance(DynamicType::GetObjectsByType().first, DynamicType::GetObjectsByType().second)); InsertRuntimeVariable("total_scheduled_hosts", std::distance(DynamicType::GetObjectsByType().first, DynamicType::GetObjectsByType().second)); - - Dictionary::Ptr vars = IcingaApplication::GetInstance()->GetVars(); - - if (!vars) - return; - - Log(LogDebug, "DbConnection", "Dumping global vars for icinga application"); - - ObjectLock olock(vars); - - BOOST_FOREACH(const Dictionary::Pair& kv, vars) { - if (!kv.first.IsEmpty()) { - Log(LogDebug, "DbConnection") - << "icinga application customvar key: '" << kv.first << "' value: '" << kv.second << "'"; - - Dictionary::Ptr fields4 = new Dictionary(); - fields4->Set("varname", Convert::ToString(kv.first)); - fields4->Set("varvalue", Convert::ToString(kv.second)); - fields4->Set("config_type", 1); - fields4->Set("has_been_modified", 0); - fields4->Set("instance_id", 0); /* DbConnection class fills in real ID */ - - DbQuery query4; - query4.Table = "customvariables"; - query4.Type = DbQueryInsert; - query4.Category = DbCatConfig; - query4.Fields = fields4; - DbObject::OnQuery(query4); - } - } } void DbConnection::CleanUpHandler(void) diff --git a/lib/db_ido/dbobject.cpp b/lib/db_ido/dbobject.cpp index b27493643..60b92dd3e 100644 --- a/lib/db_ido/dbobject.cpp +++ b/lib/db_ido/dbobject.cpp @@ -195,9 +195,15 @@ void DbObject::SendVarsConfigUpdate(void) DbQuery query; query.Table = "customvariables"; - query.Type = DbQueryInsert; + query.Type = DbQueryInsert | DbQueryUpdate; query.Category = DbCatConfig; query.Fields = fields; + + query.WhereCriteria = new Dictionary(); + query.WhereCriteria->Set("object_id", obj); + query.WhereCriteria->Set("varname", kv.first); + query.Object = this; + OnQuery(query); } } @@ -256,7 +262,7 @@ void DbObject::SendVarsStatusUpdate(void) query.WhereCriteria = new Dictionary(); query.WhereCriteria->Set("object_id", obj); - query.WhereCriteria->Set("varname", Convert::ToString(kv.first)); + query.WhereCriteria->Set("varname", kv.first); query.Object = this; OnQuery(query); -- 2.50.1