from __future__ import annotations from fastapi import APIRouter, Depends, HTTPException from app.db import Database from app.node_manager import NodeManager router = APIRouter(prefix="/api/admin/node-instances", tags=["node-instances"]) def _get_db() -> Database: from app.main import app return app.state.db def _get_manager() -> NodeManager: from app.main import app return app.state.node_manager @router.get("") def list_instances(db: Database = Depends(_get_db)) -> list[dict]: return db.list_instances() @router.post("/{instance_id}/stop") def stop_instance( instance_id: str, db: Database = Depends(_get_db), manager: NodeManager = Depends(_get_manager), ) -> dict: manager.stop_instance(instance_id) instance = next( (item for item in db.list_instances() if item["id"] == instance_id), None, ) if instance is None: raise HTTPException(status_code=404, detail="instance not found") return {"stopped": instance_id}