fix(host-agent): load configured devices
This commit is contained in:
@@ -6,6 +6,7 @@ from dataclasses import dataclass
|
||||
|
||||
from cloud.internal_api.models import AssignmentModel
|
||||
from device.manager import DeviceManager
|
||||
from driver.registry import build_driver_factory
|
||||
from host_agent.assignment import AssignmentExecutor
|
||||
from host_agent.client import HostAgentClient
|
||||
from host_agent.config import HostAgentConfig, load_host_agent_config
|
||||
@@ -13,6 +14,7 @@ from host_agent.execution import create_execution_factories
|
||||
from host_agent.heartbeat import HeartbeatSynchronizer
|
||||
from host_agent.lease import ActiveAssignmentRunner
|
||||
from host_agent.processor import AssignmentProcessingResult, AssignmentProcessor
|
||||
from storage.device_config import DeviceConfigStore
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -94,9 +96,10 @@ def create_application(
|
||||
*,
|
||||
config: HostAgentConfig | None = None,
|
||||
manager: DeviceManager | None = None,
|
||||
device_config_store: DeviceConfigStore | None = None,
|
||||
) -> HostAgentApplication:
|
||||
resolved_config = config or load_host_agent_config()
|
||||
resolved_manager = manager or DeviceManager()
|
||||
resolved_manager = manager or _configured_device_manager(device_config_store)
|
||||
client = HostAgentClient(resolved_config)
|
||||
heartbeat = HeartbeatSynchronizer(resolved_manager, client, resolved_config)
|
||||
executor = AssignmentExecutor(create_execution_factories(resolved_manager))
|
||||
@@ -106,3 +109,22 @@ def create_application(
|
||||
heartbeat=heartbeat,
|
||||
processor=AssignmentProcessor(client, active_runner),
|
||||
)
|
||||
|
||||
|
||||
def _configured_device_manager(
|
||||
config_store: DeviceConfigStore | None,
|
||||
) -> DeviceManager:
|
||||
manager = DeviceManager()
|
||||
store = config_store or DeviceConfigStore()
|
||||
for device in store.list():
|
||||
manager.register_device(
|
||||
device["device_id"],
|
||||
build_driver_factory(
|
||||
device["driver_type"],
|
||||
device["connection_info"],
|
||||
),
|
||||
name=device["name"],
|
||||
driver_type=device["driver_type"],
|
||||
connection_info=device["connection_info"],
|
||||
)
|
||||
return manager
|
||||
|
||||
Reference in New Issue
Block a user