From 41d4ba169fa8336674fab94d3ceba68962a20fb1 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Tue, 17 Dec 2013 14:24:29 +0100 Subject: [PATCH] Embed constants into lib{base,icinga,db_ido}. Fixes #5247 --- itl/CMakeLists.txt | 2 +- itl/constants.conf | 84 ------------------------------------- itl/itl.conf | 1 - lib/base/dynamicobject.cpp | 13 ++++++ lib/base/dynamicobject.h | 2 + lib/base/scriptvariable.cpp | 5 ++- lib/base/scriptvariable.h | 2 +- lib/db_ido/dbquery.cpp | 22 ++++++++++ lib/db_ido/dbquery.h | 2 + lib/icinga/checkresult.cpp | 17 ++++++++ lib/icinga/checkresult.h | 2 + lib/icinga/notification.cpp | 26 ++++++++++++ lib/icinga/notification.h | 2 + 13 files changed, 92 insertions(+), 88 deletions(-) delete mode 100644 itl/constants.conf diff --git a/itl/CMakeLists.txt b/itl/CMakeLists.txt index 698f52a64..5bd37821b 100644 --- a/itl/CMakeLists.txt +++ b/itl/CMakeLists.txt @@ -16,6 +16,6 @@ # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. install( - FILES command.conf command-common.conf constants.conf itl.conf timeperiod.conf + FILES command.conf command-common.conf itl.conf timeperiod.conf DESTINATION ${CMAKE_INSTALL_DATADIR}/icinga2/itl ) diff --git a/itl/constants.conf b/itl/constants.conf deleted file mode 100644 index 09b2e2656..000000000 --- a/itl/constants.conf +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** - * Icinga 2 * - * Copyright (C) 2012-2013 Icinga Development Team (http://www.icinga.org/) * - * * - * This program is free software; you can redistribute it and/or * - * modify it under the terms of the GNU General Public License * - * as published by the Free Software Foundation; either version 2 * - * of the License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software Foundation * - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * - ******************************************************************************/ - -const StateOK = 0 -const StateWarning = 1 -const StateCritical = 2 -const StateUnknown = 3 - -/* - * Converting states to their filter values: 1< #include #include @@ -38,12 +40,23 @@ using namespace icinga; REGISTER_TYPE(DynamicObject); +INITIALIZE_ONCE(&DynamicObject::StaticInitialize); boost::signals2::signal DynamicObject::OnStarted; boost::signals2::signal DynamicObject::OnStopped; boost::signals2::signal DynamicObject::OnStateChanged; boost::signals2::signal DynamicObject::OnAuthorityChanged; +void DynamicObject::StaticInitialize(void) +{ + ScriptVariable::Set("DomainPrivRead", DomainPrivRead, true, true); + ScriptVariable::Set("DomainPrivCheckResult", DomainPrivCheckResult, true, true); + ScriptVariable::Set("DomainPrivCommand", DomainPrivCommand, true, true); + + ScriptVariable::Set("DomainPrevReadOnly", DomainPrivRead, true, true); + ScriptVariable::Set("DomainPrivReadWrite", DomainPrivRead | DomainPrivCheckResult | DomainPrivCommand, true, true); +} + DynamicObject::DynamicObject(void) { } diff --git a/lib/base/dynamicobject.h b/lib/base/dynamicobject.h index 9c7cfacb9..facf4ea8f 100644 --- a/lib/base/dynamicobject.h +++ b/lib/base/dynamicobject.h @@ -52,6 +52,8 @@ class I2_BASE_API DynamicObject : public ObjectImpl public: DECLARE_PTR_TYPEDEFS(DynamicObject); + static void StaticInitialize(void); + static boost::signals2::signal OnStarted; static boost::signals2::signal OnStopped; static boost::signals2::signal OnStateChanged; diff --git a/lib/base/scriptvariable.cpp b/lib/base/scriptvariable.cpp index 1904cfe4e..4a79efa46 100644 --- a/lib/base/scriptvariable.cpp +++ b/lib/base/scriptvariable.cpp @@ -63,7 +63,7 @@ Value ScriptVariable::Get(const String& name) return sv->GetData(); } -ScriptVariable::Ptr ScriptVariable::Set(const String& name, const Value& value, bool overwrite) +ScriptVariable::Ptr ScriptVariable::Set(const String& name, const Value& value, bool overwrite, bool make_const) { ScriptVariable::Ptr sv = GetByName(name); @@ -77,6 +77,9 @@ ScriptVariable::Ptr ScriptVariable::Set(const String& name, const Value& value, sv->SetData(value); } + if (make_const) + sv->SetConstant(true); + return sv; } diff --git a/lib/base/scriptvariable.h b/lib/base/scriptvariable.h index a272df023..1debd66e1 100644 --- a/lib/base/scriptvariable.h +++ b/lib/base/scriptvariable.h @@ -49,7 +49,7 @@ public: static ScriptVariable::Ptr GetByName(const String& name); static Value Get(const String& name); - static ScriptVariable::Ptr Set(const String& name, const Value& value, bool overwrite = true); + static ScriptVariable::Ptr Set(const String& name, const Value& value, bool overwrite = true, bool make_const = false); private: Value m_Data; diff --git a/lib/db_ido/dbquery.cpp b/lib/db_ido/dbquery.cpp index 91f80d99c..994230e2d 100644 --- a/lib/db_ido/dbquery.cpp +++ b/lib/db_ido/dbquery.cpp @@ -18,5 +18,27 @@ ******************************************************************************/ #include "db_ido/dbquery.h" +#include "base/initialize.h" +#include "base/scriptvariable.h" using namespace icinga; + +void DbQuery::StaticInitialize(void) +{ + ScriptVariable::Set("DbCatConfig", DbCatConfig, true, true); + ScriptVariable::Set("DbCatState", DbCatState, true, true); + ScriptVariable::Set("DbCatAcknowledgement", DbCatAcknowledgement, true, true); + ScriptVariable::Set("DbCatComment", DbCatComment, true, true); + ScriptVariable::Set("DbCatDowntime", DbCatDowntime, true, true); + ScriptVariable::Set("DbCatEventHandler", DbCatEventHandler, true, true); + ScriptVariable::Set("DbCatExternalCommand", DbCatExternalCommand, true, true); + ScriptVariable::Set("DbCatFlapping", DbCatFlapping, true, true); + ScriptVariable::Set("DbCatCheck", DbCatCheck, true, true); + ScriptVariable::Set("DbCatLog", DbCatLog, true, true); + ScriptVariable::Set("DbCatNotification", DbCatNotification, true, true); + ScriptVariable::Set("DbCatProgramStatus", DbCatProgramStatus, true, true); + ScriptVariable::Set("DbCatRetention", DbCatRetention, true, true); + ScriptVariable::Set("DbCatStateHistory", DbCatStateHistory, true, true); + + ScriptVariable::Set("DbCatEverything", ~(unsigned int)0, true, true); +} diff --git a/lib/db_ido/dbquery.h b/lib/db_ido/dbquery.h index 71828e589..657b3ea40 100644 --- a/lib/db_ido/dbquery.h +++ b/lib/db_ido/dbquery.h @@ -68,6 +68,8 @@ struct I2_DB_IDO_API DbQuery bool ConfigUpdate; bool StatusUpdate; + static void StaticInitialize(void); + DbQuery(void) : Type(0), Category(DbCatInvalid), ConfigUpdate(false), StatusUpdate(false) { } diff --git a/lib/icinga/checkresult.cpp b/lib/icinga/checkresult.cpp index a73d4ce88..b04d27230 100644 --- a/lib/icinga/checkresult.cpp +++ b/lib/icinga/checkresult.cpp @@ -19,7 +19,24 @@ #include "icinga/checkresult.h" #include "base/dynamictype.h" +#include "base/initialize.h" +#include "base/scriptvariable.h" using namespace icinga; REGISTER_TYPE(CheckResult); +INITIALIZE_ONCE(&CheckResult::StaticInitialize); + +void CheckResult::StaticInitialize(void) +{ + ScriptVariable::Set("StateOK", StateOK, true, true); + ScriptVariable::Set("StateWarning", StateWarning, true, true); + ScriptVariable::Set("StateCritical", StateCritical, true, true); + ScriptVariable::Set("StateUnknown", StateUnknown, true, true); + + ScriptVariable::Set("StateFilterOK", 1 << StateOK, true, true); + ScriptVariable::Set("StateFilterWarning", 1 << StateWarning, true, true); + ScriptVariable::Set("StateFilterCritical", 1 << StateCritical, true, true); + ScriptVariable::Set("StateFilterUnknown", 1 << StateUnknown, true, true); +} + diff --git a/lib/icinga/checkresult.h b/lib/icinga/checkresult.h index 67a75238c..7fe7dcb0f 100644 --- a/lib/icinga/checkresult.h +++ b/lib/icinga/checkresult.h @@ -35,6 +35,8 @@ class I2_ICINGA_API CheckResult : public ObjectImpl { public: DECLARE_PTR_TYPEDEFS(CheckResult); + + static void StaticInitialize(void); }; } diff --git a/lib/icinga/notification.cpp b/lib/icinga/notification.cpp index e89fd5c8d..28a5aa72b 100644 --- a/lib/icinga/notification.cpp +++ b/lib/icinga/notification.cpp @@ -27,14 +27,40 @@ #include "base/utility.h" #include "base/convert.h" #include "base/exception.h" +#include "base/initialize.h" +#include "base/scriptvariable.h" #include using namespace icinga; REGISTER_TYPE(Notification); +INITIALIZE_ONCE(&Notification::StaticInitialize); boost::signals2::signal Notification::OnNextNotificationChanged; +void Notification::StaticInitialize(void) +{ + ScriptVariable::Set("NotificationDowntimeStart", NotificationDowntimeStart, true, true); + ScriptVariable::Set("NotificationDowntimeEnd", NotificationDowntimeEnd, true, true); + ScriptVariable::Set("NotificationDowntimeRemoved", NotificationDowntimeRemoved, true, true); + ScriptVariable::Set("NotificationCustom", NotificationCustom, true, true); + ScriptVariable::Set("NotificationAcknowledgement", NotificationAcknowledgement, true, true); + ScriptVariable::Set("NotificationProblem", NotificationProblem, true, true); + ScriptVariable::Set("NotificationRecovery", NotificationRecovery, true, true); + ScriptVariable::Set("NotificationFlappingStart", NotificationFlappingStart, true, true); + ScriptVariable::Set("NotificationFlappingEnd", NotificationFlappingEnd, true, true); + + ScriptVariable::Set("NotificationFilterDowntimeStart", 1 << NotificationDowntimeStart, true, true); + ScriptVariable::Set("NotificationFilterDowntimeEnd", 1 << NotificationDowntimeEnd, true, true); + ScriptVariable::Set("NotificationFilterDowntimeRemoved", 1 << NotificationDowntimeRemoved, true, true); + ScriptVariable::Set("NotificationFilterCustom", 1 << NotificationCustom, true, true); + ScriptVariable::Set("NotificationFilterAcknowledgement", 1 << NotificationAcknowledgement, true, true); + ScriptVariable::Set("NotificationFilterProblem", 1 << NotificationProblem, true, true); + ScriptVariable::Set("NotificationFilterRecovery", 1 << NotificationRecovery, true, true); + ScriptVariable::Set("NotificationFilterFlappingStart", 1 << NotificationFlappingStart, true, true); + ScriptVariable::Set("NotificationFilterFlappingEnd", 1 << NotificationFlappingEnd, true, true); +} + void Notification::Start(void) { DynamicObject::Start(); diff --git a/lib/icinga/notification.h b/lib/icinga/notification.h index 87dffd97f..2e5066a6f 100644 --- a/lib/icinga/notification.h +++ b/lib/icinga/notification.h @@ -62,6 +62,8 @@ public: DECLARE_PTR_TYPEDEFS(Notification); DECLARE_TYPENAME(Notification); + static void StaticInitialize(void); + shared_ptr GetService(void) const; shared_ptr GetNotificationCommand(void) const; TimePeriod::Ptr GetNotificationPeriod(void) const;