christianmanivong 481f047fff
driver / standard (push) Successful in 13s
driver / lint (push) Successful in 11s
driver / types (push) Successful in 1m1s
driver / test (3.10) (push) Successful in 1m3s
driver / test (3.11) (push) Successful in 1m2s
driver / lowest (push) Successful in 28s
driver / test (3.12) (push) Successful in 1m4s
driver / test (3.13) (push) Successful in 54s
driver / build (push) Successful in 25s
driver / security (push) Successful in 1m7s
driver / publish (push) Failing after 24s
CI / driver (push) Failing after 21m59s
Merge pull request 'chore: adopt the NAPALM driver standard' (#9) from chore/driver-standard into main
2026-10-23 14:44:39 +00:00
2026-10-23 16:01:56 +02:00
2026-10-23 16:01:56 +02:00

napalm-openmediavault

NAPALM driver for OpenMediaVault NAS systems, built on napalm-device-types (StorageDriver) and napalm-linux (LinuxDriver).

OpenMediaVault is Debian underneath, so the driver inherits everything napalm-linux does for a Linux host (packages, updates, services, users, processes, cron, Docker) and adds the NAS side: disks, md RAID arrays, filesystems, shares and the NAS services.

Tested against

Model Firmware
OpenMediaVault 6.x (Debian Bullseye), 7.x (Debian Bookworm)

Connection

SSH, port 22 by default, through napalm-linux (Netmiko). The account needs a shell; smartctl and mdadm run through sudo (passwordless, or with sudo_password). Every optional_args key of napalm-linux is accepted (port, pkg_manager, sudo_password, …).

from napalm import get_network_driver

driver = get_network_driver("openmediavault")
with driver("192.0.2.10", "admin", "secret", optional_args={"sudo_password": "secret"}) as nas:
    print(nas.get_facts())
    print(nas.get_disks())
    print(nas.get_shares())

Supported

Getter / action
get_facts napalm-linux's facts, os_version is OMV <version> of the openmediavault package
get_disks lsblk for the disks, smartctl -iA for health, temperature and RPM
get_disk_pools md arrays from /proc/mdstat, size and state from mdadm --detail
get_volumes mounted block-device filesystems from df, read-only flag from /proc/mounts
get_shares SMB, NFS and FTP shares from OMV's configuration database (omv-confdbadm)
get_storage_services whether smbd, nfs-server, proftpd, ssh and rsync are enabled and running
everything of napalm-linux packages, updates, services, users, processes, cron, Docker, …

"Upgrade everything" is a full upgrade (FULL_UPGRADE = True): a plain apt-get upgrade holds back OpenMediaVault's own packages and the kernel.

Not supported

  • get_volume_snapshots, get_replication_jobs, get_quotas raise NotImplementedError.
  • harden_ssh_server is not offered: OpenMediaVault generates sshd_config from its own database and would undo a drop-in on the next apply of its SSH settings.
  • Configuration changes to shares, disks or arrays.

Installation

pip install napalm-openmediavault

Development

The rules are in STANDARDS.md.

python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest --cov

License

Apache-2.0

S
Description
No description provided
Readme
189 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 100%