]> granicus.if.org Git - icinga2/commitdiff
CompatUtility: Fix broken custom variable dump.
authorMichael Friedrich <michael.friedrich@netways.de>
Tue, 21 Jan 2014 15:13:27 +0000 (16:13 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Tue, 21 Jan 2014 15:13:27 +0000 (16:13 +0100)
Fixes #5547

lib/db_ido/hostdbobject.cpp
lib/db_ido/servicedbobject.cpp
lib/icinga/compatutility.cpp

index 9cd68dad0c9b39e983d26163d0755845fc04f17d..8c43ec315be530fd7c6362ccb84ebebd0872c9d0 100644 (file)
@@ -276,8 +276,6 @@ void HostDbObject::OnConfigUpdate(void)
        }
 
        /* custom variables */
-       Log(LogDebug, "ido", "host customvars for '" + host->GetName() + "'");
-
        Dictionary::Ptr customvars;
        {
                ObjectLock olock(host);
@@ -285,25 +283,29 @@ void HostDbObject::OnConfigUpdate(void)
        }
 
        if (customvars) {
+               Log(LogDebug, "ido", "Dumping host customvars for '" + host->GetName() + "'");
+
                ObjectLock olock (customvars);
 
                BOOST_FOREACH(const Dictionary::Pair& kv, customvars) {
-                       Log(LogDebug, "db_ido", "host customvar key: '" + kv.first + "' value: '" + Convert::ToString(kv.second) + "'");
-
-                       Dictionary::Ptr fields3 = make_shared<Dictionary>();
-                       fields3->Set("varname", Convert::ToString(kv.first));
-                       fields3->Set("varvalue", Convert::ToString(kv.second));
-                       fields3->Set("config_type", 1);
-                       fields3->Set("has_been_modified", 0);
-                       fields3->Set("object_id", host);
-                       fields3->Set("instance_id", 0); /* DbConnection class fills in real ID */
-
-                       DbQuery query3;
-                       query3.Table = "customvariables";
-                       query3.Type = DbQueryInsert;
-                       query3.Category = DbCatConfig;
-                       query3.Fields = fields3;
-                       OnQuery(query3);
+                       if (!kv.first.IsEmpty()) {
+                               Log(LogDebug, "db_ido", "host customvar key: '" + kv.first + "' value: '" + Convert::ToString(kv.second) + "'");
+
+                               Dictionary::Ptr fields3 = make_shared<Dictionary>();
+                               fields3->Set("varname", Convert::ToString(kv.first));
+                               fields3->Set("varvalue", Convert::ToString(kv.second));
+                               fields3->Set("config_type", 1);
+                               fields3->Set("has_been_modified", 0);
+                               fields3->Set("object_id", host);
+                               fields3->Set("instance_id", 0); /* DbConnection class fills in real ID */
+
+                               DbQuery query3;
+                               query3.Table = "customvariables";
+                               query3.Type = DbQueryInsert;
+                               query3.Category = DbCatConfig;
+                               query3.Fields = fields3;
+                               OnQuery(query3);
+                       }
                }
        }
 }
index 953ac925db3c4b6f96044e530d485c840eef9eb4..1b45357dd7b1e816bd965f7fa18a5c921398569d 100644 (file)
@@ -262,8 +262,6 @@ void ServiceDbObject::OnConfigUpdate(void)
        }
 
        /* custom variables */
-       Log(LogDebug, "db_ido", "service customvars for '" + service->GetName() + "'");
-
        Dictionary::Ptr customvars;
 
        {
@@ -272,25 +270,29 @@ void ServiceDbObject::OnConfigUpdate(void)
        }
 
        if (customvars) {
+               Log(LogDebug, "db_ido", "Dumping service customvars for '" + service->GetName() + "'");
+
                ObjectLock olock(customvars);
 
                BOOST_FOREACH(const Dictionary::Pair& kv, customvars) {
-                       Log(LogDebug, "db_ido", "service customvar key: '" + kv.first + "' value: '" + Convert::ToString(kv.second) + "'");
-
-                       Dictionary::Ptr fields2 = make_shared<Dictionary>();
-                       fields2->Set("varname", Convert::ToString(kv.first));
-                       fields2->Set("varvalue", Convert::ToString(kv.second));
-                       fields2->Set("config_type", 1);
-                       fields2->Set("has_been_modified", 0);
-                       fields2->Set("object_id", service);
-                       fields2->Set("instance_id", 0); /* DbConnection class fills in real ID */
-
-                       DbQuery query2;
-                       query2.Table = "customvariables";
-                       query2.Type = DbQueryInsert;
-                       query2.Category = DbCatConfig;
-                       query2.Fields = fields2;
-                       OnQuery(query2);
+                       if (!kv.first.IsEmpty()) {
+                               Log(LogDebug, "db_ido", "service customvar key: '" + kv.first + "' value: '" + Convert::ToString(kv.second) + "'");
+
+                               Dictionary::Ptr fields2 = make_shared<Dictionary>();
+                               fields2->Set("varname", Convert::ToString(kv.first));
+                               fields2->Set("varvalue", Convert::ToString(kv.second));
+                               fields2->Set("config_type", 1);
+                               fields2->Set("has_been_modified", 0);
+                               fields2->Set("object_id", service);
+                               fields2->Set("instance_id", 0); /* DbConnection class fills in real ID */
+
+                               DbQuery query2;
+                               query2.Table = "customvariables";
+                               query2.Type = DbQueryInsert;
+                               query2.Category = DbCatConfig;
+                               query2.Fields = fields2;
+                               OnQuery(query2);
+                       }
                }
        }
 
index ddc6d782802c49b542d1edd17a46fc96767f3c0d..bdee5351a7efdf8b997b3a55b497e6f38dd45029 100644 (file)
@@ -425,19 +425,17 @@ Dictionary::Ptr CompatUtility::GetCustomVariableConfig(const DynamicObject::Ptr&
                return Dictionary::Ptr();
 
        ObjectLock olock(custom);
-       String key;
-       Value value;
        BOOST_FOREACH(const Dictionary::Pair& kv, custom) {
-               if (kv.first == "notes" ||
-                   kv.first == "action_url" ||
-                   kv.first == "notes_url" ||
-                   kv.first == "icon_image" ||
-                   kv.first == "icon_image_alt" ||
-                   kv.first == "statusmap_image" ||
-                   kv.first == "2d_coords")
-                       continue;
-
-               customvars->Set(key, value);
+               if (!kv.first.IsEmpty()) {
+                       if (kv.first != "notes" &&
+                           kv.first != "action_url" &&
+                           kv.first != "notes_url" &&
+                           kv.first != "icon_image" &&
+                           kv.first != "icon_image_alt" &&
+                           kv.first != "statusmap_image" &&
+                           kv.first != "2d_coords")
+                               customvars->Set(kv.first, kv.second);
+               }
        }
 
        return customvars;