freeleaps-service-hub/apps/devops/app/routes/deployment/apis.py
2025-08-03 21:39:39 -07:00

76 lines
2.5 KiB
Python

from datetime import datetime
from typing import List, Optional
from fastapi import APIRouter, Depends
from loguru import logger
from app.common.models import CodeDepotDoc
from app.common.models.deployment.deployment import Deployment, InitDeploymentRequest, CheckDeploymentStatusRequest, \
CheckApplicationLogsRequest, CheckApplicationLogsResponse
from app.routes.deployment.service import DeploymentService, get_deployment_service
router = APIRouter(prefix="/deployment")
@router.post("/initDeployment")
## insert a new Deployment object to db
async def init_deployment(
request: InitDeploymentRequest,
service: DeploymentService = Depends(get_deployment_service)
) -> Deployment:
return await service.init_deployment(request)
@router.get('/getLatestDeployment')
async def get_latest_deployment(
product_id: str,
target_env: str = "alpha",
service: DeploymentService = Depends(get_deployment_service)
) -> Optional[Deployment]:
"""
Get the latest deployment for a given product ID.
"""
return await service.get_latest_deployment(product_id, target_env)
@router.post("/updateDeploymentStatus")
async def update_deployment(
request: Deployment,
service: DeploymentService = Depends(get_deployment_service)
) -> Deployment:
return await service.update_deployment_status(request)
@router.get("/checkDeploymentStatus")
async def check_deployment_status(
product_id: str,
service: DeploymentService = Depends(get_deployment_service)
) -> List[Deployment]:
return await service.check_deployment_status(product_id)
@router.post("/createDummyCodeDepot")
async def create_dummy_code_depot(
service: DeploymentService = Depends(get_deployment_service)
) -> CodeDepotDoc:
"""
Create a dummy code depot for testing purposes.
"""
try:
depot_name = await service.create_dummy_code_depot()
return depot_name
except Exception as e:
logger.error(f"Failed to create dummy code depot: {e}")
raise e
@router.post("/checkApplicationLogs")
async def check_application_logs(
request: CheckApplicationLogsRequest,
service: DeploymentService = Depends(get_deployment_service)
) -> CheckApplicationLogsResponse:
"""
Check application logs for a given deployment.
"""
try:
res = await service.check_application_logs(request)
return res
except Exception as e:
logger.error(f"Failed to check application logs: {e}")
raise e