1507 Commits

Author SHA1 Message Date
Julian Brost
e1d4fcd8d1 Merge remote-tracking branch 'origin/feature/v1-actions-execute-command-8034-2.11.7' into jbrost/2.11.9-with-execute-command-and-connect-timeout 2021-06-28 17:42:17 +02:00
Alexander Aleksandrovič Klimov
a18a2e3813
Merge pull request #8772 from Icinga/bugfix/problem-notification-at-downtime-end-2.11
Send problem notifications after downtime end for checkables in child zones (2.11)
2021-05-26 13:41:41 +02:00
Alexander Aleksandrovič Klimov
031f379051
Merge pull request #8780 from Icinga/bugfix/concurent-notification-send-and-delete-2.11
Fix crash when notifications are sent while the notification object is deleted (2.11)
2021-05-26 13:36:18 +02:00
Julian Brost
77427bedae AddDowntime: return Downtime::Ptr instead of String containing the name
At numerous places in the code, something like this is performed:

    String name = Downtime::AddDowntime(...);
    Downtime::Ptr downtime = Downtime::GetByName(name);

However, `downtime` can be a `nullptr` after this as it is possible that
the downtime is deleted in between.

This commit changes the return type of `Downtime::AddDowntime` to return
a Downtime::Ptr instead of the full name of the downtime. `AddDowntime`
performs the very same `GetByName()` operation internally, but handles
the `nullptr` case correctly and throws an exception.
2021-05-26 08:54:01 +02:00
Julian Brost
5b5efab847 Properly handle service downtime referencing a deleted host
Only two out of three cases were handled properly by the code: host
downtimes referencing a deleted host and service downtimes referencing a
deleted service worked fine. However, if a service downtime references a
deleted host, `Host::GetByName()` returns `nullptr` which isn't
accounted for. Use `Service::GetByNamePair()` instead as this performs a
check for the host being null internally.
2021-05-26 08:54:01 +02:00
Julian Brost
9060264c64 Use reference-counted pointer in notification callback
`this` could be deleted after `Notification::BeginExecuteNotification`
exited and before `Notification::ExecuteNotificationHelper` finished.
This is fixed by constructing a `Notification::Ptr` and operate on that
one as it is properly reference-counted.
2021-05-26 08:53:33 +02:00
Julian Brost
7511a5c3fc Only handle event::SetSuppressed{Notifications,NotificationTypes} within the local zone
Note that even when passing `nullptr` as target zone to `RelayMessage()`, the
cluster message will still be sent to the parent zone. These incoming messages
will now be rejected by the parent nodes. At the moment, there's no way to only
send within the local zone.
2021-05-26 08:52:05 +02:00
Alexander A. Klimov
4b0313d3f3 On recovery: re-check children 2020-12-11 16:40:29 +01:00
Alexander A. Klimov
3c15e71e19 Don't fire suppressed notifications if last parent recovery >= last check result 2020-12-11 16:40:29 +01:00
Alexander A. Klimov
eb454b8517 Introduce Endpoint#capabilities
refs #8034
2020-11-20 17:41:45 +01:00
Alexander A. Klimov
9d574e7702 Fix missing include
refs #8034
2020-11-20 17:41:08 +01:00
Mattia Codato
c9cc8a7c70 Add timer to clean deadlined executions 2020-11-20 17:40:45 +01:00
Mattia Codato
76007d369f Remove an useless check 2020-11-20 17:38:27 +01:00
Mattia Codato
e4c9616068 Set exit code 126 if endpoint doens't support the new executeCommand API 2020-11-20 17:38:27 +01:00
Mattia Codato
f1f5bb4738 Check child endpoint versions and check child zone can access to the target endpoint 2020-11-20 17:38:27 +01:00
Mattia Codato
85e2f3a479 Check satellites Icinga version before relay the execute command message 2020-11-20 17:38:27 +01:00
Mattia Codato
3516c9c631 Use local zone for update executions 2020-11-20 17:38:27 +01:00
Mattia Codato
1253aa07e4 Change checkable with the endpoint zone for execute command relay message 2020-11-20 17:38:27 +01:00
Mattia Codato
5134eca2ab Forward the execute command through the zones 2020-11-20 17:38:27 +01:00
Mattia Codato
3a105cfe7c Use ExecuteOverride to override the command 2020-11-20 17:38:27 +01:00
Mattia Codato
ba80ebc7cf Fix update execution 2020-11-20 17:38:27 +01:00
Mattia Codato
bb2726a44e Fix macros substitutions 2020-11-20 17:38:27 +01:00
Mattia Codato
dad2a3e786 Notify to all nodes that execution has completed 2020-11-20 17:38:27 +01:00
Mattia Codato
f790b7699d Check if last check result is null before executing the command 2020-11-20 17:38:27 +01:00
Mattia Codato
5467b7aa37 Fix indentation 2020-11-20 17:38:27 +01:00
Mattia Codato
aa2edcb322 Keep consistency with other methods in case of missing API listener 2020-11-20 17:38:27 +01:00
Mattia Codato
3d85492b9a Execute notification command only if there is a source param 2020-11-20 17:38:27 +01:00
Mattia Codato
c019dc9f90 Remove unused key in the execution 2020-11-20 17:38:27 +01:00
Mattia Codato
eb38821869 Remove pending key when the execution is completed 2020-11-20 17:38:27 +01:00
Mattia Codato
9a6646f76f Fix logs 2020-11-20 17:38:27 +01:00
Mattia Codato
d72b9dc138 Fix indentation 2020-11-20 17:38:27 +01:00
Mattia Codato
facf3ff170 Remove arguments from 'throw' inc case of ExecuteEventHandler error 2020-11-20 17:38:27 +01:00
Mattia Codato
58251d1fca Throw an exception in case of error during ExecuteEventHandler if source is not set 2020-11-20 17:38:27 +01:00
Mattia Codato
1f5a92a22d Remove unuseful variables 2020-11-20 17:38:27 +01:00
Mattia Codato
3ce56ac11a Add try catch for ExecuteEventHandler 2020-11-20 17:38:27 +01:00
Mattia Codato
78743098b0 Remove unuseful check result for notification command 2020-11-20 17:38:27 +01:00
Mattia Codato
e6c49fc61d Refactor SendEventExecuteCommand function 2020-11-20 17:38:27 +01:00
Mattia Codato
39583553ed Code refactoring: create sendEventExecuteCommand function 2020-11-20 17:38:27 +01:00
Mattia Codato
d5119b2378 Run ExecutedCommandAPIHandler in case of command not found and if source is set 2020-11-20 17:38:27 +01:00
Mattia Codato
78be7ebafd Unify code to check if command exists 2020-11-20 17:38:27 +01:00
Mattia Codato
0013202fdd Check if the node accept commands only if the origin is not local 2020-11-20 17:38:27 +01:00
Mattia Codato
f2ec14edcd Send event::ExecutedCommand where necessary 2020-11-20 17:38:27 +01:00
Mattia Codato
0251df22d5 Implement notification execution 2020-11-20 17:38:27 +01:00
Mattia Codato
838893f4a6 Remove extra char 2020-11-20 17:38:27 +01:00
Mattia Codato
5cab06f381 Get checakble name from params 2020-11-20 17:38:26 +01:00
Mattia Codato
9dbc7384e7 Send error as command execution result 2020-11-20 17:38:26 +01:00
Mattia Codato
099d920d5c Do CurrentConcurrentChecks and DecreasePendingChecks only for check_command 2020-11-20 17:38:26 +01:00
Mattia Codato
487a3bbfbd Remove unuseful check 2020-11-20 17:38:26 +01:00
Mattia Codato
d9404eb4ce Return the process result parameters instead of the check result 2020-11-20 17:38:26 +01:00
Mattia Codato
75e8547246 Get host by Deserialize 2020-11-20 17:38:26 +01:00