""" Tenant routes for gateway """ from fastapi import APIRouter, Request, HTTPException from fastapi.responses import JSONResponse import httpx import logging from app.core.config import settings logger = logging.getLogger(__name__) router = APIRouter() @router.post("/") async def create_tenant(request: Request): """Proxy tenant creation to tenant service""" try: body = await request.body() auth_header = request.headers.get("Authorization") async with httpx.AsyncClient(timeout=10.0) as client: response = await client.post( f"{settings.TENANT_SERVICE_URL}/tenants", content=body, headers={ "Content-Type": "application/json", "Authorization": auth_header } ) return JSONResponse( status_code=response.status_code, content=response.json() ) except httpx.RequestError as e: logger.error(f"Tenant service unavailable: {e}") raise HTTPException( status_code=503, detail="Tenant service unavailable" ) @router.get("/") async def get_tenants(request: Request): """Get tenants""" try: auth_header = request.headers.get("Authorization") async with httpx.AsyncClient(timeout=10.0) as client: response = await client.get( f"{settings.TENANT_SERVICE_URL}/tenants", headers={"Authorization": auth_header} ) return JSONResponse( status_code=response.status_code, content=response.json() ) except httpx.RequestError as e: logger.error(f"Tenant service unavailable: {e}") raise HTTPException( status_code=503, detail="Tenant service unavailable" )