diff --git a/lib/cli/repositoryutility.cpp b/lib/cli/repositoryutility.cpp index f1d55201e..c1604c6f9 100644 --- a/lib/cli/repositoryutility.cpp +++ b/lib/cli/repositoryutility.cpp @@ -20,7 +20,6 @@ #include "cli/repositoryutility.hpp" #include "cli/clicommand.hpp" #include "config/configtype.hpp" -#include "config/configcompilercontext.hpp" #include "config/configcompiler.hpp" #include "base/logger.hpp" #include "base/application.hpp" diff --git a/lib/compat/compatlogger.cpp b/lib/compat/compatlogger.cpp index 8b318bad8..7690dc1dd 100644 --- a/lib/compat/compatlogger.cpp +++ b/lib/compat/compatlogger.cpp @@ -25,7 +25,6 @@ #include "icinga/macroprocessor.hpp" #include "icinga/externalcommandprocessor.hpp" #include "icinga/compatutility.hpp" -#include "config/configcompilercontext.hpp" #include "base/dynamictype.hpp" #include "base/objectlock.hpp" #include "base/logger.hpp" @@ -571,7 +570,7 @@ void CompatLogger::ValidateRotationMethod(const String& location, const CompatLo if (rotation_method != "HOURLY" && rotation_method != "DAILY" && rotation_method != "WEEKLY" && rotation_method != "MONTHLY" && rotation_method != "NONE") { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Rotation method '" + rotation_method + "' is invalid.", GetDebugInfo())); + location + ": Rotation method '" + rotation_method + "' is invalid.", object->GetDebugInfo())); } } diff --git a/lib/config/config_lexer.ll b/lib/config/config_lexer.ll index a46ae9f32..2837dbebe 100644 --- a/lib/config/config_lexer.ll +++ b/lib/config/config_lexer.ll @@ -20,7 +20,6 @@ #include "config/configcompiler.hpp" #include "config/typerule.hpp" -#include "config/configcompilercontext.hpp" #include "config/expression.hpp" using namespace icinga; diff --git a/lib/config/config_parser.yy b/lib/config/config_parser.yy index b422c18bb..2e6c62886 100644 --- a/lib/config/config_parser.yy +++ b/lib/config/config_parser.yy @@ -23,7 +23,6 @@ #include "config/i2-config.hpp" #include "config/configitembuilder.hpp" #include "config/configcompiler.hpp" -#include "config/configcompilercontext.hpp" #include "config/typerule.hpp" #include "config/typerulelist.hpp" #include "config/expression.hpp" diff --git a/lib/config/configcompilercontext.hpp b/lib/config/configcompilercontext.hpp index f51a2ba79..5bbf20690 100644 --- a/lib/config/configcompilercontext.hpp +++ b/lib/config/configcompilercontext.hpp @@ -21,26 +21,13 @@ #define CONFIGCOMPILERCONTEXT_H #include "config/i2-config.hpp" -#include "base/debuginfo.hpp" #include "base/stdiostream.hpp" #include "base/dictionary.hpp" #include -#include namespace icinga { -struct I2_CONFIG_API ConfigCompilerMessage -{ - bool Error; - String Text; - DebugInfo Location; - - ConfigCompilerMessage(bool error, const String& text, const DebugInfo& di) - : Error(error), Text(text), Location(di) - { } -}; - /* * @ingroup config */ diff --git a/lib/config/configitem.cpp b/lib/config/configitem.cpp index b358dd417..6e6352977 100644 --- a/lib/config/configitem.cpp +++ b/lib/config/configitem.cpp @@ -216,7 +216,7 @@ DynamicObject::Ptr ConfigItem::Commit(bool discard) ConfigType::Ptr ctype = ConfigType::GetByName(GetType()); - if (ctype) + if (ctype) { TypeRuleUtilities utils; ctype->ValidateItem(GetName(), dobj, GetDebugInfo(), &utils); } diff --git a/lib/config/configtype.cpp b/lib/config/configtype.cpp index 19dfdecdc..bb9fe8f46 100644 --- a/lib/config/configtype.cpp +++ b/lib/config/configtype.cpp @@ -18,7 +18,6 @@ ******************************************************************************/ #include "config/configtype.hpp" -#include "config/configcompilercontext.hpp" #include "config/vmops.hpp" #include "base/objectlock.hpp" #include "base/convert.hpp" diff --git a/lib/db_ido/dbconnection.cpp b/lib/db_ido/dbconnection.cpp index 9eee40f3c..54fa30b11 100644 --- a/lib/db_ido/dbconnection.cpp +++ b/lib/db_ido/dbconnection.cpp @@ -22,7 +22,6 @@ #include "icinga/icingaapplication.hpp" #include "icinga/host.hpp" #include "icinga/service.hpp" -#include "config/configcompilercontext.hpp" #include "base/dynamictype.hpp" #include "base/convert.hpp" #include "base/objectlock.hpp" @@ -30,6 +29,7 @@ #include "base/initialize.hpp" #include "base/logger.hpp" #include "base/scriptfunction.hpp" +#include "base/exception.hpp" #include using namespace icinga; @@ -425,6 +425,6 @@ void DbConnection::ValidateFailoverTimeout(const String& location, const DbConne { if (object->GetFailoverTimeout() < 60) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Failover timeout minimum is 60s.", GetDebugInfo())); + location + ": Failover timeout minimum is 60s.", object->GetDebugInfo())); } } diff --git a/lib/icinga/checkable.cpp b/lib/icinga/checkable.cpp index e6a475351..ad8a92117 100644 --- a/lib/icinga/checkable.cpp +++ b/lib/icinga/checkable.cpp @@ -18,10 +18,10 @@ ******************************************************************************/ #include "icinga/checkable.hpp" -#include "config/configcompilercontext.hpp" #include "base/objectlock.hpp" #include "base/utility.hpp" #include "base/scriptfunction.hpp" +#include "base/exception.hpp" #include #include @@ -271,6 +271,6 @@ void Checkable::ValidateCheckInterval(const String& location, const Checkable::P { if (object->GetCheckInterval() <= 0) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": check_interval must be greater than 0.", GetDebugInfo())); + location + ": check_interval must be greater than 0.", object->GetDebugInfo())); } } diff --git a/lib/icinga/command.cpp b/lib/icinga/command.cpp index 538330759..b6ccf9fd4 100644 --- a/lib/icinga/command.cpp +++ b/lib/icinga/command.cpp @@ -19,7 +19,7 @@ #include "icinga/command.hpp" #include "base/scriptfunction.hpp" -#include "config/configcompilercontext.hpp" +#include "base/exception.hpp" using namespace icinga; @@ -48,7 +48,7 @@ void Command::ValidateAttributes(const String& location, const Command::Ptr& obj { if (object->GetArguments() != Empty && !object->GetCommandLine().IsObjectType()) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Attribute 'command' must be an array if the 'arguments' attribute is set.", GetDebugInfo())); + location + ": Attribute 'command' must be an array if the 'arguments' attribute is set.", object->GetDebugInfo())); } } diff --git a/lib/icinga/dependency-apply.cpp b/lib/icinga/dependency-apply.cpp index 82cd6e578..1fca51351 100644 --- a/lib/icinga/dependency-apply.cpp +++ b/lib/icinga/dependency-apply.cpp @@ -21,7 +21,6 @@ #include "icinga/service.hpp" #include "config/configitembuilder.hpp" #include "config/applyrule.hpp" -#include "config/configcompilercontext.hpp" #include "base/initialize.hpp" #include "base/dynamictype.hpp" #include "base/logger.hpp" diff --git a/lib/icinga/dependency.cpp b/lib/icinga/dependency.cpp index bbd20d392..55c9e3786 100644 --- a/lib/icinga/dependency.cpp +++ b/lib/icinga/dependency.cpp @@ -19,9 +19,9 @@ #include "icinga/dependency.hpp" #include "icinga/service.hpp" -#include "config/configcompilercontext.hpp" #include "base/logger.hpp" #include "base/scriptfunction.hpp" +#include "base/exception.hpp" #include using namespace icinga; @@ -209,11 +209,11 @@ void Dependency::ValidateFilters(const String& location, const Dependency::Ptr& if (object->GetParentServiceName().IsEmpty() && (sfilter & ~(StateFilterUp | StateFilterDown)) != 0) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": State filter is invalid for host dependency.", GetDebugInfo())); + location + ": State filter is invalid for host dependency.", object->GetDebugInfo())); } if (!object->GetParentServiceName().IsEmpty() && (sfilter & ~(StateFilterOK | StateFilterWarning | StateFilterCritical | StateFilterUnknown)) != 0) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": State filter is invalid for service dependency.", GetDebugInfo())); + location + ": State filter is invalid for service dependency.", object->GetDebugInfo())); } } diff --git a/lib/icinga/host.cpp b/lib/icinga/host.cpp index 2f4e5a341..f48c12978 100644 --- a/lib/icinga/host.cpp +++ b/lib/icinga/host.cpp @@ -22,7 +22,6 @@ #include "icinga/hostgroup.hpp" #include "icinga/pluginutility.hpp" #include "icinga/scheduleddowntime.hpp" -#include "config/configcompilercontext.hpp" #include "base/exception.hpp" #include "base/objectlock.hpp" #include "base/convert.hpp" diff --git a/lib/icinga/notification-apply.cpp b/lib/icinga/notification-apply.cpp index 01d3f4e1b..61d3ee1a3 100644 --- a/lib/icinga/notification-apply.cpp +++ b/lib/icinga/notification-apply.cpp @@ -21,7 +21,6 @@ #include "icinga/service.hpp" #include "config/configitembuilder.hpp" #include "config/applyrule.hpp" -#include "config/configcompilercontext.hpp" #include "base/initialize.hpp" #include "base/dynamictype.hpp" #include "base/logger.hpp" diff --git a/lib/icinga/notification.cpp b/lib/icinga/notification.cpp index c9326f2a9..95dafb175 100644 --- a/lib/icinga/notification.cpp +++ b/lib/icinga/notification.cpp @@ -20,7 +20,6 @@ #include "icinga/notification.hpp" #include "icinga/notificationcommand.hpp" #include "icinga/service.hpp" -#include "config/configcompilercontext.hpp" #include "base/objectlock.hpp" #include "base/logger.hpp" #include "base/utility.hpp" @@ -502,12 +501,12 @@ void Notification::ValidateFilters(const String& location, const Notification::P if (object->GetServiceName().IsEmpty() && (sfilter & ~(StateFilterUp | StateFilterDown)) != 0) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": State filter is invalid.", GetDebugInfo())); + location + ": State filter is invalid.", object->GetDebugInfo())); } if (!object->GetServiceName().IsEmpty() && (sfilter & ~(StateFilterOK | StateFilterWarning | StateFilterCritical | StateFilterUnknown)) != 0) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": State filter is invalid.", GetDebugInfo())); + location + ": State filter is invalid.", object->GetDebugInfo())); } int tfilter = FilterArrayToInt(object->GetTypes(), 0); @@ -516,7 +515,7 @@ void Notification::ValidateFilters(const String& location, const Notification::P 1 << NotificationCustom | 1 << NotificationAcknowledgement | 1 << NotificationProblem | 1 << NotificationRecovery | 1 << NotificationFlappingStart | 1 << NotificationFlappingEnd)) != 0) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Type filter is invalid.", GetDebugInfo())); + location + ": Type filter is invalid.", object->GetDebugInfo())); } } diff --git a/lib/icinga/scheduleddowntime-apply.cpp b/lib/icinga/scheduleddowntime-apply.cpp index b288b1864..73a9d4851 100644 --- a/lib/icinga/scheduleddowntime-apply.cpp +++ b/lib/icinga/scheduleddowntime-apply.cpp @@ -21,7 +21,6 @@ #include "icinga/service.hpp" #include "config/configitembuilder.hpp" #include "config/applyrule.hpp" -#include "config/configcompilercontext.hpp" #include "base/initialize.hpp" #include "base/dynamictype.hpp" #include "base/logger.hpp" diff --git a/lib/icinga/service-apply.cpp b/lib/icinga/service-apply.cpp index 1276e90aa..e09a37c19 100644 --- a/lib/icinga/service-apply.cpp +++ b/lib/icinga/service-apply.cpp @@ -20,7 +20,6 @@ #include "icinga/service.hpp" #include "config/configitembuilder.hpp" #include "config/applyrule.hpp" -#include "config/configcompilercontext.hpp" #include "base/initialize.hpp" #include "base/dynamictype.hpp" #include "base/logger.hpp" diff --git a/lib/icinga/user.cpp b/lib/icinga/user.cpp index 0e7b6374b..434e520ad 100644 --- a/lib/icinga/user.cpp +++ b/lib/icinga/user.cpp @@ -21,9 +21,9 @@ #include "icinga/usergroup.hpp" #include "icinga/notification.hpp" #include "icinga/usergroup.hpp" -#include "config/configcompilercontext.hpp" #include "base/scriptfunction.hpp" #include "base/objectlock.hpp" +#include "base/exception.hpp" #include using namespace icinga; @@ -101,22 +101,22 @@ TimePeriod::Ptr User::GetPeriod(void) const return TimePeriod::GetByName(GetPeriodRaw()); } -void User::ValidateFilters(const String& location, const Dictionary::Ptr& attrs) +void User::ValidateFilters(const String& location, const User::Ptr& object) { - int sfilter = FilterArrayToInt(attrs->Get("states"), 0); + int sfilter = FilterArrayToInt(object->GetStates(), 0); if ((sfilter & ~(StateFilterUp | StateFilterDown | StateFilterOK | StateFilterWarning | StateFilterCritical | StateFilterUnknown)) != 0) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": State filter is invalid.", GetDebugInfo())); + location + ": State filter is invalid.", object->GetDebugInfo())); } - int tfilter = FilterArrayToInt(attrs->Get("types"), 0); + int tfilter = FilterArrayToInt(object->GetTypes(), 0); if ((tfilter & ~(1 << NotificationDowntimeStart | 1 << NotificationDowntimeEnd | 1 << NotificationDowntimeRemoved | 1 << NotificationCustom | 1 << NotificationAcknowledgement | 1 << NotificationProblem | 1 << NotificationRecovery | 1 << NotificationFlappingStart | 1 << NotificationFlappingEnd)) != 0) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Type filter is invalid.", GetDebugInfo())); + location + ": Type filter is invalid.", object->GetDebugInfo())); } } diff --git a/lib/icinga/user.hpp b/lib/icinga/user.hpp index ce253392a..b4c286908 100644 --- a/lib/icinga/user.hpp +++ b/lib/icinga/user.hpp @@ -44,7 +44,7 @@ public: /* Notifications */ TimePeriod::Ptr GetPeriod(void) const; - static void ValidateFilters(const String& location, const Dictionary::Ptr& attrs); + static void ValidateFilters(const String& location, const User::Ptr& attrs); bool GetEnableNotifications(void) const; void SetEnableNotifications(bool enabled, const MessageOrigin& origin = MessageOrigin()); diff --git a/lib/livestatus/livestatuslistener.cpp b/lib/livestatus/livestatuslistener.cpp index b38472ada..634973352 100644 --- a/lib/livestatus/livestatuslistener.cpp +++ b/lib/livestatus/livestatuslistener.cpp @@ -19,7 +19,6 @@ #include "livestatus/livestatuslistener.hpp" #include "icinga/perfdatavalue.hpp" -#include "config/configcompilercontext.hpp" #include "base/utility.hpp" #include "base/objectlock.hpp" #include "base/dynamictype.hpp" @@ -189,6 +188,6 @@ void LivestatusListener::ValidateSocketType(const String& location, const Livest if (socket_type != "unix" && socket_type != "tcp") { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Socket type '" + socket_type + "' is invalid.", GetDebugInfo())); + location + ": Socket type '" + socket_type + "' is invalid.", object->GetDebugInfo())); } }