Christian Manivong e8c09ac37c
driver / standard (pull_request) Successful in 13s
driver / lint (pull_request) Successful in 12s
driver / types (pull_request) Successful in 51s
driver / test (3.10) (pull_request) Successful in 57s
driver / test (3.11) (pull_request) Successful in 55s
driver / test (3.12) (pull_request) Successful in 53s
driver / lowest (pull_request) Successful in 24s
driver / test (3.13) (pull_request) Successful in 47s
driver / build (pull_request) Successful in 24s
driver / security (pull_request) Successful in 58s
CI / driver (pull_request) Successful in 3m8s
driver / publish (pull_request) Skipped
chore(release): 0.3.0
2026-10-23 16:01:56 +02: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%