fix: group alternative fingerprint rules (0.1.2)

One Redfish answer (the service root or the error a service refuses it
with) and one landing page (Supermicro/ATEN, iDRAC or iLO) can match,
never all of them. Grouped, the driver's maximum in netOrk's discovery
is 21 instead of 41, and a Supermicro landing page alone (6 of 21)
outranks the "linux" its BMC reports over SNMP (5 of 18).

Requires napalm-device-types 4.8 for FingerprintRule.group.
This commit is contained in:
christianmanivong committed 2026-10-13 10:19:56 +02:00
1 parent 93bbc63f3d
commit bfbeb19255
5 files changed
+35 -9

No files matched your search

+16
View File
@@ -45,3 +45,19 @@ def test_idrac_and_ilo_landing_pages_are_recognised():
def test_a_switch_page_scores_nothing():
page = '<html><head><title>Loading...</title></head><body>Web Switch</body></html>'
assert _score(page) == 0.0
def test_alternatives_count_once_towards_the_maximum():
# One Redfish answer (service root or error), the service root's type marker, and one
# landing page: 10 + 5 + 6. Summing every alternative (41) let a bare "linux" in the
# BMC's SNMP sysDescr (5 of 18) beat the Supermicro landing page (6 of 41).
from napalm_device_types import rules_max_weight
assert rules_max_weight(RedfishDriver.HTTP_FINGERPRINT) == 21.0
def test_supermicro_landing_page_alone_outranks_a_linux_sysdescr():
from napalm_device_types import rules_max_weight
page = _score((X10 / "landing_page.html").read_text())
assert page / rules_max_weight(RedfishDriver.HTTP_FINGERPRINT) > 5.0 / 18.0