25 lines
868 B
Python
25 lines
868 B
Python
from fastapi import APIRouter, HTTPException
|
|
|
|
from models.schemas import Enclosure, SlotInfo
|
|
from services.enclosure import discover_enclosures, list_slots
|
|
|
|
router = APIRouter(prefix="/api/enclosures", tags=["enclosures"])
|
|
|
|
|
|
@router.get("", response_model=list[Enclosure])
|
|
async def get_enclosures():
|
|
"""Discover all SES enclosures."""
|
|
return discover_enclosures()
|
|
|
|
|
|
@router.get("/{enclosure_id}/drives", response_model=list[SlotInfo])
|
|
async def get_enclosure_drives(enclosure_id: str):
|
|
"""List all drive slots for an enclosure."""
|
|
slots = list_slots(enclosure_id)
|
|
if not slots:
|
|
# Check if the enclosure exists at all
|
|
enclosures = discover_enclosures()
|
|
if not any(e["id"] == enclosure_id for e in enclosures):
|
|
raise HTTPException(status_code=404, detail=f"Enclosure '{enclosure_id}' not found")
|
|
return slots
|