mirror of https://github.com/Icinga/icinga2.git
parent
e7214174b1
commit
62d0b6c30c
|
@ -26,8 +26,10 @@
|
||||||
#include "icinga/checkcommand.h"
|
#include "icinga/checkcommand.h"
|
||||||
#include "icinga/eventcommand.h"
|
#include "icinga/eventcommand.h"
|
||||||
#include "icinga/compatutility.h"
|
#include "icinga/compatutility.h"
|
||||||
|
#include "base/convert.h"
|
||||||
#include "base/objectlock.h"
|
#include "base/objectlock.h"
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/tuple/tuple.hpp>
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
|
@ -191,7 +193,7 @@ void HostDbObject::OnConfigUpdate(void)
|
||||||
{
|
{
|
||||||
Host::Ptr host = static_pointer_cast<Host>(GetObject());
|
Host::Ptr host = static_pointer_cast<Host>(GetObject());
|
||||||
|
|
||||||
/* safety delete */
|
/* parents, host dependencies */
|
||||||
DbQuery query_del1;
|
DbQuery query_del1;
|
||||||
query_del1.Table = GetType()->GetTable() + "_parenthosts";
|
query_del1.Table = GetType()->GetTable() + "_parenthosts";
|
||||||
query_del1.Type = DbQueryDelete;
|
query_del1.Type = DbQueryDelete;
|
||||||
|
@ -233,6 +235,46 @@ void HostDbObject::OnConfigUpdate(void)
|
||||||
query2.Fields = fields2;
|
query2.Fields = fields2;
|
||||||
OnQuery(query2);
|
OnQuery(query2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* custom variables */
|
||||||
|
Log(LogDebug, "ido", "host customvars for '" + host->GetName() + "'");
|
||||||
|
|
||||||
|
DbQuery query_del3;
|
||||||
|
query_del3.Table = "customvariables";
|
||||||
|
query_del3.Type = DbQueryDelete;
|
||||||
|
query_del3.WhereCriteria = boost::make_shared<Dictionary>();
|
||||||
|
query_del3.WhereCriteria->Set("object_id", host);
|
||||||
|
OnQuery(query_del3);
|
||||||
|
|
||||||
|
Dictionary::Ptr customvars;
|
||||||
|
{
|
||||||
|
ObjectLock olock(host);
|
||||||
|
customvars = CompatUtility::GetCustomVariableConfig(host);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (customvars) {
|
||||||
|
ObjectLock olock (customvars);
|
||||||
|
|
||||||
|
String key;
|
||||||
|
Value value;
|
||||||
|
BOOST_FOREACH(boost::tie(key, value), customvars) {
|
||||||
|
Log(LogDebug, "ido", "host customvar key: '" + key + "' value: '" + Convert::ToString(value) + "'");
|
||||||
|
|
||||||
|
Dictionary::Ptr fields3 = boost::make_shared<Dictionary>();
|
||||||
|
fields3->Set("varname", Convert::ToString(key));
|
||||||
|
fields3->Set("varvalue", Convert::ToString(value));
|
||||||
|
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.Fields = fields3;
|
||||||
|
OnQuery(query3);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HostDbObject::OnStatusUpdate(void)
|
void HostDbObject::OnStatusUpdate(void)
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "ido/servicedbobject.h"
|
#include "ido/servicedbobject.h"
|
||||||
#include "ido/dbtype.h"
|
#include "ido/dbtype.h"
|
||||||
#include "ido/dbvalue.h"
|
#include "ido/dbvalue.h"
|
||||||
|
#include "base/convert.h"
|
||||||
#include "base/objectlock.h"
|
#include "base/objectlock.h"
|
||||||
#include "base/initialize.h"
|
#include "base/initialize.h"
|
||||||
#include "base/dynamictype.h"
|
#include "base/dynamictype.h"
|
||||||
|
@ -204,6 +205,46 @@ void ServiceDbObject::OnConfigUpdate(void)
|
||||||
OnQuery(query1);
|
OnQuery(query1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* custom variables */
|
||||||
|
Log(LogDebug, "ido", "service customvars for '" + service->GetName() + "'");
|
||||||
|
|
||||||
|
DbQuery query_del2;
|
||||||
|
query_del2.Table = "customvariables";
|
||||||
|
query_del2.Type = DbQueryDelete;
|
||||||
|
query_del2.WhereCriteria = boost::make_shared<Dictionary>();
|
||||||
|
query_del2.WhereCriteria->Set("object_id", service);
|
||||||
|
OnQuery(query_del2);
|
||||||
|
|
||||||
|
Dictionary::Ptr customvars;
|
||||||
|
{
|
||||||
|
ObjectLock olock(service);
|
||||||
|
customvars = CompatUtility::GetCustomVariableConfig(service);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (customvars) {
|
||||||
|
ObjectLock olock (customvars);
|
||||||
|
|
||||||
|
String key;
|
||||||
|
Value value;
|
||||||
|
BOOST_FOREACH(boost::tie(key, value), customvars) {
|
||||||
|
Log(LogDebug, "ido", "service customvar key: '" + key + "' value: '" + Convert::ToString(value) + "'");
|
||||||
|
|
||||||
|
Dictionary::Ptr fields2 = boost::make_shared<Dictionary>();
|
||||||
|
fields2->Set("varname", Convert::ToString(key));
|
||||||
|
fields2->Set("varvalue", Convert::ToString(value));
|
||||||
|
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.Fields = fields2;
|
||||||
|
OnQuery(query2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* update comments */
|
/* update comments */
|
||||||
//OnCommentsChanged(service, Empty, CommentChangedUpdated);
|
//OnCommentsChanged(service, Empty, CommentChangedUpdated);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue