All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Zino 2 is a full rewrite of the original Tcl-based Zino state monitor. This changelog only details changes from Zino 2 on and out.
This project uses towncrier and the changes for the upcoming release can be found in https://github.com/Uninett/zino/tree/master/changelog.d/.
-
Added full implementation of the
CLEARFLAP
API command (#113) -
Log warning if
secrets
file is world-readable (#280) -
Only load and parse pollfile if it has been changed since last load (#282)
-
Added customized logging of multiple traps, just as in Zino 1:
CISCOTRAP-MIB::reload
CISCO-CONFIG-MAN-MIB::ciscoConfigManEvent
CISCO-PIM-MIB::ciscoPimInvalidRegister
CISCO-PIM-MIB::ciscoPimInvalidJoinPrune
OSPF-TRAP-MIB::ospfIfConfigError
(#319)
-
Added support for tracking accumulated event downtime for reachability and portstate events (#332)
-
Custom logging configuration can now be applied in
zino.toml
- Rename/alias BGP and Juniper alarm event attributes in order to have more useful variable names in Python code, while retaining aliases that are compatible with the legacy API protocol (#352)
- Properly use dashes in event attribute names in the legacy API (#281)
- Use Zino 1-compatible field names for serialization of planned maintenance (#287)
- Use Zino 1 field names for serialization of BGP/BFD events (#331)
- Match against port alias instead of port description when
match_type
isregexp
orstr
for portstate maintenance events. Still matches port description forintf-regexp
. (#297) - Fix BGP-related Pydantic serialization warnings (#312)
- Stop logging empty interface descriptions on first discovery (#314)
- Reschedule devices whose configuration attributes where changed in the pollfile (#330)
- Use default interval from pollfile to stagger new jobs (#337)
- When matching an event to a planned maintenance, check that event is of the correct subclass (#344)
- Avoid potential state corruption issues by saving the running state to a temporary file before overwriting the existing state file (#364)
- Properly encode timedelta values as an integer number of seconds in the legacy API
- Remove test-only commands from API (#286)
- Add generic Zino config file (#224)
- Add most important SNMP trap handlers
- Port basic link trap handling from Zino 1
- Add port flapping detection to link trap transition handlers, in accordance with Zino 1 (#284)
- Schedule re-verification of port states after link traps are received
- Handle incoming Juniper BGP traps (#291)
- Update BFD session information on incoming BFD session traps (#305)
- Add planned maintenance feature (#61)
- Add
POLLRTR
API command (#219) - Add
POLLINTF
API command (#300) - Add a dummy
CLEARFLAP
API command in order not to crash older clients - Add
zinoconv
program for converting state from Zino 1 to Zino 2 (#66) - Add support for
neigh_rdns
attribute in BFD events. (#199) - Add more tests for event deletion (#209)
- Fix log message on initial Juniper chassis alarm (#213)
- Add towncrier to automatically produce changelog (#218)
- Fully support multi-varbind SNMP-GET operations (#303)
- Add tests to show that one will not get closed events using
get_or_create_event()
- Index recently closed events to facilitate updating of prematurely closed flapping events
- Handle errors from changed SNMP interface in Juniper alarm task (#212)
- Improve error reporting, including line/block location, for
polldevs.cf
parsing errors (#248) - Properly handle Juniper devices without SNMP values for red/yellow alarm count (#231)
- Properly handle "varbind" error values for SNMP v2 GET operations (#261)
- API now listens to all interfaces, not just loopback (#285)
- Resolve value types of incoming SNMP traps correctly (#290)
- Ensure polling single interfaces does not crash in the event of timeout errors
- Ensure polling single interfaces works for
ifindex=0
- SNMP traps can now be received, logged and ignored (although no useful handlers have been implemented yet) ((#189, #193)
- Closed events now properly expire and are evicted from the running state after 8 hours (#203).
- Expired events are dumped to separate JSON files in the
old-events/
directory (#204).
- BGP events are now presented with correctly named attributes in the legacy API (#172)
- BGP task no longer crashes on unexpected SNMP responses while probing for which BGP MIB to use for a device (#184)
- Legacy API now correctly hides closed events (#192)
- Legacy API now correctly denies re-opening of closed events (#201)
- BFD events now have the expected
lastevent
attribute (#200) - Fixed potential bug with how
portstate
events are indexed internally in Zino's running state (#206) - API now responds with a proper message on user authentication failures (#210)
- Functions for parsing the many ways IP addresses are represented in SNMP MIBs have been consolidated into a single function (#183)
This is the first official release of Zino 2.