driver / standard (pull_request) Successful in 15s
driver / lint (pull_request) Successful in 11s
driver / types (pull_request) Successful in 54s
driver / test (3.10) (pull_request) Successful in 59s
driver / test (3.11) (pull_request) Successful in 55s
driver / test (3.12) (pull_request) Successful in 57s
driver / lowest (pull_request) Successful in 30s
driver / test (3.13) (pull_request) Successful in 49s
driver / build (pull_request) Successful in 25s
driver / security (pull_request) Successful in 57s
CI / driver (pull_request) Successful in 3m6s
driver / publish (pull_request) Skipped
- CI moves to .gitea/workflows/ci.yml and calls the shared driver workflow of NAPALM/driver-standard; napalm-device-types and napalm-linux come from git until napalm-linux 0.15.0 is on PyPI. - requires-python >=3.10 (napalm-device-types needs it), SPDX license string, setuptools>=77, LICENSE file, py.typed, Issues and Changelog links. - Dependencies: napalm-device-types>=4.22.0, napalm-linux>=0.15.0; the floors napalm>=4.0, netmiko>=4.0.0 and paramiko>=5.0.0 stay and pass the tests at exactly those versions. The dev extra gets floors and drops black (ruff formats). - mypy strict for the whole package, no exempt module. install_package and uninstall_package keep napalm-device-types' PackagesMixin signatures, which LinuxDriver's differ from: type: ignore[override] on those two lines, with the reason above them. - Coverage floor 76 % (measured 76.19 %); the quality baseline is empty apart from it.
69 lines
2.6 KiB
Markdown
69 lines
2.6 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project are documented here.
|
||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
||
## [Unreleased]
|
||
|
||
### Changed
|
||
- The driver follows 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`
|
||
and a LICENSE file. It needs napalm-device-types 4.22.0 and napalm-linux 0.15.0.
|
||
**Python 3.9 is no longer supported**; napalm-device-types never ran on it.
|
||
|
||
## [0.4.0] – 2026-10-17
|
||
|
||
### Changed
|
||
- Requires napalm-linux 0.8.0, whose fixes are napalm-device-types' templates.
|
||
`configure_snmp_agent`, `configure_package_proxy` and `ensure_package` are switched
|
||
off (`None`): QTS has no apt, dnf or opkg, and its SNMP agent is set in its own UI.
|
||
Before, the inherited SNMP and apt-proxy fixes were offered and failed.
|
||
|
||
### Fixed
|
||
- `get_device_warnings` no longer logs a TypeError on every poll: the inherited one
|
||
asked for updates, which QTS cannot list (#6).
|
||
|
||
## [0.3.0] – 2026-10-08
|
||
|
||
### Removed
|
||
- The `_docker_bin()` override: napalm-linux 0.3.0 drops the Docker CLI
|
||
methods it served. `_container_engine_binary("docker")` returns Container
|
||
Station's path itself.
|
||
|
||
### Changed
|
||
- Requires napalm-linux >= 0.3.0.
|
||
|
||
## [0.2.0] – 2026-10-07
|
||
|
||
### Added
|
||
- `_container_engine_binary` returns Container Station's docker path, so the
|
||
container engine connection from napalm-device-types 2.6.0
|
||
(`open_container_engine("docker")`) reaches it although it is not on PATH.
|
||
Callers pass arguments only and never see the path (NetOrk/netork#765).
|
||
|
||
### Changed
|
||
- Requires napalm-device-types >= 2.6.0 and napalm-linux >= 0.2.0.
|
||
|
||
## [0.1.0]
|
||
|
||
### Added
|
||
- Initial driver scaffold: `QnapQtsDriver(StorageDriver, LinuxDriver)` with
|
||
discovery fingerprints (SNMP enterprise OID 1.3.6.1.4.1.24681, HTTP, port
|
||
specs) and the `qnap_qts` entry point.
|
||
- Explicit `DEVICE_CLASS = "storage"` so netOrk does not classify a QNAP as a
|
||
plain Linux host and hide its Storage tab.
|
||
- QTS major-version detection, Container Station docker path discovery and
|
||
Virtualization Station virsh discovery, all resolved once per session in
|
||
`open()`.
|
||
- MRO collision resolution for `get_services`, which `StorageDriver` would
|
||
otherwise shadow.
|
||
- `tools/harvest.sh` and `tools/sanitize.py` for capturing and anonymising
|
||
command output from real hardware.
|
||
|
||
### Pending
|
||
- Storage, QPKG and VM parsers — blocked on the fixture harvest.
|