init
This commit is contained in:
commit
d05799fe65
60 changed files with 7078 additions and 0 deletions
7
server/app/api/api.py
Normal file
7
server/app/api/api.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
from fastapi import APIRouter
|
||||
from app.api.endpoints import containers, logs
|
||||
|
||||
api_router = APIRouter()
|
||||
|
||||
api_router.include_router(containers.router, prefix="/containers", tags=["containers"])
|
||||
api_router.include_router(logs.router, prefix="/logs", tags=["logs"])
|
31
server/app/api/endpoints/logs.py
Normal file
31
server/app/api/endpoints/logs.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
from fastapi import APIRouter, WebSocket, WebSocketDisconnect
|
||||
from app.services.logs_service import logs_service
|
||||
import asyncio
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.websocket("/ws")
|
||||
async def websocket_endpoint(websocket: WebSocket):
|
||||
"""Endpoint WebSocket pour recevoir les logs en temps réel."""
|
||||
await logs_service.connect(websocket)
|
||||
try:
|
||||
while True:
|
||||
data = await websocket.receive_text()
|
||||
# Ici, nous pourrions ajouter la logique pour filtrer les logs
|
||||
# en fonction des préférences du client
|
||||
await logs_service.broadcast_log(data)
|
||||
except WebSocketDisconnect:
|
||||
logs_service.disconnect(websocket)
|
||||
|
||||
@router.websocket("/ws/{container_id}")
|
||||
async def container_logs_websocket(websocket: WebSocket, container_id: str):
|
||||
"""Endpoint WebSocket pour recevoir les logs d'un conteneur spécifique."""
|
||||
await logs_service.connect(websocket, container_id)
|
||||
try:
|
||||
async for log in logs_service.get_container_logs(container_id):
|
||||
await websocket.send_text(log)
|
||||
except WebSocketDisconnect:
|
||||
logs_service.disconnect(websocket, container_id)
|
||||
except Exception as e:
|
||||
await websocket.send_text(f"Error: {str(e)}")
|
||||
logs_service.disconnect(websocket, container_id)
|
Loading…
Add table
Add a link
Reference in a new issue