Don't parse perfdata if enable_perfdata is false

fixes #7032
This commit is contained in:
Gunnar Beutner 2014-09-07 12:27:06 +02:00
parent 8c4765c607
commit bf2e3cb091
4 changed files with 27 additions and 9 deletions

View File

@ -304,9 +304,15 @@ void ExternalCommandProcessor::ProcessHostCheckResult(double time, const std::ve
int exitStatus = Convert::ToDouble(arguments[1]); int exitStatus = Convert::ToDouble(arguments[1]);
CheckResult::Ptr result = make_shared<CheckResult>(); 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->SetOutput(co.first);
result->SetPerformanceData(co.second);
Value perfdata = co.second;
if (host->GetEnablePerfdata())
perfdata = PluginUtility::ParsePerfdata(perfdata);
result->SetPerformanceData(perfdata);
ServiceState state; ServiceState state;
@ -350,9 +356,15 @@ void ExternalCommandProcessor::ProcessServiceCheckResult(double time, const std:
int exitStatus = Convert::ToDouble(arguments[2]); int exitStatus = Convert::ToDouble(arguments[2]);
CheckResult::Ptr result = make_shared<CheckResult>(); 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->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->SetState(PluginUtility::ExitStatusToState(exitStatus));
result->SetScheduleStart(time); result->SetScheduleStart(time);

View 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 text;
String perfdata; String perfdata;
@ -217,7 +217,7 @@ std::pair<String, Value> PluginUtility::ParseCheckOutput(const String& output)
boost::algorithm::trim(perfdata); boost::algorithm::trim(perfdata);
return std::make_pair(text, ParsePerfdata(perfdata)); return std::make_pair(text, perfdata);
} }
Value PluginUtility::ParsePerfdata(const String& perfdata) Value PluginUtility::ParsePerfdata(const String& perfdata)

View File

@ -44,7 +44,7 @@ public:
const boost::function<void(const Value& commandLine, const ProcessResult&)>& callback = boost::function<void(const Value& commandLine, const ProcessResult&)>()); const boost::function<void(const Value& commandLine, const ProcessResult&)>& callback = boost::function<void(const Value& commandLine, const ProcessResult&)>());
static ServiceState ExitStatusToState(int exitStatus); 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 Value ParsePerfdata(const String& perfdata);
static String FormatPerfdata(const Value& perfdata); static String FormatPerfdata(const Value& perfdata);

View File

@ -65,10 +65,16 @@ void PluginCheckTask::ProcessFinishedHandler(const Checkable::Ptr& checkable, co
String output = pr.Output; String output = pr.Output;
output.Trim(); output.Trim();
std::pair<String, Value> co = PluginUtility::ParseCheckOutput(output); std::pair<String, String> co = PluginUtility::ParseCheckOutput(output);
cr->SetCommand(commandLine); cr->SetCommand(commandLine);
cr->SetOutput(co.first); 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->SetState(PluginUtility::ExitStatusToState(pr.ExitStatus));
cr->SetExitStatus(pr.ExitStatus); cr->SetExitStatus(pr.ExitStatus);
cr->SetExecutionStart(pr.ExecutionStart); cr->SetExecutionStart(pr.ExecutionStart);