From 325b5dc2812b470b48e497f2d128943af21ea72b Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Thu, 28 May 2026 20:50:19 +0200 Subject: [PATCH] fix: type disque SATA + df timeout Proxmox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - disk_type : rota booléen (False/True) en plus des int (0/1) — lsblk récent - df --local : évite le timeout sur montages réseau/NFS (Proxmox) - 6 nouveaux tests disk_type Co-Authored-By: Claude Sonnet 4.6 --- inventaire.py | 8 +++++--- tests/test_inventaire.py | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/inventaire.py b/inventaire.py index 1a85ac4..baa8f66 100644 --- a/inventaire.py +++ b/inventaire.py @@ -254,9 +254,10 @@ def get_bus(dev_name): def disk_type(name, rota): if name.startswith("nvme"): return "NVMe" - if str(rota) == "1": + # lsblk renvoie rota en entier (0/1) ou booléen (False/True) selon la version + if rota in (1, True, "1"): return "HDD" - if str(rota) == "0": + if rota in (0, False, "0"): return "SSD" return "inconnu" @@ -265,7 +266,8 @@ def disk_type(name, rota): def get_df_map(): dprint("lecture espace disques via df...") - out = run(["df", "--output=target,size,used,avail", "-B1"]) + # --local evite les montages réseau/NFS qui peuvent bloquer (ex: Proxmox) + out = run(["df", "--output=target,size,used,avail", "-B1", "--local"]) result = {} if not out: return result diff --git a/tests/test_inventaire.py b/tests/test_inventaire.py index ad52b21..529d7da 100644 --- a/tests/test_inventaire.py +++ b/tests/test_inventaire.py @@ -103,6 +103,27 @@ def test_bytes_human_none(): assert inventaire.bytes_human(None) == "?" +# -- disk_type ---------------------------------------------------------------- + +def test_disk_type_nvme(): + assert inventaire.disk_type("nvme0n1", None) == "NVMe" + +def test_disk_type_hdd_int(): + assert inventaire.disk_type("sda", 1) == "HDD" + +def test_disk_type_ssd_int(): + assert inventaire.disk_type("sdb", 0) == "SSD" + +def test_disk_type_hdd_bool(): + assert inventaire.disk_type("sda", True) == "HDD" + +def test_disk_type_ssd_bool(): + assert inventaire.disk_type("sdb", False) == "SSD" + +def test_disk_type_inconnu(): + assert inventaire.disk_type("sdc", None) == "inconnu" + + # ── get_smart ───────────────────────────────────────────────────────────────── SMART_PASSED = """