32 lines
1022 B
Python
32 lines
1022 B
Python
import os
|
|
from typing import Dict
|
|
|
|
from app.core.settings import EDGE_BOTS_WORKSPACE_ROOT, EDGE_BASE_IMAGE
|
|
from app.runtime.docker_manager import EdgeDockerManager
|
|
from app.runtime.native_manager import EdgeNativeRuntimeBackend
|
|
|
|
|
|
def edge_runtime_mode() -> str:
|
|
runtime_kind = str(os.getenv("EDGE_RUNTIME_KIND", "all") or "all").strip().lower()
|
|
if runtime_kind in {"docker", "native"}:
|
|
return runtime_kind
|
|
return "all"
|
|
|
|
|
|
def build_edge_runtime_backends() -> Dict[str, object]:
|
|
mode = edge_runtime_mode()
|
|
backends: Dict[str, object] = {}
|
|
if mode in {"all", "docker"}:
|
|
backends["docker"] = EdgeDockerManager(host_data_root=EDGE_BOTS_WORKSPACE_ROOT, base_image=EDGE_BASE_IMAGE)
|
|
if mode in {"all", "native"}:
|
|
backends["native"] = EdgeNativeRuntimeBackend()
|
|
return backends
|
|
|
|
|
|
def preferred_edge_runtime_kind(backends: Dict[str, object]) -> str:
|
|
if "docker" in backends:
|
|
return "docker"
|
|
if "native" in backends:
|
|
return "native"
|
|
return "docker"
|