feat: drop the get_device_warnings override; the pending updates are the fact (0.2.0) #7

Merged
christianmanivong merged 1 commits from feat/facts-not-warnings into master 2026-10-17 08:34:57 +00:00
3 changed files with 13 additions and 39 deletions

No files matched your search

-38
View File
@@ -85,44 +85,6 @@ class OpenMediaVaultDriver(StorageDriver, LinuxDriver):
pass pass
return facts return facts
# ── Warnings ──────────────────────────────────────────────────────────────
def get_device_warnings(self) -> list[dict[str, Any]]:
"""Return warnings, ignoring packages held back by apt-get upgrade.
On OMV, kernel and OMV-specific packages are routinely held back
(they require dist-upgrade or omv-upgrade). Reporting them as
"updates available" after a successful apt-get upgrade is misleading.
We simulate the upgrade first and only warn if there are packages
that a standard apt-get upgrade would actually install.
"""
warnings: list[dict[str, Any]] = []
try:
sim = self._sudo(
"DEBIAN_FRONTEND=noninteractive apt-get upgrade --simulate 2>&1",
read_timeout=60,
)
m = re.search(r'(\d+) upgraded', sim)
upgradable_count = int(m.group(1)) if m else 0
except Exception:
upgradable_count = -1 # unknown — fall back to parent behaviour
if upgradable_count == 0:
return [] # nothing to do with apt-get upgrade; held-back only
if upgradable_count < 0:
return super().get_device_warnings()
updates = self.get_available_updates()
if updates:
warnings.append({
"code": "updates_available",
"meta": {
"count": upgradable_count,
"packages": [u.get("name", "") for u in updates[:10]],
},
})
return warnings
# ── Physical disks ───────────────────────────────────────────────────────── # ── Physical disks ─────────────────────────────────────────────────────────
def get_disks(self) -> list[PhysicalDiskDict]: def get_disks(self) -> list[PhysicalDiskDict]:
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "napalm-openmediavault" name = "napalm-openmediavault"
version = "0.1.1" version = "0.2.0"
description = "NAPALM driver for OpenMediaVault NAS (SSH)" description = "NAPALM driver for OpenMediaVault NAS (SSH)"
readme = "README.md" readme = "README.md"
requires-python = ">=3.9" requires-python = ">=3.9"
+12
View File
@@ -0,0 +1,12 @@
"""The pending updates are a fact, not a warning of the driver's (netOrk #1111).
The override counted "N upgraded" in apt's simulation -- nothing on a German
host -- and hid held-back packages, which FULL_UPGRADE installs. The caller
names updates_available from get_available_updates.
"""
from napalm_openmediavault.openmediavault import OpenMediaVaultDriver
def test_no_warnings_of_its_own():
assert "get_device_warnings" not in vars(OpenMediaVaultDriver)