CompatUtility: Fix broken custom variable dump.

Fixes #5547
This commit is contained in:
Michael Friedrich 2014-01-21 16:13:27 +01:00
parent 876587d727
commit fcec5c61a0
3 changed files with 46 additions and 44 deletions

View File

@ -276,8 +276,6 @@ void HostDbObject::OnConfigUpdate(void)
} }
/* custom variables */ /* custom variables */
Log(LogDebug, "ido", "host customvars for '" + host->GetName() + "'");
Dictionary::Ptr customvars; Dictionary::Ptr customvars;
{ {
ObjectLock olock(host); ObjectLock olock(host);
@ -285,25 +283,29 @@ void HostDbObject::OnConfigUpdate(void)
} }
if (customvars) { if (customvars) {
Log(LogDebug, "ido", "Dumping host customvars for '" + host->GetName() + "'");
ObjectLock olock (customvars); ObjectLock olock (customvars);
BOOST_FOREACH(const Dictionary::Pair& kv, customvars) { BOOST_FOREACH(const Dictionary::Pair& kv, customvars) {
Log(LogDebug, "db_ido", "host customvar key: '" + kv.first + "' value: '" + Convert::ToString(kv.second) + "'"); if (!kv.first.IsEmpty()) {
Log(LogDebug, "db_ido", "host customvar key: '" + kv.first + "' value: '" + Convert::ToString(kv.second) + "'");
Dictionary::Ptr fields3 = make_shared<Dictionary>(); Dictionary::Ptr fields3 = make_shared<Dictionary>();
fields3->Set("varname", Convert::ToString(kv.first)); fields3->Set("varname", Convert::ToString(kv.first));
fields3->Set("varvalue", Convert::ToString(kv.second)); fields3->Set("varvalue", Convert::ToString(kv.second));
fields3->Set("config_type", 1); fields3->Set("config_type", 1);
fields3->Set("has_been_modified", 0); fields3->Set("has_been_modified", 0);
fields3->Set("object_id", host); fields3->Set("object_id", host);
fields3->Set("instance_id", 0); /* DbConnection class fills in real ID */ fields3->Set("instance_id", 0); /* DbConnection class fills in real ID */
DbQuery query3; DbQuery query3;
query3.Table = "customvariables"; query3.Table = "customvariables";
query3.Type = DbQueryInsert; query3.Type = DbQueryInsert;
query3.Category = DbCatConfig; query3.Category = DbCatConfig;
query3.Fields = fields3; query3.Fields = fields3;
OnQuery(query3); OnQuery(query3);
}
} }
} }
} }

View File

@ -262,8 +262,6 @@ void ServiceDbObject::OnConfigUpdate(void)
} }
/* custom variables */ /* custom variables */
Log(LogDebug, "db_ido", "service customvars for '" + service->GetName() + "'");
Dictionary::Ptr customvars; Dictionary::Ptr customvars;
{ {
@ -272,25 +270,29 @@ void ServiceDbObject::OnConfigUpdate(void)
} }
if (customvars) { if (customvars) {
Log(LogDebug, "db_ido", "Dumping service customvars for '" + service->GetName() + "'");
ObjectLock olock(customvars); ObjectLock olock(customvars);
BOOST_FOREACH(const Dictionary::Pair& kv, customvars) { BOOST_FOREACH(const Dictionary::Pair& kv, customvars) {
Log(LogDebug, "db_ido", "service customvar key: '" + kv.first + "' value: '" + Convert::ToString(kv.second) + "'"); if (!kv.first.IsEmpty()) {
Log(LogDebug, "db_ido", "service customvar key: '" + kv.first + "' value: '" + Convert::ToString(kv.second) + "'");
Dictionary::Ptr fields2 = make_shared<Dictionary>(); Dictionary::Ptr fields2 = make_shared<Dictionary>();
fields2->Set("varname", Convert::ToString(kv.first)); fields2->Set("varname", Convert::ToString(kv.first));
fields2->Set("varvalue", Convert::ToString(kv.second)); fields2->Set("varvalue", Convert::ToString(kv.second));
fields2->Set("config_type", 1); fields2->Set("config_type", 1);
fields2->Set("has_been_modified", 0); fields2->Set("has_been_modified", 0);
fields2->Set("object_id", service); fields2->Set("object_id", service);
fields2->Set("instance_id", 0); /* DbConnection class fills in real ID */ fields2->Set("instance_id", 0); /* DbConnection class fills in real ID */
DbQuery query2; DbQuery query2;
query2.Table = "customvariables"; query2.Table = "customvariables";
query2.Type = DbQueryInsert; query2.Type = DbQueryInsert;
query2.Category = DbCatConfig; query2.Category = DbCatConfig;
query2.Fields = fields2; query2.Fields = fields2;
OnQuery(query2); OnQuery(query2);
}
} }
} }

View File

@ -425,19 +425,17 @@ Dictionary::Ptr CompatUtility::GetCustomVariableConfig(const DynamicObject::Ptr&
return Dictionary::Ptr(); return Dictionary::Ptr();
ObjectLock olock(custom); ObjectLock olock(custom);
String key;
Value value;
BOOST_FOREACH(const Dictionary::Pair& kv, custom) { BOOST_FOREACH(const Dictionary::Pair& kv, custom) {
if (kv.first == "notes" || if (!kv.first.IsEmpty()) {
kv.first == "action_url" || if (kv.first != "notes" &&
kv.first == "notes_url" || kv.first != "action_url" &&
kv.first == "icon_image" || kv.first != "notes_url" &&
kv.first == "icon_image_alt" || kv.first != "icon_image" &&
kv.first == "statusmap_image" || kv.first != "icon_image_alt" &&
kv.first == "2d_coords") kv.first != "statusmap_image" &&
continue; kv.first != "2d_coords")
customvars->Set(kv.first, kv.second);
customvars->Set(key, value); }
} }
return customvars; return customvars;