From 55c80af9c5a12383b32d10571e4303754f27dcdb Mon Sep 17 00:00:00 2001 From: dv Date: Wed, 8 Apr 2026 14:13:24 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BE=D0=BD=D0=B5=D0=B8=D1=82=207=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=81=D1=82=D0=B5=D1=80=20=D1=81=D0=BB=D0=B5=D0=B9?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/services/device_discovery.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/app/services/device_discovery.py b/backend/app/services/device_discovery.py index 4694fdf..8a027e6 100644 --- a/backend/app/services/device_discovery.py +++ b/backend/app/services/device_discovery.py @@ -962,16 +962,21 @@ async def discover_via_ssh( ) if ok: is_slave = True - slave_identifier = identifier slave_config_text = slave_cfg master_ip_for_slave = master_host + # Derive slave name from master's external_id: "lane-1-1" → "lane-1-1-slave" + master_ext_id = next( + (ext_id for ext_id, host, _ in rack_hosts if host == master_host), + master_host, + ) + slave_identifier = f"{master_ext_id}-slave" break if not is_slave: logger.info(f"[ssh_discovery] {candidate_ip} — not a slave rack (no secondary linking pointing to known master)") continue - logger.info(f"[ssh_discovery] {candidate_ip} — SLAVE rack confirmed (identifier={slave_identifier}, master={master_ip_for_slave})") + logger.info(f"[ssh_discovery] {candidate_ip} — SLAVE rack confirmed (name={slave_identifier}, master={master_ip_for_slave})") # Create Rack entry for the slave in our DB slave_rack_id: int | None = None