From: Gunnar Beutner Date: Thu, 8 Aug 2013 06:47:29 +0000 (+0200) Subject: ido: Implement support for runtimevariables. X-Git-Tag: v0.0.3~725 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f65aa511775a341bb32dd02cb6b6e6c0520435a7;p=icinga2 ido: Implement support for runtimevariables. --- diff --git a/lib/ido/dbconnection.cpp b/lib/ido/dbconnection.cpp index 62e3d7894..098601701 100644 --- a/lib/ido/dbconnection.cpp +++ b/lib/ido/dbconnection.cpp @@ -60,6 +60,17 @@ String DbConnection::GetTablePrefix(void) const return m_TablePrefix; } +void DbConnection::InsertRuntimeVariable(const String& key, const Value& value) +{ + DbQuery query; + + query.Fields = boost::make_shared(); + query.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */ + query.Fields->Set("varname", key); + query.Fields->Set("varvalue", value); + DbObject::OnQuery(query); +} + void DbConnection::ProgramStatusHandler(void) { DbQuery query1; @@ -89,6 +100,18 @@ void DbConnection::ProgramStatusHandler(void) query2.Fields->Set("failure_prediction_enabled", 1); query2.Fields->Set("process_performance_data", 1); DbObject::OnQuery(query2); + + DbQuery query3; + query3.Table = "runtimevariables"; + query1.Type = DbQueryDelete; + query1.WhereCriteria = boost::make_shared(); + query1.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */ + DbObject::OnQuery(query1); + + InsertRuntimeVariable("total_services", DynamicType::GetObjects("Service").size()); + InsertRuntimeVariable("total_scheduled_services", DynamicType::GetObjects("Service").size()); + InsertRuntimeVariable("total_hosts", DynamicType::GetObjects("Host").size()); + InsertRuntimeVariable("total_scheduled_hosts", DynamicType::GetObjects("Host").size()); } void DbConnection::SetObjectID(const DbObject::Ptr& dbobj, const DbReference& dbref) diff --git a/lib/ido/dbconnection.h b/lib/ido/dbconnection.h index 35b3aca4c..36ab73ba2 100644 --- a/lib/ido/dbconnection.h +++ b/lib/ido/dbconnection.h @@ -74,6 +74,7 @@ private: std::set m_StatusUpdates; static Timer::Ptr m_ProgramStatusTimer; + static void InsertRuntimeVariable(const String& key, const Value& value); static void ProgramStatusHandler(void); friend class DbType;