# napalm-openmediavault NAPALM driver for [OpenMediaVault](https://www.openmediavault.org/) NAS systems, built on [napalm-device-types](https://git.netork.io/NAPALM/napalm-device-types) (`StorageDriver`) and [napalm-linux](https://git.netork.io/NAPALM/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`, …). ```python 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 ` 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 ```bash pip install napalm-openmediavault ``` ## Development The rules are in [STANDARDS.md](https://git.netork.io/NAPALM/driver-standard/src/branch/main/STANDARDS.md). ```bash python -m venv .venv && .venv/bin/pip install -e ".[dev]" .venv/bin/pytest --cov ``` ## License Apache-2.0