]> granicus.if.org Git - icinga2/commitdiff
Improve error messages for apply rules
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 10 Oct 2014 09:39:03 +0000 (11:39 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 10 Oct 2014 09:39:03 +0000 (11:39 +0200)
refs #6070

lib/icinga/dependency-apply.cpp
lib/icinga/notification-apply.cpp
lib/icinga/scheduleddowntime-apply.cpp
lib/icinga/service-apply.cpp

index 27d74f04a995751649f41ea67d515bc6ab31740a..f577f94ebc387da794ae9e3577fd292bd8ce722e 100644 (file)
 #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_fwd.hpp"
 #include "base/context.hpp"
 #include "base/workqueue.hpp"
+#include "base/configerror.hpp"
 #include <boost/foreach.hpp>
 
 using namespace icinga;
@@ -115,8 +117,13 @@ void Dependency::EvaluateApplyRule(const ApplyRule& rule)
                BOOST_FOREACH(const Host::Ptr& host, DynamicType::GetObjectsByType<Host>()) {
                        CONTEXT("Evaluating 'apply' rules for host '" + host->GetName() + "'");
 
-                       if (EvaluateApplyRuleOne(host, rule))
-                               apply_count++;
+                       try {
+                               if (EvaluateApplyRuleOne(host, rule))
+                                       apply_count++;
+                       } catch (const ConfigError& ex) {
+                               const DebugInfo *di = boost::get_error_info<errinfo_debuginfo>(ex);
+                               ConfigCompilerContext::GetInstance()->AddMessage(true, ex.what(), di ? *di : DebugInfo());
+                       }
                }
 
                if (apply_count == 0)
@@ -128,8 +135,13 @@ void Dependency::EvaluateApplyRule(const ApplyRule& rule)
                BOOST_FOREACH(const Service::Ptr& service, DynamicType::GetObjectsByType<Service>()) {
                        CONTEXT("Evaluating 'apply' rules for Service '" + service->GetName() + "'");
 
-                       if (EvaluateApplyRuleOne(service, rule))
-                               apply_count++;
+                       try {
+                               if (EvaluateApplyRuleOne(service, rule))
+                                       apply_count++;
+                       } catch (const ConfigError& ex) {
+                               const DebugInfo *di = boost::get_error_info<errinfo_debuginfo>(ex);
+                               ConfigCompilerContext::GetInstance()->AddMessage(true, ex.what(), di ? *di : DebugInfo());
+                       }
                }
 
                if (apply_count == 0)
index 57d9c37bd558cc4ed93d0ded14d5253e5f0da7cd..9798c355d437a20bda962fcb3e0f6e08fca02175 100644 (file)
 #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_fwd.hpp"
 #include "base/context.hpp"
 #include "base/workqueue.hpp"
+#include "base/configerror.hpp"
 #include <boost/foreach.hpp>
 
 using namespace icinga;
@@ -110,8 +112,13 @@ void Notification::EvaluateApplyRule(const ApplyRule& rule)
                BOOST_FOREACH(const Host::Ptr& host, DynamicType::GetObjectsByType<Host>()) {
                        CONTEXT("Evaluating 'apply' rules for host '" + host->GetName() + "'");
 
-                       if (EvaluateApplyRuleOne(host, rule))
-                               apply_count++;
+                       try {
+                               if (EvaluateApplyRuleOne(host, rule))
+                                       apply_count++;
+                       } catch (const ConfigError& ex) {
+                               const DebugInfo *di = boost::get_error_info<errinfo_debuginfo>(ex);
+                               ConfigCompilerContext::GetInstance()->AddMessage(true, ex.what(), di ? *di : DebugInfo());
+                       }
                }
 
                if (apply_count == 0)
@@ -123,8 +130,13 @@ void Notification::EvaluateApplyRule(const ApplyRule& rule)
                BOOST_FOREACH(const Service::Ptr& service, DynamicType::GetObjectsByType<Service>()) {
                        CONTEXT("Evaluating 'apply' rules for Service '" + service->GetName() + "'");
 
-                       if (EvaluateApplyRuleOne(service, rule))
-                               apply_count++;
+                       try {
+                               if (EvaluateApplyRuleOne(service, rule))
+                                       apply_count++;
+                       } catch (const ConfigError& ex) {
+                               const DebugInfo *di = boost::get_error_info<errinfo_debuginfo>(ex);
+                               ConfigCompilerContext::GetInstance()->AddMessage(true, ex.what(), di ? *di : DebugInfo());
+                       }
                }
 
                if (apply_count == 0)
index 778f2983334216c0ffad55440cf2fe8f17c02b96..bcb61e4aa9f1860a96ddbc17e8fd483f4b44a285 100644 (file)
 #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_fwd.hpp"
 #include "base/context.hpp"
+#include "base/configerror.hpp"
 #include <boost/foreach.hpp>
 
 using namespace icinga;
@@ -110,8 +112,13 @@ void ScheduledDowntime::EvaluateApplyRules(const std::vector<ApplyRule>& rules)
                        BOOST_FOREACH(const Host::Ptr& host, DynamicType::GetObjectsByType<Host>()) {
                                CONTEXT("Evaluating 'apply' rules for host '" + host->GetName() + "'");
 
-                               if (EvaluateApplyRule(host, rule))
-                                       apply_count++;
+                               try {
+                                       if (EvaluateApplyRule(host, rule))
+                                               apply_count++;
+                               } catch (const ConfigError& ex) {
+                                       const DebugInfo *di = boost::get_error_info<errinfo_debuginfo>(ex);
+                                       ConfigCompilerContext::GetInstance()->AddMessage(true, ex.what(), di ? *di : DebugInfo());
+                               }
                        }
 
                        if (apply_count == 0)
@@ -123,8 +130,13 @@ void ScheduledDowntime::EvaluateApplyRules(const std::vector<ApplyRule>& rules)
                        BOOST_FOREACH(const Service::Ptr& service, DynamicType::GetObjectsByType<Service>()) {
                                CONTEXT("Evaluating 'apply' rules for Service '" + service->GetName() + "'");
 
-                               if(EvaluateApplyRule(service, rule))
-                                       apply_count++;
+                               try {
+                                       if(EvaluateApplyRule(service, rule))
+                                               apply_count++;
+                               } catch (const ConfigError& ex) {
+                                       const DebugInfo *di = boost::get_error_info<errinfo_debuginfo>(ex);
+                                       ConfigCompilerContext::GetInstance()->AddMessage(true, ex.what(), di ? *di : DebugInfo());
+                               }
                        }
 
                        if (apply_count == 0)
index 65bc83faaaf2da1cae73b30269755c67eaf0d439..c3c367c387b0265fce8eb6b74a442b56a775896a 100644 (file)
 #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_fwd.hpp"
 #include "base/context.hpp"
 #include "base/workqueue.hpp"
+#include "base/configerror.hpp"
 #include <boost/foreach.hpp>
 
 using namespace icinga;
@@ -97,8 +99,13 @@ void Service::EvaluateApplyRule(const ApplyRule& rule)
        BOOST_FOREACH(const Host::Ptr& host, DynamicType::GetObjectsByType<Host>()) {
                CONTEXT("Evaluating 'apply' rules for host '" + host->GetName() + "'");
 
-               if (EvaluateApplyRuleOne(host, rule))
-                       apply_count++;
+               try {
+                       if (EvaluateApplyRuleOne(host, rule))
+                               apply_count++;
+               } catch (const ConfigError& ex) {
+                       const DebugInfo *di = boost::get_error_info<errinfo_debuginfo>(ex);
+                       ConfigCompilerContext::GetInstance()->AddMessage(true, ex.what(), di ? *di : DebugInfo());
+               }
        }
 
        if (apply_count == 0)