Skip to content

Commit 65b7618

Browse files
committed
Hotfix lane reporting
1 parent eb66dc2 commit 65b7618

4 files changed

Lines changed: 23 additions & 1 deletion

File tree

logos/logos-workernode/logos_worker_node/lane_manager.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,14 @@ async def get_lane_status(self, lane_id: str) -> LaneStatus:
602602
async with self._lock:
603603
return await self._get_status_unlocked(lane_id)
604604

605+
def get_current_lane_configs(self) -> list[LaneConfig]:
606+
"""Return the LaneConfig for every active lane (for state persistence)."""
607+
configs: list[LaneConfig] = []
608+
for handle in self._handles.values():
609+
if handle.lane_config is not None:
610+
configs.append(handle.lane_config)
611+
return configs
612+
605613
def get_handle(self, lane_id: str) -> ProcessHandle | None:
606614
return self._handles.get(lane_id)
607615

logos/logos-workernode/logos_worker_node/logos_bridge.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,11 +458,19 @@ async def _execute_command(self, action: str, params: dict[str, Any]) -> dict[st
458458
if action == "add_lane":
459459
lane_config = LaneConfig(**params)
460460
status = await lane_manager.add_lane(lane_config)
461+
try:
462+
save_lanes_state(lane_manager.get_current_lane_configs())
463+
except OSError:
464+
logger.debug("Could not persist lane state after add_lane")
461465
return status.model_dump(mode="json")
462466

463467
lane_id = str(params.get("lane_id", "")).strip()
464468
if action == "delete_lane":
465469
await lane_manager.remove_lane(lane_id)
470+
try:
471+
save_lanes_state(lane_manager.get_current_lane_configs())
472+
except OSError:
473+
logger.debug("Could not persist lane state after delete_lane")
466474
return {"ok": True, "lane_id": lane_id}
467475
if action == "sleep_lane":
468476
status = await lane_manager.sleep_lane(

logos/src/logos/capacity/capacity_planner.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,8 @@ def _log_cluster_summary(self, provider_ids: List[int]) -> None:
288288
for pid in provider_ids:
289289
snap = self._registry.peek_runtime_snapshot(pid) if self._registry else None
290290
if snap is None:
291-
lines.append(f"{paint('⊘', RED)} provider={pid} {paint('offline', DIM)}")
291+
name = self._facade.get_provider_name(pid) or "?"
292+
lines.append(f"{paint('⊘', RED)} provider={pid} worker={paint(name, BOLD)} {paint('offline', DIM)}")
292293
continue
293294

294295
connected += 1

logos/src/logos/sdi/logosnode_facade.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,11 @@ def provider_ids(self) -> list[int]:
183183
with self._lock:
184184
return list(self._providers.keys())
185185

186+
def get_provider_name(self, provider_id: int) -> str | None:
187+
"""Return the display name for a provider, or None if unknown."""
188+
provider = self._providers.get(int(provider_id))
189+
return provider.name if provider else None
190+
186191
def debug_state(self) -> Dict[str, Dict]:
187192
with self._lock:
188193
providers: Dict[str, Dict] = {}

0 commit comments

Comments
 (0)