Commit Graph

11519 Commits

Author SHA1 Message Date
Jean Flach 3def496b62 Update state sync
Makes state serialization its own function to be used also when writing
out the initial state
2019-11-02 14:00:23 +01:00
Jean Flach fcb3752973 Remove debug log message 2019-11-02 14:00:23 +01:00
Jean Flach 3da4cef1e6 Update state sync 2019-11-02 14:00:23 +01:00
Jean Flach 2215e9e16f Implement minimal state sync 2019-11-02 14:00:23 +01:00
Jean Flach c825a3f4b5 Remove unnecessary parameter 2019-11-02 14:00:23 +01:00
Jean Flach 5f64d809d7 Check if RedisConnection exists before checking connection 2019-11-02 14:00:23 +01:00
Jean Flach a056e14834 Fix another RedisWriter crash
Same as the other fix, this makes us lose events
2019-11-02 14:00:23 +01:00
Jean Flach eec1928a0b Fix segfault on startup 2019-11-02 14:00:23 +01:00
Jean Flach 67208c4f07 Handle runtime config updates
fixes #37
2019-11-02 14:00:23 +01:00
Noah Hilverling f4145579ca Add missing include 2019-11-02 14:00:23 +01:00
Jean Flach 47905a25e8 Improve event payload
Adds host/service_id Acknowledgement events. AcknowledgementSet events also send the comment_id.

fixes #29
2019-11-02 14:00:23 +01:00
Jean Flach e889de966e Publish dump event
fixes #34
2019-11-02 14:00:23 +01:00
Jean Flach 5e3e114a16 Handle icingadb- / icinga-type mismatches
fixes servicedowntimes being written to hostdowntimes (and vice versa)
2019-11-02 14:00:23 +01:00
Jean Flach 3c651b4c99 Fix icingadb specific type names 2019-11-02 14:00:23 +01:00
Jean Flach 77ce8f67bd Add downtimes sync 2019-11-02 14:00:23 +01:00
Jean Flach 36588ce31a Code formatting 2019-11-02 14:00:23 +01:00
Jean Flach 1d21626b30 Code style 2019-11-02 14:00:23 +01:00
Jean Flach 0634e27d6d Add new connection handling 2019-11-02 14:00:23 +01:00
Jean Flach f89e649871 Add recursive callback to manage auth and db select 2019-11-02 14:00:23 +01:00
Jean Flach b59189b8d3 Simplify vector usage
Also leak less memory ;)
2019-11-02 14:00:23 +01:00
Jean Flach 6aaa35a0a6 Rewrite the RedisWriter
There should be more atomic commits but the whole thing was a mess. This
commit changes the synchrounous Redis connection into an asynchronous
one in its own class RedisConnection.
The RedisConnection uses a Workqueue with commands to fire against the
Redis server. When a response is required a callback must be supplied,
refer to RedisWriter::RedisGet().

Known Issues:
- Authentication has no error handling and can break the connection
- Error handling in general is iffy due to the nature of the async redis
connection
- Getting a reply out of RedisConnection is not trivial
- HandleRW... sunt dracones
2019-11-02 14:00:23 +01:00
Jean Flach 64515b81e3 Add disconnect 2019-11-02 14:00:23 +01:00
Jean Flach d96dcf869e Add RedisConnection object
This works using an async Redis connection. Multiple connections are not
possible. The connection is fed from a workqueue filled with
RedisCommands in the way of a vector of strings.
2019-11-02 14:00:23 +01:00
Jean Flach 0456298c58 Reformat code
CLion is now pretty close at what we use with Icinga, other changes do
make sense to me.
2019-11-02 14:00:23 +01:00
Jean Flach 8f411c7475 Support comments for icingadb
This splits comments into Host and Service comments
2019-11-02 14:00:23 +01:00
Alexander A. Klimov ed3db5b491 Fix elephant oversight 2019-11-02 14:00:23 +01:00
Jean Flach 315e9ffad8 Stringify flat values 2019-11-02 14:00:23 +01:00
Alexander A. Klimov d0a45521a9 Unify schema structure
refs #15
2019-11-02 14:00:23 +01:00
Jean Flach c4962559ff Remove parent_checksum
parent_checksum is always the first element in all_parents_checksums
2019-11-02 14:00:23 +01:00
Jean Flach a47e16fb5b Rename command_checksums 2019-11-02 14:00:23 +01:00
Jean Flach 65c38a3958 ignore user/usergroup for property checksum 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 3a8cf8d74d RedisWriter: dump missing checksums for notifications
refs #18
2019-11-02 14:00:23 +01:00
Alexander A. Klimov 4d40293217 RedisWriter: dump all_parents_checksum and all_parents_checksums for zones 2019-11-02 14:00:23 +01:00
Alexander A. Klimov cd05240624 RedisWriter: dump period_checksum for users 2019-11-02 14:00:23 +01:00
Michael Friedrich de99d68351 Only use the type for commands in the object identifier checksum 2019-11-02 14:00:23 +01:00
Jean Flach c70316a835 Sync ranges_checksum for timeperiods
Signed-off-by: Michael Friedrich <michael.friedrich@icinga.com>
2019-11-02 14:00:23 +01:00
Alexander A. Klimov 3e0a2f59e2 RedisWriter: make config object identifiers type-aware
SHA1(PackObject([Environment, Type, __name]))
2019-11-02 14:00:23 +01:00
Alexander A. Klimov b04b1d954e RedisWriter: compute checksums of command arguments and env vars
refs #14
2019-11-02 14:00:23 +01:00
Alexander A. Klimov a908f84750 Revert unneccessary dynamic_pointer_cast 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 1b81b85582 RedisWriter: dump zone_checksum for endpoints
refs #11
2019-11-02 14:00:23 +01:00
Michael Friedrich d65fb529eb Simplify host_checksum 2019-11-02 14:00:23 +01:00
Jean Flach d09a435fe3 Export usergroup(s)_checksum(s)
Warning: ugly code
2019-11-02 14:00:23 +01:00
Michael Friedrich 876d98a13f Add 'parent_checksum' for zone objects 2019-11-02 14:00:23 +01:00
Michael Friedrich bb2e7854fd Add command_endpoint, event/check_command, action/notes_url, icon_image checksums for host/service objects 2019-11-02 14:00:23 +01:00
Michael Friedrich 4fb73a44bd Add 'host_checksum' for services 2019-11-02 14:00:23 +01:00
Michael Friedrich 48f1ce215b Drop obsolete delete query on config dump 2019-11-02 14:00:23 +01:00
Michael Friedrich e31679b2de Update Redis prefix namespaces and move their declaration into the class
icinga:config:object:<type>:<sha1>
icinga:config:checksum:<type> <sha1>
icinga:config:customvar:<type> <sha1>

icinga:status:object:<type>:<sha1>

This avoids multiple definitions all over the code. Maybe we want
to make the schema configurable at some point.
2019-11-02 14:00:23 +01:00
Michael Friedrich 3ce8f5599e Fix missing object locks 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 413e351805 RedisWriter: dump custom vars verbosely 2019-11-02 14:00:23 +01:00
Michael Friedrich e4355f27c9 Send zone_checksum globally, if 'zone' attribute is set 2019-11-02 14:00:23 +01:00