7 Commits
Author SHA1 Message Date
Christian Manivong 51b8cda3e4 chore: adopt the NAPALM driver standard
driver / standard (pull_request) Successful in 13s
driver / lint (pull_request) Successful in 11s
driver / types (pull_request) Successful in 42s
driver / test (3.10) (pull_request) Successful in 3m25s
driver / test (3.11) (pull_request) Successful in 3m23s
driver / test (3.12) (pull_request) Successful in 3m25s
driver / test (3.13) (pull_request) Successful in 3m19s
driver / lowest (pull_request) Successful in 3m7s
driver / security (pull_request) Successful in 53s
driver / build (pull_request) Successful in 34s
CI / driver (pull_request) Successful in 19m12s
driver / publish (pull_request) Skipped
- 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 (was napalm_device_types>=0.4.0), LICENSE
  file, py.typed, SPDX license string, links to git.netork.io, a dev extra
  with floors.
- README (pyproject named one that did not exist) and CHANGELOG.md.
- mypy strict for the package; napalm_zyxel.zyxel_driver is exempt for now
  (24 errors), recorded in the quality baseline with its two complex
  functions. Coverage floor 68 % (measured 68.97 %).

Closes #8
2026-10-23 08:40:47 +02:00
Christian Manivong b306b64673 fix: what bandit and the remaining lint rules found
- nosec for SHA512_password in the login payload (B105): it is a flag
  telling the gateway how Input_Passwd is encoded, not a password; a false
  positive.
- A failed login raises ConnectionException from the underlying error, so
  the cause stays attached.
- tests: pytest.raises instead of try / assert False / except, which
  python -O would have turned into tests that always pass.
2026-10-23 08:39:32 +02:00
Christian Manivong f9fc4e3d06 style: ruff format and the lint rules of the driver standard
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.
2026-10-23 08:38:39 +02:00
Christian Manivong 210f00f5e7 fix!: reboot_host instead of reboot; drop run_device_action (0.2.0)
CI / test (3.10) (push) Successful in 3m5s
CI / test (3.11) (push) Successful in 23s
CI / test (3.12) (push) Successful in 24s
CI / test (3.10) (pull_request) Successful in 3m3s
CI / test (3.11) (pull_request) Successful in 23s
CI / test (3.12) (pull_request) Successful in 24s
The gateway had reboot(), but the contract (HostRebootMixin) and the
application look for reboot_host(), so the gateway could not be
restarted from it. reboot_host() returns None and raises when the
gateway refuses, as the contract says.

run_device_action dispatched reboot, restart_wifi[:band] and
get_diagnostics by string, with a result shape other than its
contract's. restart_wifi(band) and get_diagnostics() are methods now;
napalm-device-types deprecates run_device_action.

BREAKING CHANGE: reboot() and run_device_action are removed.

Closes #5. Part of #6.
2026-10-17 08:40:28 +02:00
Christian ManivongandClaude Sonnet 4.6 247329fada feat: OUI_PREFIXES für MAC/ARP-Fingerprinting
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:41:45 +02:00
Christian ManivongandClaude Sonnet 4.6 23e68ecd87 feat: Fingerprint-Attribute für Discovery-Scoring
Ergänzt DRIVER_NAME, HTTP_FINGERPRINT, SNMP_FINGERPRINT, SSH_FINGERPRINT,
PORT_SPECS und SNMP_OBJECT_ID_PREFIX gemäß docs/DISCOVERY_FINGERPRINTING.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 14:47:08 +02:00
Christian Manivong 13e1aba5aa init 2026-06-13 03:18:28 +02:00