fix(host-agent): advertise connected devices
This commit is contained in:
@@ -4,6 +4,7 @@ import asyncio
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from cloud.internal_api.models import DeviceSnapshotModel, HeartbeatResponse
|
||||
from core.errors import DeviceRuntimeError
|
||||
from device.manager import DeviceManager
|
||||
from host_agent.client import HostAgentClient
|
||||
from host_agent.config import HostAgentConfig
|
||||
@@ -17,7 +18,7 @@ def build_device_snapshot(manager: DeviceManager) -> list[DeviceSnapshotModel]:
|
||||
DeviceSnapshotModel(
|
||||
device_id=device.id,
|
||||
driver_type=device.driver_type,
|
||||
status=device.status,
|
||||
status="idle" if device.status == "busy" else device.status,
|
||||
capability_tags=list(device.capability_tags),
|
||||
)
|
||||
for device in sorted(manager.list_devices(), key=lambda item: item.id)
|
||||
@@ -47,6 +48,7 @@ class HeartbeatSynchronizer:
|
||||
)
|
||||
|
||||
async def run(self, stop: asyncio.Event) -> None:
|
||||
self.connect_devices()
|
||||
while not stop.is_set():
|
||||
await self.sync_once()
|
||||
try:
|
||||
@@ -56,3 +58,12 @@ class HeartbeatSynchronizer:
|
||||
)
|
||||
except TimeoutError:
|
||||
continue
|
||||
|
||||
def connect_devices(self) -> None:
|
||||
for device in self.manager.list_devices():
|
||||
if device.status != "idle":
|
||||
continue
|
||||
try:
|
||||
self.manager.connect(device.id)
|
||||
except DeviceRuntimeError:
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user