feat: 完成工作流调度与上传下载 API
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
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}
|
||||
Reference in New Issue
Block a user