Files
wov-api/app/routers/instances.py
T

42 lines
1010 B
Python

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}