From 4369faf1449f29ec94db43db71d17634760a85e9 Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Sat, 10 Oct 2026 22:54:46 +0200 Subject: [PATCH] fix(sftp): nach erfolgreichem Test als erreichbar anzeigen Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 ++ src/netmover/mounting/manager.py | 5 +++++ tests/test_sftp.py | 2 ++ 3 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 956663c..3b6dc04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ Die Version steht an genau einer Stelle: `src/netmover/__init__.py`. ## [Unreleased] ### Geändert +- SFTP-Anbindungen gelten nach erfolgreichem Test als „erreichbar“ (vorher bis + zum ersten Regellauf „nicht geprüft“). - Klartext-Hinweis bei `mount error(95)` (keine gemeinsame SMB-Version) mit Synology-Einstellung; aufgefallen bei der Anbindung des echten NAS. diff --git a/src/netmover/mounting/manager.py b/src/netmover/mounting/manager.py index aeb263f..4cfb4b5 100644 --- a/src/netmover/mounting/manager.py +++ b/src/netmover/mounting/manager.py @@ -507,6 +507,11 @@ class MountManager: if cfg.type is MountType.SFTP and m.host_key is None and report.can_read: m.host_key = report.host_key event(log, "sftp.host_key_pinned", mount=m.name, fp=report.host_key_fingerprint) + # SFTP hat keinen Mount-Zustand – ein erfolgreicher Test heißt „erreichbar“. + if cfg.type is MountType.SFTP and report.ok and m.state is not MountState.MOUNTED: + m.state = MountState.MOUNTED + m.state_since = utcnow() + m.last_error = None # -- Lebenszeichen und Wiederherstellung -------------------------------------- diff --git a/tests/test_sftp.py b/tests/test_sftp.py index 30c3e5e..0ac119f 100644 --- a/tests/test_sftp.py +++ b/tests/test_sftp.py @@ -147,6 +147,8 @@ def test_manager_pins_host_key_and_checks_alive( with session_factory() as s: mm = s.get(Mount, mid) assert mm is not None and mm.host_key == server.host_key_string + # Praxisbefund: nach erfolgreichem Test „erreichbar“ statt „nicht geprüft“ + assert mm.state is MountState.MOUNTED assert manager.check_alive(mid) is None with session_factory() as s: