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