Without one, uv's lowest-direct resolution installs netaddr 0.3.1, which
has no IPAddress, and every test module fails to import. 0.7.19 has
IPAddress, IPNetwork and AddrFormatError, and the tests pass at exactly
the declared floors on Python 3.10.
- The distribution is renamed to napalm-netgear-switches: napalm-netgear
on PyPI belongs to another project. The import package napalm_netgear
and the napalm.drivers entry points netgear_smart and netgear_plus stay;
[tool.napalm-standard] package names the import package for the check.
README install line and CHANGELOG say the new name.
- CI moves to .gitea/workflows/ci.yml and calls the shared driver workflow
of NAPALM/driver-standard; .github/ is gone.
- requires-python >=3.10 (napalm-device-types needs it), floor
napalm-device-types>=4.21.1, LICENSE file, py.typed, SPDX license string,
links to git.netork.io, a dev extra with floors, CHANGELOG.md.
- mypy strict for the package; napalm_netgear.netgear_plus and
napalm_netgear.netgear_smart are exempt for now (139 errors), recorded
in the quality baseline with their long and complex functions and the
2070-line netgear_smart module. Coverage floor 48 % (measured 48.23 %).
Closes#14
Mechanical: ruff format, and ruff check --fix with the rule set every NAPALM
driver uses (E, F, I, UP, B at line length 100, Python 3.10). What ruff
cannot fix comes in the next commit.
The driver accepted any SSH host key. It now verifies through
napalm-device-types' HostKeyCheck (>= 4.19.0): with a known key in
optional_args["ssh_host_keys"] any other key is refused before login, and
every key seen is reported to optional_args["ssh_host_key_observer"].
Without either argument it connects as before (first use).
The Plus driver looked the newest firmware up in Netgear's download
catalogue and named firmware_update_available itself. It now reports
get_firmware_offer() (napalm-device-types 4.16 FirmwareOfferMixin): what
runs, the newest offered, whether that is newer by Netgear's versioning,
and the download link; netOrk names the warning (netOrk #1111). The Smart
driver's empty get_device_warnings goes too. Requires
napalm-device-types 4.16.0.
fix_snmp hard-coded community "public" and sent its config-mode line
through _send_command, which waits for the exec prompt: in config mode
it ran into its timeout and left the session there (#6).
netgear_smart implements napalm-device-types 4.13's configure_snmp_agent
steps: community (read-only), contact and location from the caller
through _apply_config_lines, which waits for any prompt and reports a
refused line; config mode is left in all cases; the configuration is
saved and the community checked in show snmp. v7 firmware, which has
no SNMP commands in its CLI, says so. A value that would break the CLI
is refused.
napalm-device-types is now declared in pyproject.toml and
requirements.txt (#7).
BREAKING CHANGE: run_device_action is removed.
Closes#6. Part of #7 and #8.
netgear_smart no longer collects over SNMP. SNMP_HEALTH_PROFILE states
where the switch publishes uptime (standard sysUpTime), memory (total
and free in KiB) and CPU (a text value whose five-second figure
counts); the application polls and computes (napalm-device-types
docs/STRUCTURE.md).
Interface counters now come from the 64-bit ifXTable where the switch
has it, as the application reads them for every device.