Commit Graph
15 Commits
Author SHA1 Message Date
christianmanivong 5aa06a485d Merge pull request 'feat: drop the get_device_warnings override; the pending updates are the fact (0.2.0)' (#7) from feat/facts-not-warnings into master
CI / test (3.10) (push) Successful in 28s
CI / test (3.11) (push) Successful in 25s
CI / test (3.12) (push) Successful in 28s
2026-10-17 08:34:57 +00:00
Christian Manivong 8b41a948be feat: drop the get_device_warnings override; the pending updates are the fact (0.2.0)
CI / test (3.10) (push) Successful in 28s
CI / test (3.11) (push) Successful in 26s
CI / test (3.12) (push) Successful in 28s
CI / test (3.10) (pull_request) Successful in 26s
CI / test (3.11) (pull_request) Successful in 26s
CI / test (3.12) (pull_request) Successful in 27s
The override counted "N upgraded" in an apt simulation run without a
fixed locale -- nothing matched on a German host -- and hid held-back
packages, which FULL_UPGRADE installs. netOrk names updates_available
from get_available_updates (netOrk #1111).
2026-10-17 09:39:16 +02:00
christianmanivong 508f3dcb37 Merge pull request 'fix: opt out of the SSH hardening inherited from napalm-linux' (#3) from feat/ssh-algorithm-fix into master
CI / test (3.10) (push) Successful in 28s
CI / test (3.11) (push) Successful in 26s
CI / test (3.12) (push) Successful in 29s
2026-10-11 21:25:11 +00:00
Christian Manivong f68c758338 fix: opt out of the SSH hardening inherited from napalm-linux
CI / test (3.10) (pull_request) Failing after 20s
CI / test (3.11) (pull_request) Failing after 18s
CI / test (3.12) (pull_request) Failing after 19s
CI / test (3.10) (push) Successful in 28s
CI / test (3.11) (push) Successful in 27s
CI / test (3.12) (push) Successful in 29s
OpenMediaVault generates sshd_config from its own database; a drop-in
netOrk wrote would be dropped by the next apply of the SSH settings
without a word. harden_ssh_server = None makes netOrk's capability probe
answer no.

Requires napalm-linux 0.5.0; bumps to 0.1.1. NetOrk/netork#1027
2026-10-11 23:12:34 +02:00
christianmanivong 5742349742 Merge pull request 'ci: run the tests and build the package on every push and pull request' (#2) from ci/workflow into master
CI / test (3.10) (push) Successful in 29s
CI / test (3.11) (push) Successful in 27s
CI / test (3.12) (push) Successful in 29s
2026-10-07 06:29:44 +00:00
Christian Manivong ca03b6dd99 ci: run the tests and build the package on every push and pull request
CI / test (3.10) (push) Successful in 28s
CI / test (3.11) (push) Successful in 27s
CI / test (3.12) (push) Successful in 29s
CI / test (3.10) (pull_request) Successful in 28s
CI / test (3.11) (pull_request) Successful in 27s
CI / test (3.12) (pull_request) Successful in 29s
The same job as napalm-fritzbox and napalm-opnsense: Python 3.10, 3.11 and
3.12, pytest, then wheel and sdist. napalm-device-types comes from
git.netork.io first, because PyPI has an unrelated package of that name.

pyproject gains a dev extra with pytest, which the job installs.

napalm-linux, which this driver builds on, is installed from git as well:
it is not on PyPI either.
2026-10-07 07:52:44 +02:00
christianmanivong cfe730ccea Merge pull request 'feat: declare that upgrading everything must be a full upgrade on OpenMediaVault' (#1) from feat/full-upgrade into master 2026-10-06 10:27:22 +00:00
Christian Manivong d61086ff5f feat: declare that upgrading everything must be a full upgrade on OpenMediaVault
A plain apt-get upgrade holds back OMV's own packages and the kernel;
omv-upgrade is a dist-upgrade. netOrk reads FULL_UPGRADE when it upgrades
the host (MVP 5).
2026-10-06 12:27:02 +02:00
Christian Manivong 0f57745725 refactor: inherit StorageDriver instead of working around it
An OMV box is a NAS built on Debian, but this driver inherited LinuxDriver alone
and implemented the storage getters by name, because inheriting StorageDriver as
well would have let its NotImplementedError stubs shadow LinuxDriver's working
package and service methods. DEVICE_CLASS = "storage" then existed to tell
netOrk what the class hierarchy no longer said.

napalm-device-types v1.0 makes role bases declaration-only, so both roles can be
declared honestly and in the order that matters:

    class OpenMediaVaultDriver(StorageDriver, LinuxDriver):

device_class comes from that first base now, so DEVICE_CLASS is gone.
2026-08-21 12:50:27 +07:00
christianmanivong 67939ace75 fix: declare DEVICE_CLASS so the Storage tab is reachable
The driver inherits LinuxDriver for the OS surface and set TYPE_LABEL to
"Storage", but netOrk derives device_class from an issubclass chain that
reaches OSDriver before StorageDriver and returned "linux". The UI gates
the Storage tab on device_class === "storage", so an OMV device showed a
Storage label in the list and no Storage tab on the detail page — while
its disks, pools, volumes and shares were being collected and persisted
the whole time.

netOrk now honours an explicit DEVICE_CLASS attribute before falling back
to the chain, mirroring how it already honours TYPE_LABEL.

Refs christianmanivong/netork#111
2026-08-21 10:27:16 +07:00
Christian Manivong 5a9c360587 refactor(warnings): report raw signal only, no severity/presentation
get_device_warnings() now returns only {code, meta} — severity, title,
message, and action are resolved centrally by netork's
WARNING_CATALOG (netork/core/device_warnings.py), not by the driver.
Keeps this driver independent of netork and avoids per-vendor drift in
how the same warning code is presented.
2026-07-20 09:54:07 +02:00
Christian ManivongandClaude Sonnet 4.6 7e8624a3dd 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 ManivongandClaude Sonnet 4.6 46c4c13f3d feat: TYPE_LABEL = "Storage" replaces storage_device = True flag
The TYPE_LABEL attribute on the base class hierarchy is now the
canonical way for drivers to declare their device category. The
storage_device sentinel flag is removed — classification is determined
by reading TYPE_LABEL via getattr() in the backend.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 11:38:36 +02:00
Christian Manivong 07b68cd73f fix: add missing docstrings on get_facts, get_replication_jobs, get_quotas 2026-06-13 03:21:07 +02:00
Christian Manivong 302c5b95cd init 2026-06-13 03:18:28 +02:00