Files
napalm-bsd/CHANGELOG.md
T
Christian Manivong 335958d74c
driver / standard (pull_request) Successful in 19s
driver / lint (pull_request) Successful in 16s
driver / types (pull_request) Successful in 1m0s
driver / test (3.12) (pull_request) Successful in 1m6s
driver / lowest (pull_request) Successful in 26s
driver / test (3.13) (pull_request) Successful in 56s
driver / build (pull_request) Successful in 34s
driver / security (pull_request) Successful in 1m12s
CI / driver (pull_request) Successful in 2m52s
driver / publish (pull_request) Skipped
fix: the floor on napalm is 5.1 (NAPALM/driver-standard#6)
napalm 5.0 and older import pkg_resources, which a Python 3.12 venv no
longer has, so the lowest job failed on them.
2026-10-27 10:49:26 +01:00

4.8 KiB
Raw Blame History

Changelog

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.

[Unreleased]

Changed

  • Python 3.12 is the floor (requires-python = ">=3.12"): netOrk runs every driver on 3.12, so 3.10 and 3.11 are no longer tested (NAPALM/driver-standard#6).
  • The floor on napalm is 5.1: older releases import pkg_resources, which a Python 3.12 venv no longer has.

[0.5.0] - 2026-10-23

The first release on PyPI.

Changed

  • The drivers follow the NAPALM driver standard (https://git.netork.io/NAPALM/driver-standard): CI on Gitea runs ruff, mypy, the tests on Python 3.10–3.13 and at the lowest declared versions, bandit, pip-audit and a build check, and a release tag publishes to PyPI. The package now ships py.typed. Python 3.10 stays the floor. napalm-device-types now comes from PyPI, 4.21.1 or later.

Security

  • The SSH host key is verified (NetOrk/netork#1167). open() takes the key to expect from optional_args["ssh_host_key"] and refuses any other one before it logs in (SshHostKeyMismatch); without one it accepts the first key. Every key it sees goes to optional_args["ssh_host_key_observer"]. Replaces paramiko's AutoAddPolicy. Requires napalm-device-types 4.19.0; version 0.4.0.

[0.3.0] - 2026-10-17

Changed

  • Breaking: run_device_action("fix_snmp") is gone. The drivers implement napalm-device-types 4.13's configure_snmp_agent(settings) template instead, and the caller supplies every value: one rocommunity line per allowed source, contact and location as given. No community, contact or location of an application is built in any more. pf and ipfw rules are left to the operator. Requires napalm-device-types 4.13.0 or later.
  • get_snmp_config no longer assumes the community public when the file names none.

Added

  • get_management_peer(): the address the host sees the SSH connection come from.
  • ensure_package(name) from the base package.

[0.2.1] - 2026-10-16

Fixed

  • A sudo password no longer ends up in snmpd.conf. run_command sent the password and the data on the same stdin, and a sudo that does not prompt (NOPASSWD, a cached timestamp) left the password for cat, which wrote it as the first line of a file then made world-readable (#8). run_command now refuses stdin to a privileged command while a sudo password is set, and fix_snmp stages the configuration without privilege before root installs it, without following a symlink at the target.

[0.2.0] - 2026-10-13

Changed

  • get_users is now get_os_users, as napalm-device-types 4.7 names it on OSDriver; the return shape is unchanged. NAPALM's own get_users has another shape and a stub on every driver, so a poll asking hasattr could not tell the two apart. Requires napalm-device-types 4.7.1 or later.

[0.1.0]

Added

  • FreeBSDDriver (freebsd) and OpenBSDDriver (openbsd) on a shared BsdDriver: SSH over exec channels (no PTY, real exit codes), root through sudo -S with the password on stdin.
  • Read side (NetOrk/netork#798): facts (SMBIOS through kenv on FreeBSD, hw.* sysctls on OpenBSD; uptime from kern.boottime), interfaces and their addresses (ifconfig -a), routes (netstat -rn), ARP (arp -an), users and groups, processes (ps … lstart), cron jobs (system crontab and the login user's).
  • get_listening_sockets() in the shape of ListeningSocketsMixin: FreeBSD through sockstat, OpenBSD through fstat as root and netstat -an without, which the reading reports as attributed: False.
  • Packages: get_packages, install_package, uninstall_package. FreeBSD's install bootstraps pkg on a classic system that never had it.
  • Updates: get_available_updates, with VuXML's verdict as security on FreeBSD and base-system patches as one base-system entry (OpenBSD syspatch, classic FreeBSD freebsd-update). A reader that cannot read raises instead of returning no updates (#4).
  • Services: get_services and manage_service (start, stop, restart, enable, disable) through service and rcctl.
  • SNMP: run_device_action("fix_snmp") installs net-snmp, writes the same configuration netOrk uses on Linux, starts the agent and asks it for sysDescr; get_snmp_config reports a running agent's community and port.
  • get_host_status (napalm-device-types' HostStatusMixin): on FreeBSD, "reboot required" when the installed kernel differs from the running one.
  • first_boot_pending(): whether a FreeBSD host is still in its first boot (/firstboot), so netOrk can wait before setting up a new VM (NetOrk/netork#795).
  • Parsers tested on output recorded from FreeBSD 15.1 (hand-installed and cloud image) and OpenBSD 7.9 (NetOrk/netork#793).