From f65aa511775a341bb32dd02cb6b6e6c0520435a7 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 8 Aug 2013 08:47:29 +0200 Subject: [PATCH] ido: Implement support for runtimevariables. --- lib/ido/dbconnection.cpp | 23 +++++++++++++++++++++++ lib/ido/dbconnection.h | 1 + 2 files changed, 24 insertions(+) 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; -- 2.40.0