@@ -27,7 +27,7 @@ using namespace icinga;
27
27
28
28
boost::signals2::signal<void (double , const String&, const std::vector<String>&)> ExternalCommandProcessor::OnNewExternalCommand;
29
29
30
- void ExternalCommandProcessor::Execute (const String& line)
30
+ void ExternalCommandProcessor::Execute (const CheckResultProducer:: Ptr & producer, const String& line)
31
31
{
32
32
if (line.IsEmpty ())
33
33
return ;
@@ -54,10 +54,10 @@ void ExternalCommandProcessor::Execute(const String& line)
54
54
BOOST_THROW_EXCEPTION (std::invalid_argument (" Missing arguments in command: " + line));
55
55
56
56
std::vector<String> argvExtra (argv.begin () + 1 , argv.end ());
57
- Execute (ts, argv[0 ], argvExtra);
57
+ Execute (producer, ts, argv[0 ], argvExtra);
58
58
}
59
59
60
- void ExternalCommandProcessor::Execute (double time, const String& command, const std::vector<String>& arguments)
60
+ void ExternalCommandProcessor::Execute (const CheckResultProducer:: Ptr & producer, double time, const String& command, const std::vector<String>& arguments)
61
61
{
62
62
ExternalCommandInfo eci;
63
63
@@ -102,7 +102,7 @@ void ExternalCommandProcessor::Execute(double time, const String& command, const
102
102
103
103
OnNewExternalCommand (time , command, realArguments);
104
104
105
- eci.Callback (time , realArguments);
105
+ eci.Callback (producer, time , realArguments);
106
106
}
107
107
108
108
void ExternalCommandProcessor::RegisterCommand (const String& command, const ExternalCommandCallback& callback, size_t minArgs, size_t maxArgs)
@@ -115,6 +115,16 @@ void ExternalCommandProcessor::RegisterCommand(const String& command, const Exte
115
115
GetCommands ()[command] = eci;
116
116
}
117
117
118
+ void ExternalCommandProcessor::RegisterCommand (const String& command, const ExternalCommandCallbackLite& callback, size_t minArgs, size_t maxArgs)
119
+ {
120
+ RegisterCommand (
121
+ command,
122
+ [callback](const CheckResultProducer::Ptr &, double time , const std::vector<String>& args) { callback (time , args); },
123
+ minArgs,
124
+ maxArgs
125
+ );
126
+ }
127
+
118
128
void ExternalCommandProcessor::RegisterCommands ()
119
129
{
120
130
RegisterCommand (" PROCESS_HOST_CHECK_RESULT" , &ExternalCommandProcessor::ProcessHostCheckResult, 3 );
@@ -237,7 +247,7 @@ void ExternalCommandProcessor::RegisterCommands()
237
247
RegisterCommand (" DISABLE_SERVICEGROUP_SVC_NOTIFICATIONS" , &ExternalCommandProcessor::DisableServicegroupSvcNotifications, 1 );
238
248
}
239
249
240
- void ExternalCommandProcessor::ExecuteFromFile (const String& line, std::deque< std::vector<String> >& file_queue)
250
+ void ExternalCommandProcessor::ExecuteFromFile (const CheckResultProducer:: Ptr & producer, const String& line, std::deque< std::vector<String> >& file_queue)
241
251
{
242
252
if (line.IsEmpty ())
243
253
return ;
@@ -270,11 +280,11 @@ void ExternalCommandProcessor::ExecuteFromFile(const String& line, std::deque< s
270
280
<< " Enqueing external command file " << argvExtra[0 ];
271
281
file_queue.push_back (argvExtra);
272
282
} else {
273
- Execute (ts, argv[0 ], argvExtra);
283
+ Execute (producer, ts, argv[0 ], argvExtra);
274
284
}
275
285
}
276
286
277
- void ExternalCommandProcessor::ProcessHostCheckResult (double time, const std::vector<String>& arguments)
287
+ void ExternalCommandProcessor::ProcessHostCheckResult (const CheckResultProducer:: Ptr & producer, double time, const std::vector<String>& arguments)
278
288
{
279
289
Host::Ptr host = Host::GetByName (arguments[0 ]);
280
290
@@ -318,10 +328,10 @@ void ExternalCommandProcessor::ProcessHostCheckResult(double time, const std::ve
318
328
Log (LogNotice, " ExternalCommandProcessor" )
319
329
<< " Processing passive check result for host '" << arguments[0 ] << " '" ;
320
330
321
- host->ProcessCheckResult (result);
331
+ host->ProcessCheckResult (result, producer );
322
332
}
323
333
324
- void ExternalCommandProcessor::ProcessServiceCheckResult (double time, const std::vector<String>& arguments)
334
+ void ExternalCommandProcessor::ProcessServiceCheckResult (const CheckResultProducer:: Ptr & producer, double time, const std::vector<String>& arguments)
325
335
{
326
336
Service::Ptr service = Service::GetByNamePair (arguments[0 ], arguments[1 ]);
327
337
@@ -356,7 +366,7 @@ void ExternalCommandProcessor::ProcessServiceCheckResult(double time, const std:
356
366
Log (LogNotice, " ExternalCommandProcessor" )
357
367
<< " Processing passive check result for service '" << arguments[1 ] << " '" ;
358
368
359
- service->ProcessCheckResult (result);
369
+ service->ProcessCheckResult (result, producer );
360
370
}
361
371
362
372
void ExternalCommandProcessor::ScheduleHostCheck (double , const std::vector<String>& arguments)
@@ -921,7 +931,7 @@ void ExternalCommandProcessor::DisableHostgroupPassiveSvcChecks(double, const st
921
931
}
922
932
}
923
933
924
- void ExternalCommandProcessor::ProcessFile (double , const std::vector<String>& arguments)
934
+ void ExternalCommandProcessor::ProcessFile (const CheckResultProducer:: Ptr & producer, double , const std::vector<String>& arguments)
925
935
{
926
936
std::deque< std::vector<String> > file_queue;
927
937
file_queue.push_back (arguments);
@@ -946,7 +956,7 @@ void ExternalCommandProcessor::ProcessFile(double, const std::vector<String>& ar
946
956
Log (LogNotice, " compat" )
947
957
<< " Executing external command: " << line;
948
958
949
- ExecuteFromFile (line, file_queue);
959
+ ExecuteFromFile (producer, line, file_queue);
950
960
} catch (const std::exception & ex) {
951
961
Log (LogWarning, " ExternalCommandProcessor" )
952
962
<< " External command failed: " << DiagnosticInformation (ex);
0 commit comments