41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from app.core.command_runner import CommandRunner
|
|
from app.core.service_manager import ServiceManager
|
|
from app.models.schemas import ServiceRequest
|
|
from app.storage.repository import Repository
|
|
|
|
|
|
router = APIRouter(prefix="/services", tags=["services"])
|
|
|
|
|
|
def _manager() -> ServiceManager:
|
|
return ServiceManager(CommandRunner(Repository()))
|
|
|
|
|
|
@router.post("/start")
|
|
def start_service(request: ServiceRequest) -> dict[str, str]:
|
|
_manager().start_service(request.service_name)
|
|
return {"serviceName": request.service_name, "status": "started"}
|
|
|
|
|
|
@router.post("/stop")
|
|
def stop_service(request: ServiceRequest) -> dict[str, str]:
|
|
_manager().stop_service(request.service_name)
|
|
return {"serviceName": request.service_name, "status": "stopped"}
|
|
|
|
|
|
@router.post("/restart")
|
|
def restart_service(request: ServiceRequest) -> dict[str, str]:
|
|
_manager().restart_service(request.service_name)
|
|
return {"serviceName": request.service_name, "status": "restarted"}
|
|
|
|
|
|
@router.get("/{service_name}/status")
|
|
def service_status(service_name: str) -> dict[str, object]:
|
|
request = ServiceRequest(serviceName=service_name)
|
|
return _manager().get_service_status(request.service_name)
|
|
|