From 2dd8c457b6a4f4951719d6968fbe680e5c5ed39b Mon Sep 17 00:00:00 2001 From: Dan Yishai Date: Sun, 23 Jun 2024 12:28:38 +0300 Subject: [PATCH] Added backend compat local facts routes (#155) --- horizon/facts/dependencies.py | 6 ++++++ horizon/facts/router.py | 1 + horizon/pdp.py | 7 +++++++ 3 files changed, 14 insertions(+) diff --git a/horizon/facts/dependencies.py b/horizon/facts/dependencies.py index 3ac9eedd..d72d2897 100644 --- a/horizon/facts/dependencies.py +++ b/horizon/facts/dependencies.py @@ -2,6 +2,7 @@ from fastapi import Depends, Request, HTTPException from opal_client import OpalClient +from loguru import logger from horizon.config import sidecar_config from horizon.facts.update_subscriber import DataUpdateSubscriber @@ -35,9 +36,14 @@ def get_wait_timeout(request: Request) -> float | None: wait_timeout = request.headers.get( "X-Wait-timeout", sidecar_config.LOCAL_FACTS_WAIT_TIMEOUT ) + if not wait_timeout: + return None try: wait_timeout = float(wait_timeout) except ValueError as e: + logger.error( + f"Invalid X-Wait-timeout header, expected float, got {wait_timeout!r}" + ) raise HTTPException( status_code=400, detail=f"Invalid X-Wait-timeout header, expected float, got {wait_timeout!r}", diff --git a/horizon/facts/router.py b/horizon/facts/router.py index 89681527..f8ec4a5c 100644 --- a/horizon/facts/router.py +++ b/horizon/facts/router.py @@ -294,6 +294,7 @@ async def forward_request_then_wait_for_update( @facts_router.api_route( "/{full_path:path}", methods=["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"], + include_in_schema=False, ) async def forward_remaining_requests( request: FastApiRequest, client: FactsClientDependency, full_path: str diff --git a/horizon/pdp.py b/horizon/pdp.py index cbff68c5..420e54ab 100644 --- a/horizon/pdp.py +++ b/horizon/pdp.py @@ -356,6 +356,13 @@ def _configure_api_routes(self, app: FastAPI): tags=["Local Facts API"], dependencies=[Depends(enforce_pdp_token)], ) + app.include_router( + facts_router, + prefix="/v2/facts/{proj_id}/{env_id}", + tags=["Local Facts API (compat)"], + include_in_schema=False, + dependencies=[Depends(enforce_pdp_token)], + ) # TODO: remove this when clients update sdk version (legacy routes) @app.post(