]> granicus.if.org Git - icinga2/commitdiff
Don't parse perfdata if enable_perfdata is false
authorGunnar Beutner <gunnar.beutner@netways.de>
Sun, 7 Sep 2014 10:27:06 +0000 (12:27 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Sun, 7 Sep 2014 10:27:06 +0000 (12:27 +0200)
fixes #7032

lib/icinga/externalcommandprocessor.cpp
lib/icinga/pluginutility.cpp
lib/icinga/pluginutility.hpp
lib/methods/pluginchecktask.cpp

index 374b0e26a98b16c8a3607ef5a3c4f1db136a7bcf..5fdf49592488e5c2e762c92884d15cc3e6da5641 100644 (file)
@@ -304,9 +304,15 @@ void ExternalCommandProcessor::ProcessHostCheckResult(double time, const std::ve
 
        int exitStatus = Convert::ToDouble(arguments[1]);
        CheckResult::Ptr result = make_shared<CheckResult>();
-       std::pair<String, Value> co = PluginUtility::ParseCheckOutput(arguments[2]);
+       std::pair<String, String> co = PluginUtility::ParseCheckOutput(arguments[2]);
        result->SetOutput(co.first);
-       result->SetPerformanceData(co.second);
+
+       Value perfdata = co.second;
+
+       if (host->GetEnablePerfdata())
+               perfdata = PluginUtility::ParsePerfdata(perfdata);
+
+       result->SetPerformanceData(perfdata);
 
        ServiceState state;
 
@@ -350,9 +356,15 @@ void ExternalCommandProcessor::ProcessServiceCheckResult(double time, const std:
 
        int exitStatus = Convert::ToDouble(arguments[2]);
        CheckResult::Ptr result = make_shared<CheckResult>();
-       std::pair<String, Value> co = PluginUtility::ParseCheckOutput(arguments[3]);
+       std::pair<String, String> co = PluginUtility::ParseCheckOutput(arguments[3]);
        result->SetOutput(co.first);
-       result->SetPerformanceData(co.second);
+
+       Value perfdata = co.second;
+
+       if (service->GetEnablePerfdata())
+               perfdata = PluginUtility::ParsePerfdata(perfdata);
+
+       result->SetPerformanceData(perfdata);
        result->SetState(PluginUtility::ExitStatusToState(exitStatus));
 
        result->SetScheduleStart(time);
index 84239fc9eb1838d849de7920e3adb08892898b20..ab34b9821b94a62c42487674f8f0f8eddac1041b 100644 (file)
@@ -189,7 +189,7 @@ ServiceState PluginUtility::ExitStatusToState(int exitStatus)
        }
 }
 
-std::pair<String, Value> PluginUtility::ParseCheckOutput(const String& output)
+std::pair<String, String> PluginUtility::ParseCheckOutput(const String& output)
 {
        String text;
        String perfdata;
@@ -217,7 +217,7 @@ std::pair<String, Value> PluginUtility::ParseCheckOutput(const String& output)
 
        boost::algorithm::trim(perfdata);
 
-       return std::make_pair(text, ParsePerfdata(perfdata));
+       return std::make_pair(text, perfdata);
 }
 
 Value PluginUtility::ParsePerfdata(const String& perfdata)
index 1e8d6785a79ace5665123b134c44a10be72d7b73..94a6819d8deab1abe0fe5f44cd85d31e69135713 100644 (file)
@@ -44,7 +44,7 @@ public:
            const boost::function<void(const Value& commandLine, const ProcessResult&)>& callback = boost::function<void(const Value& commandLine, const ProcessResult&)>());
 
        static ServiceState ExitStatusToState(int exitStatus);
-       static std::pair<String, Value> ParseCheckOutput(const String& output);
+       static std::pair<String, String> ParseCheckOutput(const String& output);
 
        static Value ParsePerfdata(const String& perfdata);
        static String FormatPerfdata(const Value& perfdata);
index 462ce890fbbab364a797134cba79e5531a35494b..39716cce253cf868a19da9d6872561368bd43ff1 100644 (file)
@@ -65,10 +65,16 @@ void PluginCheckTask::ProcessFinishedHandler(const Checkable::Ptr& checkable, co
 
        String output = pr.Output;
        output.Trim();
-       std::pair<String, Value> co = PluginUtility::ParseCheckOutput(output);
+       std::pair<String, String> co = PluginUtility::ParseCheckOutput(output);
        cr->SetCommand(commandLine);
        cr->SetOutput(co.first);
-       cr->SetPerformanceData(co.second);
+
+       Value perfdata = co.second;
+
+       if (checkable->GetEnablePerfdata())
+               perfdata = PluginUtility::ParsePerfdata(perfdata);
+
+       cr->SetPerformanceData(perfdata);
        cr->SetState(PluginUtility::ExitStatusToState(pr.ExitStatus));
        cr->SetExitStatus(pr.ExitStatus);
        cr->SetExecutionStart(pr.ExecutionStart);