]> granicus.if.org Git - icinga2/commitdiff
DB IDO: Fix modified custom attribute update query problems
authorMichael Friedrich <michael.friedrich@netways.de>
Thu, 24 Sep 2015 09:45:44 +0000 (11:45 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Mon, 28 Sep 2015 11:24:27 +0000 (13:24 +0200)
fixes #10190

lib/db_ido/dbconnection.cpp
lib/db_ido/dbobject.cpp

index c5948cf1489c20a02d8e54e54f8eb8e286ed16b5..f2b6b90af728e656d2cf98ee474d0d6d890556d5 100644 (file)
@@ -167,36 +167,6 @@ void DbConnection::ProgramStatusHandler(void)
        InsertRuntimeVariable("total_scheduled_services", std::distance(DynamicType::GetObjectsByType<Service>().first, DynamicType::GetObjectsByType<Service>().second));
        InsertRuntimeVariable("total_hosts", std::distance(DynamicType::GetObjectsByType<Host>().first, DynamicType::GetObjectsByType<Host>().second));
        InsertRuntimeVariable("total_scheduled_hosts", std::distance(DynamicType::GetObjectsByType<Host>().first, DynamicType::GetObjectsByType<Host>().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)
index b2749364380c7f7f6e3e7eaefb296a5f6dfbe41f..60b92dd3ed043028bf295e189fca51fae2a12d44 100644 (file)
@@ -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);