Files
node-26/drb-edge-node/app/internal/config_manager.py
T
Logan d0e4734cf9
CI / lint (push) Successful in 8s
Build edge-node / build (push) Failing after 22s
Build icecast / build (push) Failing after 23s
CI / test (push) Successful in 23s
Build op25 / build (push) Failing after 16s
Linting + touches
2026-04-21 00:56:50 -04:00

43 lines
1.4 KiB
Python

import json
from pathlib import Path
from app.config import settings
from app.models import NodeConfig, SystemConfig
from app.internal.logger import logger
_CONFIG_FILE = Path(settings.config_path) / "node_config.json"
def load_node_config() -> NodeConfig:
if _CONFIG_FILE.exists():
try:
data = json.loads(_CONFIG_FILE.read_text())
return NodeConfig(**data)
except Exception as e:
logger.warning(f"Could not load node config, using defaults: {e}")
return NodeConfig(
node_id=settings.node_id,
node_name=settings.node_name,
lat=settings.node_lat,
lon=settings.node_lon,
configured=False,
)
def save_node_config(config: NodeConfig) -> None:
_CONFIG_FILE.parent.mkdir(parents=True, exist_ok=True)
_CONFIG_FILE.write_text(config.model_dump_json(indent=2))
logger.info("Node config saved.")
def apply_system_config(system_config: SystemConfig) -> bool:
"""Write the OP25-compatible config blob to /configs/active.cfg.json."""
try:
active_cfg = Path(settings.config_path) / "active.cfg.json"
active_cfg.write_text(json.dumps(system_config.config, indent=2))
logger.info(f"System config applied: {system_config.name}")
return True
except Exception as e:
logger.error(f"Failed to write system config: {e}")
return False