From bf9c89f625a4f7ab485ba8d310105a860427c667 Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Thu, 20 Mar 2014 11:33:59 +0100 Subject: [PATCH] DB IDO/Livestatus: Fix global enabled status values. Fixes #5808 --- components/livestatus/statustable.cpp | 54 ++++++++++++++++++--------- components/livestatus/statustable.h | 4 ++ lib/db_ido/dbconnection.cpp | 9 ++--- 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/components/livestatus/statustable.cpp b/components/livestatus/statustable.cpp index f52523e9e..ccd64caf1 100644 --- a/components/livestatus/statustable.cpp +++ b/components/livestatus/statustable.cpp @@ -68,17 +68,17 @@ void StatusTable::AddColumns(Table *table, const String& prefix, table->AddColumn(prefix + "livecheck_overflows_rate", Column(&Table::ZeroAccessor, objectAccessor)); table->AddColumn(prefix + "nagios_pid", Column(&StatusTable::NagiosPidAccessor, objectAccessor)); - table->AddColumn(prefix + "enable_notifications", Column(&Table::OneAccessor, objectAccessor)); - table->AddColumn(prefix + "execute_service_checks", Column(&Table::OneAccessor, objectAccessor)); + table->AddColumn(prefix + "enable_notifications", Column(&StatusTable::EnableNotificationsAccessor, objectAccessor)); + table->AddColumn(prefix + "execute_service_checks", Column(&StatusTable::ExecuteServiceChecksAccessor, objectAccessor)); table->AddColumn(prefix + "accept_passive_service_checks", Column(&Table::OneAccessor, objectAccessor)); table->AddColumn(prefix + "execute_host_checks", Column(&Table::OneAccessor, objectAccessor)); table->AddColumn(prefix + "accept_passive_host_checks", Column(&Table::OneAccessor, objectAccessor)); - table->AddColumn(prefix + "enable_event_handlers", Column(&Table::OneAccessor, objectAccessor)); + table->AddColumn(prefix + "enable_event_handlers", Column(&StatusTable::EnableEventHandlersAccessor, objectAccessor)); table->AddColumn(prefix + "obsess_over_services", Column(&Table::ZeroAccessor, objectAccessor)); table->AddColumn(prefix + "obsess_over_hosts", Column(&Table::ZeroAccessor, objectAccessor)); table->AddColumn(prefix + "check_service_freshness", Column(&Table::OneAccessor, objectAccessor)); table->AddColumn(prefix + "check_host_freshness", Column(&Table::OneAccessor, objectAccessor)); - table->AddColumn(prefix + "enable_flap_detection", Column(&Table::OneAccessor, objectAccessor)); + table->AddColumn(prefix + "enable_flap_detection", Column(&StatusTable::EnableFlapDetectionAccessor, objectAccessor)); table->AddColumn(prefix + "process_performance_data", Column(&StatusTable::ProcessPerformanceDataAccessor, objectAccessor)); table->AddColumn(prefix + "check_external_commands", Column(&Table::OneAccessor, objectAccessor)); table->AddColumn(prefix + "program_start", Column(&StatusTable::ProgramStartAccessor, objectAccessor)); @@ -111,74 +111,94 @@ void StatusTable::FetchRows(const AddRowFunction& addRowFn) addRowFn(obj); } -Value StatusTable::ConnectionsAccessor(const Value& row) +Value StatusTable::ConnectionsAccessor(const Value&) { return LivestatusListener::GetConnections(); } -Value StatusTable::ConnectionsRateAccessor(const Value& row) +Value StatusTable::ConnectionsRateAccessor(const Value&) { return (LivestatusListener::GetConnections() / (Utility::GetTime() - Application::GetStartTime())); } -Value StatusTable::ServiceChecksAccessor(const Value& row) +Value StatusTable::ServiceChecksAccessor(const Value&) { long timespan = static_cast(Utility::GetTime() - Application::GetStartTime()); return CIB::GetActiveChecksStatistics(timespan); } -Value StatusTable::ServiceChecksRateAccessor(const Value& row) +Value StatusTable::ServiceChecksRateAccessor(const Value&) { long timespan = static_cast(Utility::GetTime() - Application::GetStartTime()); return (CIB::GetActiveChecksStatistics(timespan) / (Utility::GetTime() - Application::GetStartTime())); } -Value StatusTable::ExternalCommandsAccessor(const Value& row) +Value StatusTable::ExternalCommandsAccessor(const Value&) { return Query::GetExternalCommands(); } -Value StatusTable::ExternalCommandsRateAccessor(const Value& row) +Value StatusTable::ExternalCommandsRateAccessor(const Value&) { return (Query::GetExternalCommands() / (Utility::GetTime() - Application::GetStartTime())); } -Value StatusTable::NagiosPidAccessor(const Value& row) +Value StatusTable::NagiosPidAccessor(const Value&) { return Utility::GetPid(); } +Value StatusTable::EnableNotificationsAccessor(const Value&) +{ + return (IcingaApplication::GetInstance()->GetEnableNotifications() ? 1 : 0); +} + +Value StatusTable::ExecuteServiceChecksAccessor(const Value&) +{ + return (IcingaApplication::GetInstance()->GetEnableChecks() ? 1 : 0); +} + +Value StatusTable::EnableEventHandlersAccessor(const Value&) +{ + return (IcingaApplication::GetInstance()->GetEnableEventHandlers() ? 1 : 0); +} + +Value StatusTable::EnableFlapDetectionAccessor(const Value&) +{ + return (IcingaApplication::GetInstance()->GetEnableFlapping() ? 1 : 0); +} + Value StatusTable::ProcessPerformanceDataAccessor(const Value&) { return (IcingaApplication::GetInstance()->GetEnablePerfdata() ? 1 : 0); } -Value StatusTable::ProgramStartAccessor(const Value& row) +Value StatusTable::ProgramStartAccessor(const Value&) { return static_cast(Application::GetStartTime()); } -Value StatusTable::NumHostsAccessor(const Value& row) +Value StatusTable::NumHostsAccessor(const Value&) { return static_cast(DynamicType::GetObjects().size()); } -Value StatusTable::NumServicesAccessor(const Value& row) +Value StatusTable::NumServicesAccessor(const Value&) { return static_cast(DynamicType::GetObjects().size()); } -Value StatusTable::ProgramVersionAccessor(const Value& row) +Value StatusTable::ProgramVersionAccessor(const Value&) { return Application::GetVersion(); } -Value StatusTable::LivestatusVersionAccessor(const Value& row) +Value StatusTable::LivestatusVersionAccessor(const Value&) { return Application::GetVersion(); } -Value StatusTable::LivestatusActiveConnectionsAccessor(const Value& row) +Value StatusTable::LivestatusActiveConnectionsAccessor(const Value&) { return LivestatusListener::GetClientsConnected(); } diff --git a/components/livestatus/statustable.h b/components/livestatus/statustable.h index 9122f00ca..f79254b2c 100644 --- a/components/livestatus/statustable.h +++ b/components/livestatus/statustable.h @@ -52,6 +52,10 @@ protected: static Value ExternalCommandsAccessor(const Value& row); static Value ExternalCommandsRateAccessor(const Value& row); static Value NagiosPidAccessor(const Value& row); + static Value EnableNotificationsAccessor(const Value& row); + static Value ExecuteServiceChecksAccessor(const Value& row); + static Value EnableEventHandlersAccessor(const Value& row); + static Value EnableFlapDetectionAccessor(const Value& row); static Value ProcessPerformanceDataAccessor(const Value& row); static Value ProgramStartAccessor(const Value& row); static Value NumHostsAccessor(const Value& row); diff --git a/lib/db_ido/dbconnection.cpp b/lib/db_ido/dbconnection.cpp index a2bea6f97..97c2eb52c 100644 --- a/lib/db_ido/dbconnection.cpp +++ b/lib/db_ido/dbconnection.cpp @@ -94,12 +94,11 @@ void DbConnection::ProgramStatusHandler(void) query2.Fields->Set("process_id", Utility::GetPid()); query2.Fields->Set("daemon_mode", 1); query2.Fields->Set("last_command_check", DbValue::FromTimestamp(Utility::GetTime())); - query2.Fields->Set("notifications_enabled", 1); - query2.Fields->Set("active_service_checks_enabled", 1); + query2.Fields->Set("notifications_enabled", (IcingaApplication::GetInstance()->GetEnableNotifications() ? 1 : 0)); + query2.Fields->Set("active_service_checks_enabled", (IcingaApplication::GetInstance()->GetEnableChecks() ? 1 : 0)); query2.Fields->Set("passive_service_checks_enabled", 1); - query2.Fields->Set("event_handlers_enabled", 1); - query2.Fields->Set("flap_detection_enabled", 1); - query2.Fields->Set("failure_prediction_enabled", 1); + query2.Fields->Set("event_handlers_enabled", (IcingaApplication::GetInstance()->GetEnableEventHandlers() ? 1 : 0)); + query2.Fields->Set("flap_detection_enabled", (IcingaApplication::GetInstance()->GetEnableFlapping() ? 1 : 0)); query2.Fields->Set("process_performance_data", (IcingaApplication::GetInstance()->GetEnablePerfdata() ? 1 : 0)); DbObject::OnQuery(query2); -- 2.40.0