Zino 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zino-2.0.0/.codecov.yml +8 -0
- zino-2.0.0/.editorconfig +33 -0
- zino-2.0.0/.git-blame-ignore-revs +8 -0
- zino-2.0.0/.github/dependabot.yml +10 -0
- zino-2.0.0/.github/pull_request_template.md +30 -0
- zino-2.0.0/.github/workflows/linter.yml +44 -0
- zino-2.0.0/.github/workflows/publish-test-results.yml +73 -0
- zino-2.0.0/.github/workflows/tests.yml +83 -0
- zino-2.0.0/.github/workflows/towncrier.yml +24 -0
- zino-2.0.0/.gitignore +28 -0
- zino-2.0.0/.mega-linter.yml +16 -0
- zino-2.0.0/.pre-commit-config.yaml +30 -0
- zino-2.0.0/.readthedocs.yaml +32 -0
- zino-2.0.0/.sonarcloud.properties +13 -0
- zino-2.0.0/AUTHORS.md +14 -0
- zino-2.0.0/CHANGELOG.md +149 -0
- zino-2.0.0/LICENSE +202 -0
- zino-2.0.0/NOTICE +5 -0
- zino-2.0.0/PKG-INFO +639 -0
- zino-2.0.0/README.md +404 -0
- zino-2.0.0/changelog.d/.gitkeep +0 -0
- zino-2.0.0/docs/Makefile +20 -0
- zino-2.0.0/docs/conf.py +28 -0
- zino-2.0.0/docs/index.rst +16 -0
- zino-2.0.0/docs/make.bat +35 -0
- zino-2.0.0/polldevs.cf.example +36 -0
- zino-2.0.0/pyproject.toml +154 -0
- zino-2.0.0/requirements/dev.txt +18 -0
- zino-2.0.0/setup.cfg +4 -0
- zino-2.0.0/src/Zino.egg-info/PKG-INFO +639 -0
- zino-2.0.0/src/Zino.egg-info/SOURCES.txt +255 -0
- zino-2.0.0/src/Zino.egg-info/dependency_links.txt +1 -0
- zino-2.0.0/src/Zino.egg-info/entry_points.txt +3 -0
- zino-2.0.0/src/Zino.egg-info/not-zip-safe +1 -0
- zino-2.0.0/src/Zino.egg-info/requires.txt +14 -0
- zino-2.0.0/src/Zino.egg-info/top_level.txt +1 -0
- zino-2.0.0/src/zino/__init__.py +1 -0
- zino-2.0.0/src/zino/api/__init__.py +0 -0
- zino-2.0.0/src/zino/api/auth.py +63 -0
- zino-2.0.0/src/zino/api/legacy.py +620 -0
- zino-2.0.0/src/zino/api/notify.py +125 -0
- zino-2.0.0/src/zino/api/server.py +50 -0
- zino-2.0.0/src/zino/compat.py +20 -0
- zino-2.0.0/src/zino/config/__init__.py +41 -0
- zino-2.0.0/src/zino/config/models.py +107 -0
- zino-2.0.0/src/zino/config/polldevs.py +94 -0
- zino-2.0.0/src/zino/events.py +232 -0
- zino-2.0.0/src/zino/flaps.py +266 -0
- zino-2.0.0/src/zino/getuptime.py +41 -0
- zino-2.0.0/src/zino/getyellowalarms.py +41 -0
- zino-2.0.0/src/zino/oid.py +68 -0
- zino-2.0.0/src/zino/planned_maintenance.py +155 -0
- zino-2.0.0/src/zino/polltest.py +84 -0
- zino-2.0.0/src/zino/scheduler.py +133 -0
- zino-2.0.0/src/zino/snmp/__init__.py +67 -0
- zino-2.0.0/src/zino/snmp/base.py +77 -0
- zino-2.0.0/src/zino/snmp/mibdumps/BFD-STD-MIB.py +205 -0
- zino-2.0.0/src/zino/snmp/mibdumps/BFD-TC-STD-MIB.py +55 -0
- zino-2.0.0/src/zino/snmp/mibdumps/BGP4-MIB.py +278 -0
- zino-2.0.0/src/zino/snmp/mibdumps/BGP4-V2-MIB-JUNIPER.py +922 -0
- zino-2.0.0/src/zino/snmp/mibdumps/CISCO-BGP4-MIB.py +478 -0
- zino-2.0.0/src/zino/snmp/mibdumps/CISCO-CONFIG-MAN-MIB.py +82 -0
- zino-2.0.0/src/zino/snmp/mibdumps/CISCO-IETF-BFD-MIB.py +253 -0
- zino-2.0.0/src/zino/snmp/mibdumps/CISCO-PIM-MIB.py +69 -0
- zino-2.0.0/src/zino/snmp/mibdumps/CISCO-SMI.py +181 -0
- zino-2.0.0/src/zino/snmp/mibdumps/CISCOTRAP-MIB.py +30 -0
- zino-2.0.0/src/zino/snmp/mibdumps/DIFFSERV-DSCP-TC.py +36 -0
- zino-2.0.0/src/zino/snmp/mibdumps/DIFFSERV-MIB.py +602 -0
- zino-2.0.0/src/zino/snmp/mibdumps/IANA-BFD-TC-STD-MIB.py +65 -0
- zino-2.0.0/src/zino/snmp/mibdumps/IANA-RTPROTO-MIB.py +28 -0
- zino-2.0.0/src/zino/snmp/mibdumps/IANAifType-MIB.py +26 -0
- zino-2.0.0/src/zino/snmp/mibdumps/IF-MIB.py +232 -0
- zino-2.0.0/src/zino/snmp/mibdumps/INET-ADDRESS-MIB.py +250 -0
- zino-2.0.0/src/zino/snmp/mibdumps/INTEGRATED-SERVICES-MIB.py +192 -0
- zino-2.0.0/src/zino/snmp/mibdumps/IP-MIB.py +967 -0
- zino-2.0.0/src/zino/snmp/mibdumps/IPMROUTE-STD-MIB.py +170 -0
- zino-2.0.0/src/zino/snmp/mibdumps/JUNIPER-ALARM-MIB.py +35 -0
- zino-2.0.0/src/zino/snmp/mibdumps/JUNIPER-BFD-MIB.py +58 -0
- zino-2.0.0/src/zino/snmp/mibdumps/JUNIPER-EXPERIMENT-MIB.py +46 -0
- zino-2.0.0/src/zino/snmp/mibdumps/JUNIPER-SMI.py +114 -0
- zino-2.0.0/src/zino/snmp/mibdumps/OLD-CISCO-INTERFACES-MIB.py +265 -0
- zino-2.0.0/src/zino/snmp/mibdumps/OLD-CISCO-SYSTEM-MIB.py +60 -0
- zino-2.0.0/src/zino/snmp/mibdumps/OLD-CISCO-TCP-MIB.py +31 -0
- zino-2.0.0/src/zino/snmp/mibdumps/OLD-CISCO-TS-MIB.py +98 -0
- zino-2.0.0/src/zino/snmp/mibdumps/OSPF-MIB.py +584 -0
- zino-2.0.0/src/zino/snmp/mibdumps/OSPF-TRAP-MIB.py +86 -0
- zino-2.0.0/src/zino/snmp/mibdumps/PIM-MIB.py +174 -0
- zino-2.0.0/src/zino/snmp/mibdumps/TCP-MIB.py +124 -0
- zino-2.0.0/src/zino/snmp/mibs/BFD-STD-MIB +857 -0
- zino-2.0.0/src/zino/snmp/mibs/BFD-TC-STD-MIB +121 -0
- zino-2.0.0/src/zino/snmp/mibs/BGP4-MIB +1232 -0
- zino-2.0.0/src/zino/snmp/mibs/BGP4-V2-MIB-JUNIPER +4251 -0
- zino-2.0.0/src/zino/snmp/mibs/CISCO-BGP4-MIB +2280 -0
- zino-2.0.0/src/zino/snmp/mibs/CISCO-CONFIG-MAN-MIB +1007 -0
- zino-2.0.0/src/zino/snmp/mibs/CISCO-IETF-BFD-MIB +1246 -0
- zino-2.0.0/src/zino/snmp/mibs/CISCO-PIM-MIB +387 -0
- zino-2.0.0/src/zino/snmp/mibs/CISCO-SMI +554 -0
- zino-2.0.0/src/zino/snmp/mibs/CISCO-TC +2435 -0
- zino-2.0.0/src/zino/snmp/mibs/CISCOTRAP-MIB +102 -0
- zino-2.0.0/src/zino/snmp/mibs/DIFFSERV-DSCP-TC +64 -0
- zino-2.0.0/src/zino/snmp/mibs/DIFFSERV-MIB +3514 -0
- zino-2.0.0/src/zino/snmp/mibs/IANA-BFD-TC-STD-MIB +184 -0
- zino-2.0.0/src/zino/snmp/mibs/IANA-RTPROTO-MIB +87 -0
- zino-2.0.0/src/zino/snmp/mibs/IANAifType-MIB +593 -0
- zino-2.0.0/src/zino/snmp/mibs/IF-MIB +1814 -0
- zino-2.0.0/src/zino/snmp/mibs/INET-ADDRESS-MIB +402 -0
- zino-2.0.0/src/zino/snmp/mibs/INTEGRATED-SERVICES-MIB +750 -0
- zino-2.0.0/src/zino/snmp/mibs/IP-MIB +4993 -0
- zino-2.0.0/src/zino/snmp/mibs/IPMROUTE-STD-MIB +869 -0
- zino-2.0.0/src/zino/snmp/mibs/JUNIPER-ALARM-MIB +185 -0
- zino-2.0.0/src/zino/snmp/mibs/JUNIPER-BFD-MIB +177 -0
- zino-2.0.0/src/zino/snmp/mibs/JUNIPER-EXPERIMENT-MIB +96 -0
- zino-2.0.0/src/zino/snmp/mibs/JUNIPER-SMI +414 -0
- zino-2.0.0/src/zino/snmp/mibs/OLD-CISCO-INTERFACES-MIB +1358 -0
- zino-2.0.0/src/zino/snmp/mibs/OLD-CISCO-SYSTEM-MIB +233 -0
- zino-2.0.0/src/zino/snmp/mibs/OLD-CISCO-TCP-MIB +124 -0
- zino-2.0.0/src/zino/snmp/mibs/OLD-CISCO-TS-MIB +532 -0
- zino-2.0.0/src/zino/snmp/mibs/OSPF-MIB +4164 -0
- zino-2.0.0/src/zino/snmp/mibs/OSPF-TRAP-MIB +584 -0
- zino-2.0.0/src/zino/snmp/mibs/PIM-MIB +889 -0
- zino-2.0.0/src/zino/snmp/mibs/RFC1213-MIB +2613 -0
- zino-2.0.0/src/zino/snmp/mibs/SNMP-FRAMEWORK-MIB +526 -0
- zino-2.0.0/src/zino/snmp/mibs/SNMPv2-CONF +322 -0
- zino-2.0.0/src/zino/snmp/mibs/SNMPv2-MIB +854 -0
- zino-2.0.0/src/zino/snmp/mibs/SNMPv2-SMI +344 -0
- zino-2.0.0/src/zino/snmp/mibs/SNMPv2-TC +772 -0
- zino-2.0.0/src/zino/snmp/mibs/TCP-MIB +785 -0
- zino-2.0.0/src/zino/snmp/netsnmpy_backend.py +411 -0
- zino-2.0.0/src/zino/snmp/pysnmp_backend.py +499 -0
- zino-2.0.0/src/zino/state.py +68 -0
- zino-2.0.0/src/zino/stateconverter/__init__.py +0 -0
- zino-2.0.0/src/zino/stateconverter/bfd_converter.py +46 -0
- zino-2.0.0/src/zino/stateconverter/bgp_converter.py +60 -0
- zino-2.0.0/src/zino/stateconverter/convertstate.py +129 -0
- zino-2.0.0/src/zino/stateconverter/event_converter.py +172 -0
- zino-2.0.0/src/zino/stateconverter/flapping_converter.py +53 -0
- zino-2.0.0/src/zino/stateconverter/linedata.py +48 -0
- zino-2.0.0/src/zino/stateconverter/pm_converter.py +108 -0
- zino-2.0.0/src/zino/stateconverter/port_converter.py +45 -0
- zino-2.0.0/src/zino/stateconverter/utils.py +61 -0
- zino-2.0.0/src/zino/statemodels.py +627 -0
- zino-2.0.0/src/zino/tasks/__init__.py +32 -0
- zino-2.0.0/src/zino/tasks/addrs.py +94 -0
- zino-2.0.0/src/zino/tasks/bfdtask.py +154 -0
- zino-2.0.0/src/zino/tasks/bgpstatemonitortask.py +360 -0
- zino-2.0.0/src/zino/tasks/errors.py +2 -0
- zino-2.0.0/src/zino/tasks/juniperalarmtask.py +79 -0
- zino-2.0.0/src/zino/tasks/linkstatetask.py +200 -0
- zino-2.0.0/src/zino/tasks/reachabletask.py +85 -0
- zino-2.0.0/src/zino/tasks/task.py +33 -0
- zino-2.0.0/src/zino/tasks/vendor.py +31 -0
- zino-2.0.0/src/zino/time.py +8 -0
- zino-2.0.0/src/zino/trapd/__init__.py +29 -0
- zino-2.0.0/src/zino/trapd/base.py +168 -0
- zino-2.0.0/src/zino/trapd/netsnmpy_backend.py +109 -0
- zino-2.0.0/src/zino/trapd/pysnmp_backend.py +147 -0
- zino-2.0.0/src/zino/trapobservers/__init__.py +0 -0
- zino-2.0.0/src/zino/trapobservers/bfd_traps.py +65 -0
- zino-2.0.0/src/zino/trapobservers/bgp_traps.py +95 -0
- zino-2.0.0/src/zino/trapobservers/ignored_traps.py +23 -0
- zino-2.0.0/src/zino/trapobservers/link_traps.py +255 -0
- zino-2.0.0/src/zino/trapobservers/logged_traps.py +114 -0
- zino-2.0.0/src/zino/traptest.py +74 -0
- zino-2.0.0/src/zino/utils.py +48 -0
- zino-2.0.0/src/zino/version.py +21 -0
- zino-2.0.0/src/zino/zino.py +345 -0
- zino-2.0.0/tests/__init__.py +0 -0
- zino-2.0.0/tests/api/__init__.py +0 -0
- zino-2.0.0/tests/api/auth_test.py +70 -0
- zino-2.0.0/tests/api/conftest.py +29 -0
- zino-2.0.0/tests/api/legacy_test.py +1267 -0
- zino-2.0.0/tests/api/notify_test.py +151 -0
- zino-2.0.0/tests/api/server_test.py +9 -0
- zino-2.0.0/tests/bin_test.py +18 -0
- zino-2.0.0/tests/compat_test.py +21 -0
- zino-2.0.0/tests/config/__init__.py +0 -0
- zino-2.0.0/tests/config/models_test.py +13 -0
- zino-2.0.0/tests/config/polldevs_test.py +134 -0
- zino-2.0.0/tests/config_test.py +43 -0
- zino-2.0.0/tests/conftest.py +361 -0
- zino-2.0.0/tests/events_test.py +295 -0
- zino-2.0.0/tests/flaps_test.py +417 -0
- zino-2.0.0/tests/getuptime_test.py +30 -0
- zino-2.0.0/tests/oid_test.py +47 -0
- zino-2.0.0/tests/planned_maintenance_test.py +212 -0
- zino-2.0.0/tests/scheduler_test.py +228 -0
- zino-2.0.0/tests/snmp/__init__.py +0 -0
- zino-2.0.0/tests/snmp/netsnmpy_backend_test.py +289 -0
- zino-2.0.0/tests/snmp/pysnmp_backend_test.py +323 -0
- zino-2.0.0/tests/snmp_fixtures/cisco-bfd-down.snmprec +7 -0
- zino-2.0.0/tests/snmp_fixtures/cisco-bfd-up.snmprec +7 -0
- zino-2.0.0/tests/snmp_fixtures/cisco-bgp-admin-down.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/cisco-bgp-admin-up.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/cisco-bgp-external-reset.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/cisco-bgp-oper-down-short.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/cisco-bgp-oper-down.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/cisco-bgp.snmprec +8 -0
- zino-2.0.0/tests/snmp_fixtures/general-bgp-admin-down.snmprec +11 -0
- zino-2.0.0/tests/snmp_fixtures/general-bgp-admin-up.snmprec +11 -0
- zino-2.0.0/tests/snmp_fixtures/general-bgp-external-reset.snmprec +11 -0
- zino-2.0.0/tests/snmp_fixtures/general-bgp-oper-down-short.snmprec +11 -0
- zino-2.0.0/tests/snmp_fixtures/general-bgp-oper-down.snmprec +11 -0
- zino-2.0.0/tests/snmp_fixtures/general-bgp.snmprec +11 -0
- zino-2.0.0/tests/snmp_fixtures/ip-ad-ent-addr.snmprec +7 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-alarm-wrong.snmprec +2 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-alarm-zero.snmprec +2 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-alarm.snmprec +2 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-bfd-down.snmprec +20 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-bfd-up.snmprec +20 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-bgp-admin-down.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-bgp-admin-up.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-bgp-external-reset.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-bgp-oper-down-short.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-bgp-oper-down.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/juniper-bgp.snmprec +9 -0
- zino-2.0.0/tests/snmp_fixtures/linksadmindown.snmprec +90 -0
- zino-2.0.0/tests/snmp_fixtures/linksdown.snmprec +90 -0
- zino-2.0.0/tests/snmp_fixtures/linksup.snmprec +90 -0
- zino-2.0.0/tests/snmp_fixtures/missing-info-bgp.snmprec +4 -0
- zino-2.0.0/tests/snmp_fixtures/public.snmprec +1322 -0
- zino-2.0.0/tests/snmp_test.py +42 -0
- zino-2.0.0/tests/state_test.py +87 -0
- zino-2.0.0/tests/stateconverter/convertstate_test.py +233 -0
- zino-2.0.0/tests/stateconverter/fixtures/zino1_state.tcl +114 -0
- zino-2.0.0/tests/stateconverter/fixtures/zino1_state_invalid_event_attr.tcl +19 -0
- zino-2.0.0/tests/stateconverter/linedata_test.py +29 -0
- zino-2.0.0/tests/statemodels/conftest.py +36 -0
- zino-2.0.0/tests/statemodels/device_maintenance_test.py +113 -0
- zino-2.0.0/tests/statemodels/planned_maintenance_test.py +42 -0
- zino-2.0.0/tests/statemodels/portstate_maintenance_test.py +136 -0
- zino-2.0.0/tests/statemodels/statemodels_test.py +168 -0
- zino-2.0.0/tests/tasks/__init__.py +0 -0
- zino-2.0.0/tests/tasks/conftest.py +27 -0
- zino-2.0.0/tests/tasks/test_addrs.py +81 -0
- zino-2.0.0/tests/tasks/test_bfdtask.py +127 -0
- zino-2.0.0/tests/tasks/test_bgpstatemonitortask.py +385 -0
- zino-2.0.0/tests/tasks/test_init.py +6 -0
- zino-2.0.0/tests/tasks/test_juniperalarmtask.py +217 -0
- zino-2.0.0/tests/tasks/test_linkstatetask.py +242 -0
- zino-2.0.0/tests/tasks/test_reachabletask.py +133 -0
- zino-2.0.0/tests/tasks/test_run_all_tasks.py +58 -0
- zino-2.0.0/tests/tasks/test_task.py +31 -0
- zino-2.0.0/tests/tasks/test_vendor.py +29 -0
- zino-2.0.0/tests/trapd/__init__.py +13 -0
- zino-2.0.0/tests/trapd/netsnmp_backend_test.py +164 -0
- zino-2.0.0/tests/trapd/pysnmp_backend_test.py +170 -0
- zino-2.0.0/tests/trapobservers/__init__.py +0 -0
- zino-2.0.0/tests/trapobservers/bfd_traps_test.py +83 -0
- zino-2.0.0/tests/trapobservers/bgp_traps_test.py +102 -0
- zino-2.0.0/tests/trapobservers/conftest.py +15 -0
- zino-2.0.0/tests/trapobservers/ignored_traps_test.py +10 -0
- zino-2.0.0/tests/trapobservers/link_traps_test.py +356 -0
- zino-2.0.0/tests/trapobservers/logged_traps_test.py +155 -0
- zino-2.0.0/tests/utils_test.py +77 -0
- zino-2.0.0/tests/zino_test.py +281 -0
- zino-2.0.0/tox.ini +38 -0
- zino-2.0.0/zino.toml.example +55 -0
zino-2.0.0/.codecov.yml
ADDED
zino-2.0.0/.editorconfig
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# https://editorconfig.org/
|
|
2
|
+
|
|
3
|
+
root = true
|
|
4
|
+
|
|
5
|
+
[*]
|
|
6
|
+
indent_style = space
|
|
7
|
+
indent_size = 4
|
|
8
|
+
insert_final_newline = true
|
|
9
|
+
trim_trailing_whitespace = true
|
|
10
|
+
end_of_line = lf
|
|
11
|
+
charset = utf-8
|
|
12
|
+
|
|
13
|
+
[*.py]
|
|
14
|
+
max_line_length = 120
|
|
15
|
+
|
|
16
|
+
[*.html]
|
|
17
|
+
indent_size = 2
|
|
18
|
+
|
|
19
|
+
[*.json]
|
|
20
|
+
indent_size = 2
|
|
21
|
+
insert_final_newline = ignore
|
|
22
|
+
|
|
23
|
+
[Makefile]
|
|
24
|
+
indent_style = tab
|
|
25
|
+
|
|
26
|
+
[docs/**.txt]
|
|
27
|
+
max_line_length = 79
|
|
28
|
+
|
|
29
|
+
[docs/**.rst]
|
|
30
|
+
max_line_length = 79
|
|
31
|
+
|
|
32
|
+
[*.yml]
|
|
33
|
+
indent_size = 2
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Rerun black after upgrade to version 22.4.0 @johannaengland 22/05/2024
|
|
2
|
+
e0ac8815008114743f6fb2d8a918005bb32dd94f
|
|
3
|
+
# Rerun black for commits merged before black 22.4.0 pre-commit was merged @lunkwill42 31/05/2024
|
|
4
|
+
85118701a98b71e1a1340674592c9d07cfb5c05d
|
|
5
|
+
# Reformat test using black v25.1.0 @johannaengland 04/02/2024
|
|
6
|
+
905e7a01fc720732bc3513e074719bae78dddfe3
|
|
7
|
+
# Fix trailing whitespace in towncrier workflow @johannaengland 04/02/2024
|
|
8
|
+
e41cd16efb5f8bcb399a5b85b8d820dc8c5cf670
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
## Scope and purpose
|
|
2
|
+
|
|
3
|
+
Fixes #<!-- ISSUE-ID -->. Dependent on #<!-- PULL-REQUEST-ID -->. <!-- Reference: https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue -->
|
|
4
|
+
|
|
5
|
+
Add a description of what this PR does and why it is needed. If a linked ticket(s) fully
|
|
6
|
+
cover it, you can omit this.
|
|
7
|
+
|
|
8
|
+
<!-- remove things that do not apply -->
|
|
9
|
+
### This pull request
|
|
10
|
+
* adds/changes/removes a dependency
|
|
11
|
+
* changes the API
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## Contributor Checklist
|
|
15
|
+
|
|
16
|
+
Every pull request should have this checklist filled out, no matter how small it is.
|
|
17
|
+
More information about contributing to Zino can be found in the
|
|
18
|
+
[README](https://github.com/Uninett/zino/blob/master/README.md#developing-zino).
|
|
19
|
+
|
|
20
|
+
<!-- Add an "X" inside the brackets to confirm -->
|
|
21
|
+
<!-- If not checking one or more of the boxes, please explain why below each. -->
|
|
22
|
+
|
|
23
|
+
* [ ] Added a changelog fragment for [towncrier](https://github.com/Uninett/zino/blob/master/README.md#before-merging-a-pull-request)
|
|
24
|
+
* [ ] Added/amended tests for new/changed code <!-- In case CodeCov Upload makes the tests fail, simply rerun them a few minutes later -->
|
|
25
|
+
* [ ] Added/changed documentation
|
|
26
|
+
* [ ] Linted/formatted the code with black, ruff and isort, easiest by using [pre-commit](https://github.com/Uninett/zino/blob/master/README.md#code-style)
|
|
27
|
+
* [ ] The first line of the commit message continues the sentence "If applied, this commit will ...", starts with a capital letter, does not end with punctuation and is 50 characters or less long. See https://cbea.ms/git-commit/
|
|
28
|
+
* [ ] If applicable: Created new issues if this PR does not fix the issue completely/there is further work to be done
|
|
29
|
+
|
|
30
|
+
<!-- Make this a draft PR if the content is subject to change, cannot be merged or if it is for initial feedback -->
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
# MegaLinter GitHub Action configuration file
|
|
3
|
+
# More info at https://megalinter.io
|
|
4
|
+
name: MegaLinter
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: "master"
|
|
8
|
+
pull_request:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
megalinter:
|
|
12
|
+
name: MegaLinter
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
permissions:
|
|
15
|
+
# Give the linter write permission to comment on PRs (if PR is not from fork)
|
|
16
|
+
issues: write
|
|
17
|
+
pull-requests: write
|
|
18
|
+
steps:
|
|
19
|
+
# Git Checkout
|
|
20
|
+
- name: Checkout Code
|
|
21
|
+
uses: actions/checkout@v4
|
|
22
|
+
with:
|
|
23
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
24
|
+
fetch-depth: 0
|
|
25
|
+
# MegaLinter
|
|
26
|
+
- name: MegaLinter
|
|
27
|
+
id: ml
|
|
28
|
+
# You can override MegaLinter flavor used to have faster performances
|
|
29
|
+
# More info at https://megalinter.io/flavors/
|
|
30
|
+
uses: oxsecurity/megalinter/flavors/python@v8
|
|
31
|
+
env:
|
|
32
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
33
|
+
# Validate whole codebase on pushes and only changes on pull requests
|
|
34
|
+
VALIDATE_ALL_CODEBASE: ${{ github.event_name == 'push'}}
|
|
35
|
+
|
|
36
|
+
# Upload MegaLinter artifacts
|
|
37
|
+
- name: Archive production artifacts
|
|
38
|
+
if: success() || failure()
|
|
39
|
+
uses: actions/upload-artifact@v4
|
|
40
|
+
with:
|
|
41
|
+
name: MegaLinter reports
|
|
42
|
+
path: |
|
|
43
|
+
megalinter-reports
|
|
44
|
+
mega-linter.log
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
name: Publish test and coverage results
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_run:
|
|
5
|
+
workflows: ["Run test suite"]
|
|
6
|
+
types:
|
|
7
|
+
- completed
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
publish-test-results:
|
|
11
|
+
name: "Publish test and coverage results"
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
if: github.event.workflow_run.conclusion != 'skipped' && github.repository_owner == 'Uninett'
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
# Checking out the repo is necessary codecov/codecov-action@v5 to work properly
|
|
17
|
+
# Codecov requires source code to process the coverage file and generate coverage
|
|
18
|
+
# reports
|
|
19
|
+
- name: Checkout Code
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
ref: ${{ github.event.workflow_run.head_sha }}
|
|
23
|
+
|
|
24
|
+
- name: Download and Extract Artifacts
|
|
25
|
+
env:
|
|
26
|
+
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
27
|
+
run: |
|
|
28
|
+
mkdir -p artifacts && cd artifacts
|
|
29
|
+
|
|
30
|
+
artifacts_url=${{ github.event.workflow_run.artifacts_url }}
|
|
31
|
+
|
|
32
|
+
gh api "$artifacts_url" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact
|
|
33
|
+
do
|
|
34
|
+
IFS=$'\t' read name url <<< "$artifact"
|
|
35
|
+
gh api $url > "$name.zip"
|
|
36
|
+
unzip -d "$name" "$name.zip"
|
|
37
|
+
done
|
|
38
|
+
|
|
39
|
+
- name: "Publish test results"
|
|
40
|
+
uses: EnricoMi/publish-unit-test-result-action@v2
|
|
41
|
+
with:
|
|
42
|
+
commit: ${{ github.event.workflow_run.head_sha }}
|
|
43
|
+
check_name: "Test results"
|
|
44
|
+
files: artifacts/**/*-results.xml
|
|
45
|
+
|
|
46
|
+
- name: Read PR number file
|
|
47
|
+
if: ${{ hashFiles('artifacts/extra/pr_number') != '' }}
|
|
48
|
+
run: |
|
|
49
|
+
pr_number=$(cat artifacts/extra/pr_number)
|
|
50
|
+
re='^[0-9]+$'
|
|
51
|
+
if [[ $pr_number =~ $re ]] ; then
|
|
52
|
+
echo "PR_NUMBER=$pr_number" >> $GITHUB_ENV
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
- name: Read base SHA file
|
|
56
|
+
if: ${{ hashFiles('artifacts/extra/base_sha') != '' }}
|
|
57
|
+
run: |
|
|
58
|
+
base_sha=$(cat artifacts/extra/base_sha)
|
|
59
|
+
re='[0-9a-f]{40}'
|
|
60
|
+
if [[ $base_sha =~ $re ]] ; then
|
|
61
|
+
echo "BASE_SHA=$base_sha" >> $GITHUB_ENV
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
- name: Upload to Codecov
|
|
65
|
+
uses: codecov/codecov-action@v5
|
|
66
|
+
with:
|
|
67
|
+
fail_ci_if_error: true
|
|
68
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
69
|
+
verbose: true
|
|
70
|
+
override_branch: ${{ github.event.workflow_run.head_branch}}
|
|
71
|
+
override_commit: ${{ github.event.workflow_run.head_sha}}
|
|
72
|
+
commit_parent: ${{ env.BASE_SHA }}
|
|
73
|
+
override_pr: ${{ env.PR_NUMBER }}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
name: Run test suite
|
|
2
|
+
|
|
3
|
+
###########################################################
|
|
4
|
+
# Start the job on pushes to master and all pull requests #
|
|
5
|
+
###########################################################
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: master
|
|
9
|
+
pull_request:
|
|
10
|
+
schedule: # Run daily at 08:00 CEST (06:00 UST)
|
|
11
|
+
- cron: '0 6 * * *'
|
|
12
|
+
|
|
13
|
+
###############
|
|
14
|
+
# Set the Job #
|
|
15
|
+
###############
|
|
16
|
+
jobs:
|
|
17
|
+
tests:
|
|
18
|
+
# Name the Job
|
|
19
|
+
name: "Test on Python ${{ matrix.python-version}}"
|
|
20
|
+
# Set the agent to run on
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
|
|
23
|
+
strategy:
|
|
24
|
+
max-parallel: 4
|
|
25
|
+
matrix:
|
|
26
|
+
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout Code
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- name: Cache
|
|
33
|
+
uses: actions/cache@v4
|
|
34
|
+
id: cache
|
|
35
|
+
with:
|
|
36
|
+
path: ~/.cache/pip
|
|
37
|
+
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
|
|
38
|
+
restore-keys: |
|
|
39
|
+
${{ runner.os }}-pip-
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
- name: "Set up Python ${{ matrix.python-version }}"
|
|
43
|
+
uses: actions/setup-python@v5
|
|
44
|
+
with:
|
|
45
|
+
python-version: ${{ matrix.python-version }}
|
|
46
|
+
|
|
47
|
+
- name: Install dependencies
|
|
48
|
+
run: |
|
|
49
|
+
python -m pip install --upgrade pip
|
|
50
|
+
python -m pip install "tox<4" tox-gh-actions coverage
|
|
51
|
+
sudo apt-get install -y --no-install-recommends snmp libsnmp-dev
|
|
52
|
+
|
|
53
|
+
- name: Test with tox
|
|
54
|
+
run: tox
|
|
55
|
+
|
|
56
|
+
- name: Upload test reports (${{ matrix.python-version }})
|
|
57
|
+
if: always()
|
|
58
|
+
uses: actions/upload-artifact@v4
|
|
59
|
+
with:
|
|
60
|
+
name: reports-${{ matrix.python-version }}
|
|
61
|
+
path: |
|
|
62
|
+
reports/**/*
|
|
63
|
+
|
|
64
|
+
upload-pr-number-base-sha:
|
|
65
|
+
name: Save PR number and base SHA in artifact
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
if: ${{ github.event.number && always() }}
|
|
68
|
+
env:
|
|
69
|
+
PR_NUMBER: ${{ github.event.number }}
|
|
70
|
+
BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
|
71
|
+
steps:
|
|
72
|
+
- name: Make PR number file
|
|
73
|
+
run: |
|
|
74
|
+
mkdir -p ./extra
|
|
75
|
+
echo $PR_NUMBER > ./extra/pr_number
|
|
76
|
+
- name: Make base SHA file
|
|
77
|
+
run: |
|
|
78
|
+
echo $BASE_SHA > ./extra/base_sha
|
|
79
|
+
- name: Upload PR number file and base SHA file
|
|
80
|
+
uses: actions/upload-artifact@v4
|
|
81
|
+
with:
|
|
82
|
+
name: extra
|
|
83
|
+
path: extra/
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: Check for changelog file
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
# labeled/unlabeled = label is added/removed
|
|
6
|
+
# synchronize = PR's head branch was updated
|
|
7
|
+
types: [labeled, unlabeled, opened, reopened, synchronize]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
towncrier:
|
|
11
|
+
if: ${{ github.actor != 'dependabot[bot]' && !contains(github.event.pull_request.labels.*.name, 'nonews') && !contains(github.event.pull_request.labels.*.name, 'github_actions') }}
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
name: Towncrier check
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
with:
|
|
17
|
+
fetch-depth: 0
|
|
18
|
+
|
|
19
|
+
- name: Install towncrier
|
|
20
|
+
run: |
|
|
21
|
+
sudo apt-get install -y pipx
|
|
22
|
+
pipx install towncrier
|
|
23
|
+
- name: Check for changelog file
|
|
24
|
+
run: towncrier check --compare-with origin/master
|
zino-2.0.0/.gitignore
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Directories generated/used by development tools
|
|
2
|
+
.idea/
|
|
3
|
+
.ve/
|
|
4
|
+
.venv/
|
|
5
|
+
.tox/
|
|
6
|
+
.pytest_cache/
|
|
7
|
+
reports/
|
|
8
|
+
build/
|
|
9
|
+
dist/
|
|
10
|
+
|
|
11
|
+
# Generated files
|
|
12
|
+
src/zino/version.py
|
|
13
|
+
old-events/
|
|
14
|
+
docs/_build/
|
|
15
|
+
.coverage
|
|
16
|
+
*.pyc
|
|
17
|
+
*.egg-info/
|
|
18
|
+
*.whl
|
|
19
|
+
|
|
20
|
+
# avoid accidental commits of config and state files
|
|
21
|
+
polldevs.cf
|
|
22
|
+
polldevs.cf.*
|
|
23
|
+
zino-state.json
|
|
24
|
+
zino.toml
|
|
25
|
+
save-state.tcl
|
|
26
|
+
|
|
27
|
+
# avoid accidental commit of the secrets file
|
|
28
|
+
secrets
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# All available variables are described in documentation
|
|
2
|
+
# https://megalinter.io/configuration/
|
|
3
|
+
|
|
4
|
+
LINTER_RULES_PATH: .
|
|
5
|
+
|
|
6
|
+
ENABLE_LINTERS:
|
|
7
|
+
- PYTHON_BLACK
|
|
8
|
+
- PYTHON_ISORT
|
|
9
|
+
- PYTHON_RUFF
|
|
10
|
+
|
|
11
|
+
# Make workflow fail even on non blocking errors
|
|
12
|
+
FORMATTERS_DISABLE_ERRORS: false
|
|
13
|
+
|
|
14
|
+
PYTHON_BLACK_CONFIG_FILE: pyproject.toml
|
|
15
|
+
PYTHON_ISORT_CONFIG_FILE: pyproject.toml
|
|
16
|
+
PYTHON_RUFF_CONFIG_FILE: pyproject.toml
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
exclude: 'mibdumps/.*|mibs/.*'
|
|
3
|
+
repos:
|
|
4
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
5
|
+
rev: v5.0.0
|
|
6
|
+
hooks:
|
|
7
|
+
- id: trailing-whitespace
|
|
8
|
+
- id: mixed-line-ending
|
|
9
|
+
- id: end-of-file-fixer
|
|
10
|
+
exclude: &exclude_pattern '^changelog.d/'
|
|
11
|
+
- id: debug-statements
|
|
12
|
+
- repo: https://github.com/pycqa/isort
|
|
13
|
+
rev: 6.0.0
|
|
14
|
+
hooks:
|
|
15
|
+
- id: isort
|
|
16
|
+
name: isort (python)
|
|
17
|
+
- repo: https://github.com/psf/black
|
|
18
|
+
rev: 25.1.0
|
|
19
|
+
hooks:
|
|
20
|
+
- id: black
|
|
21
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
22
|
+
rev: v0.9.4
|
|
23
|
+
hooks:
|
|
24
|
+
- id: ruff
|
|
25
|
+
- repo: https://github.com/twisted/towncrier
|
|
26
|
+
rev: 24.8.0
|
|
27
|
+
hooks:
|
|
28
|
+
- id: towncrier-check
|
|
29
|
+
files: $changelog\.d/
|
|
30
|
+
args: [--compare-with origin/master]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# .readthedocs.yaml
|
|
2
|
+
# Read the Docs configuration file
|
|
3
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
4
|
+
|
|
5
|
+
# Required
|
|
6
|
+
version: 2
|
|
7
|
+
|
|
8
|
+
# Set the OS, Python version and other tools you might need
|
|
9
|
+
build:
|
|
10
|
+
os: ubuntu-22.04
|
|
11
|
+
tools:
|
|
12
|
+
python: "3.11"
|
|
13
|
+
# You can also specify other tool versions:
|
|
14
|
+
# nodejs: "19"
|
|
15
|
+
# rust: "1.64"
|
|
16
|
+
# golang: "1.19"
|
|
17
|
+
|
|
18
|
+
# Build documentation in the "docs/" directory with Sphinx
|
|
19
|
+
sphinx:
|
|
20
|
+
configuration: docs/conf.py
|
|
21
|
+
|
|
22
|
+
# Optionally build your docs in additional formats such as PDF and ePub
|
|
23
|
+
# formats:
|
|
24
|
+
# - pdf
|
|
25
|
+
# - epub
|
|
26
|
+
|
|
27
|
+
# Optional but recommended, declare the Python requirements required
|
|
28
|
+
# to build your documentation
|
|
29
|
+
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
|
|
30
|
+
# python:
|
|
31
|
+
# install:
|
|
32
|
+
# - requirements: docs/requirements.txt
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
sonar.projectKey=Uninett_zino
|
|
2
|
+
sonar.organization=uninett-1
|
|
3
|
+
|
|
4
|
+
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
|
|
5
|
+
sonar.sources=src
|
|
6
|
+
|
|
7
|
+
# Encoding of the source code. Default is default system encoding
|
|
8
|
+
#sonar.sourceEncoding=UTF-8
|
|
9
|
+
|
|
10
|
+
sonar.python.version=3.9, 3.10, 3.11
|
|
11
|
+
sonar.tests=tests
|
|
12
|
+
|
|
13
|
+
sonar.exclusions=src/zino/snmp/mibdumps/**
|
zino-2.0.0/AUTHORS.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Authors
|
|
2
|
+
|
|
3
|
+
This file lists all individuals having contributed content to the project.
|
|
4
|
+
|
|
5
|
+
## Project Founders
|
|
6
|
+
|
|
7
|
+
- Håvard Eidnes <havard.eidnes@sikt.no>
|
|
8
|
+
|
|
9
|
+
## Contributors
|
|
10
|
+
|
|
11
|
+
- Hanne Moa <hanne.moa@sikt.no> ([hmpf](https://github.com/hmpf))
|
|
12
|
+
- Johanna England <johanna.england@sikt.no> ([johannaengland](https://github.com/johannaengland))
|
|
13
|
+
- Morten Brekkevold <morten.brekkevold@sikt.no> ([lunkwill42](https://github.com/lunkwill42))
|
|
14
|
+
- Simon Oliver Tveit <simon.tveit@sikt.no> ([stveit](https://github.com/stveit))
|
zino-2.0.0/CHANGELOG.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
Zino 2 is a full rewrite of the original Tcl-based Zino state monitor. This
|
|
9
|
+
changelog only details changes from Zino 2 on and out.
|
|
10
|
+
|
|
11
|
+
This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the changes for the upcoming release can be found in <https://github.com/Uninett/zino/tree/master/changelog.d/>.
|
|
12
|
+
|
|
13
|
+
<!-- towncrier release notes start -->
|
|
14
|
+
|
|
15
|
+
## [2.0.0] - 2025-03-14
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Calculate downtime for BGP events ([#368](https://github.com/Uninett/zino/issues/368))
|
|
20
|
+
- Added debug logging of low-level SNMP session details to aid in debugging low-level OS resource management problems
|
|
21
|
+
- Added directory for Sphinx documentation in order to set up ReadTheDocs site and secure the name `zino` there.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Added alternative C-based SNMP back-end for massive performance gains ([#383](https://github.com/Uninett/zino/issues/383))
|
|
26
|
+
- Log "home" address changes as `DEBUG` level information, to avoid unnecessary verbosity in VRRP setups ([#215](https://github.com/Uninett/zino/issues/215))
|
|
27
|
+
- Fix Zino dependencies to allow running on Python 3.12 ([#386](https://github.com/Uninett/zino/issues/386))
|
|
28
|
+
- Fixed unintended symbolic translations in the SNMP abstraction layer, and removed now obsolete workarounds for the problem ([#389](https://github.com/Uninett/zino/issues/389))
|
|
29
|
+
- Removed development tools from list of optional package runtime requirements ([#399](https://github.com/Uninett/zino/issues/399))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# ## [2.0.0-beta.2] - 2024-09-03
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- Added full implementation of the `CLEARFLAP` API command ([#113](https://github.com/Uninett/zino/issues/113))
|
|
37
|
+
- Log warning if `secrets` file is world-readable ([#280](https://github.com/Uninett/zino/issues/280))
|
|
38
|
+
- Only load and parse pollfile if it has been changed since last load ([#282](https://github.com/Uninett/zino/issues/282))
|
|
39
|
+
- Added customized logging of multiple traps, just as in Zino 1:
|
|
40
|
+
- `CISCOTRAP-MIB::reload`
|
|
41
|
+
- `CISCO-CONFIG-MAN-MIB::ciscoConfigManEvent`
|
|
42
|
+
- `CISCO-PIM-MIB::ciscoPimInvalidRegister`
|
|
43
|
+
- `CISCO-PIM-MIB::ciscoPimInvalidJoinPrune`
|
|
44
|
+
- `OSPF-TRAP-MIB::ospfIfConfigError`
|
|
45
|
+
|
|
46
|
+
([#319](https://github.com/Uninett/zino/issues/319))
|
|
47
|
+
- Added support for tracking accumulated event downtime for reachability and portstate events ([#332](https://github.com/Uninett/zino/issues/332))
|
|
48
|
+
- Custom logging configuration can now be applied in `zino.toml`
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- 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](https://github.com/Uninett/zino/issues/352))
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- Properly use dashes in event attribute names in the legacy API ([#281](https://github.com/Uninett/zino/issues/281))
|
|
57
|
+
- Use Zino 1-compatible field names for serialization of planned maintenance ([#287](https://github.com/Uninett/zino/issues/287))
|
|
58
|
+
- Use Zino 1 field names for serialization of BGP/BFD events ([#331](https://github.com/Uninett/zino/issues/331))
|
|
59
|
+
- Match against port alias instead of port description when `match_type` is `regexp` or `str` for portstate maintenance events. Still matches port description for `intf-regexp`. ([#297](https://github.com/Uninett/zino/issues/297))
|
|
60
|
+
- Fix BGP-related Pydantic serialization warnings ([#312](https://github.com/Uninett/zino/issues/312))
|
|
61
|
+
- Stop logging empty interface descriptions on first discovery ([#314](https://github.com/Uninett/zino/issues/314))
|
|
62
|
+
- Reschedule devices whose configuration attributes where changed in the pollfile ([#330](https://github.com/Uninett/zino/issues/330))
|
|
63
|
+
- Use default interval from pollfile to stagger new jobs ([#337](https://github.com/Uninett/zino/issues/337))
|
|
64
|
+
- When matching an event to a planned maintenance, check that event is of the correct subclass ([#344](https://github.com/Uninett/zino/issues/344))
|
|
65
|
+
- Avoid potential state corruption issues by saving the running state to a temporary file before overwriting the existing state file ([#364](https://github.com/Uninett/zino/issues/364))
|
|
66
|
+
- Properly encode timedelta values as an integer number of seconds in the legacy API
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
## [2.0.0-beta.1] - 2024-07-09
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
### Removed
|
|
73
|
+
|
|
74
|
+
- Remove test-only commands from API ([#286](https://github.com/Uninett/zino/issues/286))
|
|
75
|
+
|
|
76
|
+
### Added
|
|
77
|
+
|
|
78
|
+
- Add generic Zino config file ([#224](https://github.com/Uninett/zino/issues/224))
|
|
79
|
+
- Add most important SNMP trap handlers
|
|
80
|
+
- Port basic link trap handling from Zino 1
|
|
81
|
+
- Add port flapping detection to link trap transition handlers, in accordance with Zino 1 ([#284](https://github.com/Uninett/zino/issues/284))
|
|
82
|
+
- Schedule re-verification of port states after link traps are received
|
|
83
|
+
- Handle incoming Juniper BGP traps ([#291](https://github.com/Uninett/zino/issues/291))
|
|
84
|
+
- Update BFD session information on incoming BFD session traps ([#305](https://github.com/Uninett/zino/issues/305))
|
|
85
|
+
- Add planned maintenance feature ([#61](https://github.com/Uninett/zino/issues/61))
|
|
86
|
+
- Add the `PM` family of API commands to manipulate planned maintenance ([#298](https://github.com/Uninett/zino/issues/298))
|
|
87
|
+
- Add framework support for API "sub-commands", to support the `PM` set of commands. ([#274](https://github.com/Uninett/zino/issues/274))
|
|
88
|
+
- Add `POLLRTR` API command ([#219](https://github.com/Uninett/zino/issues/219))
|
|
89
|
+
- Add `POLLINTF` API command ([#300](https://github.com/Uninett/zino/issues/300))
|
|
90
|
+
- Add a dummy `CLEARFLAP` API command in order not to crash older clients
|
|
91
|
+
- Add `zinoconv` program for converting state from Zino 1 to Zino 2 ([#66](https://github.com/Uninett/zino/issues/66))
|
|
92
|
+
- Add support for `neigh_rdns` attribute in BFD events. ([#199](https://github.com/Uninett/zino/issues/199))
|
|
93
|
+
- Add more tests for event deletion ([#209](https://github.com/Uninett/zino/issues/209))
|
|
94
|
+
- Fix log message on initial Juniper chassis alarm ([#213](https://github.com/Uninett/zino/issues/213))
|
|
95
|
+
- Add towncrier to automatically produce changelog ([#218](https://github.com/Uninett/zino/issues/218))
|
|
96
|
+
- Fully support multi-varbind SNMP-GET operations ([#303](https://github.com/Uninett/zino/issues/303))
|
|
97
|
+
- Add tests to show that one will not get closed events using `get_or_create_event()`
|
|
98
|
+
- Index recently closed events to facilitate updating of prematurely closed flapping events
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
|
|
102
|
+
- Handle errors from changed SNMP interface in Juniper alarm task ([#212](https://github.com/Uninett/zino/issues/212))
|
|
103
|
+
|
|
104
|
+
### Fixed
|
|
105
|
+
|
|
106
|
+
- Improve error reporting, including line/block location, for `polldevs.cf` parsing errors ([#248](https://github.com/Uninett/zino/issues/248))
|
|
107
|
+
- Properly handle Juniper devices without SNMP values for red/yellow alarm count ([#231](https://github.com/Uninett/zino/issues/231))
|
|
108
|
+
- Properly handle "varbind" error values for SNMP v2 GET operations ([#261](https://github.com/Uninett/zino/issues/261))
|
|
109
|
+
- API now listens to all interfaces, not just loopback ([#285](https://github.com/Uninett/zino/issues/285))
|
|
110
|
+
- Resolve value types of incoming SNMP traps correctly ([#290](https://github.com/Uninett/zino/issues/290))
|
|
111
|
+
- Ensure polling single interfaces does not crash in the event of timeout errors
|
|
112
|
+
- Ensure polling single interfaces works for `ifindex=0`
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
## [2.0.0-alpha.2] - 2024-04-09
|
|
116
|
+
|
|
117
|
+
### Added
|
|
118
|
+
|
|
119
|
+
- SNMP traps can now be received, logged and ignored (although no useful
|
|
120
|
+
handlers have been implemented yet)
|
|
121
|
+
(([#189](https://github.com/Uninett/zino/pull/189),
|
|
122
|
+
[#193](https://github.com/Uninett/zino/pull/193))
|
|
123
|
+
- Closed events now properly expire and are evicted from the running state
|
|
124
|
+
after 8 hours ([#203](https://github.com/Uninett/zino/pull/203)).
|
|
125
|
+
- Expired events are dumped to separate JSON files in the `old-events/`
|
|
126
|
+
directory ([#204](https://github.com/Uninett/zino/pull/204)).
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
|
|
130
|
+
- BGP events are now presented with correctly named attributes in the legacy
|
|
131
|
+
API ([#172](https://github.com/Uninett/zino/issues/172))
|
|
132
|
+
- BGP task no longer crashes on unexpected SNMP responses while probing for
|
|
133
|
+
which BGP MIB to use for a device ([#184](https://github.com/Uninett/zino/issues/184))
|
|
134
|
+
- Legacy API now correctly hides closed events ([#192](https://github.com/Uninett/zino/issues/192))
|
|
135
|
+
- Legacy API now correctly denies re-opening of closed events ([#201](https://github.com/Uninett/zino/issues/201))
|
|
136
|
+
- BFD events now have the expected `lastevent` attribute ([#200](https://github.com/Uninett/zino/issues/200))
|
|
137
|
+
- Fixed potential bug with how `portstate` events are indexed internally in
|
|
138
|
+
Zino's running state ([#206](https://github.com/Uninett/zino/issues/206))
|
|
139
|
+
- API now responds with a proper message on user authentication failures
|
|
140
|
+
([#210](https://github.com/Uninett/zino/pull/210))
|
|
141
|
+
|
|
142
|
+
### Changed
|
|
143
|
+
|
|
144
|
+
- Functions for parsing the many ways IP addresses are represented in SNMP MIBs
|
|
145
|
+
have been consolidated into a single function ([#183](https://github.com/Uninett/zino/issues/183))
|
|
146
|
+
|
|
147
|
+
## [2.0.0-alpha.1] - 2024-01-26
|
|
148
|
+
|
|
149
|
+
This is the first official release of Zino 2.
|