Skip to content

Commit ebc9de3

Browse files
author
Aditya Patil
committed
fix: Moved registry refresh endpoint to dedicated router
Signed-off-by: Aditya Patil <adpatil@redhat.com>
1 parent c1ba261 commit ebc9de3

4 files changed

Lines changed: 22 additions & 28 deletions

File tree

sdk/python/feast/api/registry/rest/__init__.py

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22
from typing import Any, Optional
33

4-
from fastapi import FastAPI, Response, status
4+
from fastapi import FastAPI
55

66
from feast.api.registry.rest.compute_engines import get_compute_engine_router
77
from feast.api.registry.rest.data_sources import get_data_source_router
@@ -14,7 +14,7 @@
1414
from feast.api.registry.rest.metrics import get_metrics_router
1515
from feast.api.registry.rest.monitoring import get_monitoring_router
1616
from feast.api.registry.rest.permissions import get_permission_router
17-
from feast.api.registry.rest.projects import get_project_router
17+
from feast.api.registry.rest.projects import get_project_router, get_registry_router
1818
from feast.api.registry.rest.saved_datasets import get_saved_dataset_router
1919
from feast.api.registry.rest.search import get_search_router
2020

@@ -45,27 +45,7 @@ def register_all_routes(app: FastAPI, grpc_handler, server=None, store=None):
4545
app.include_router(get_compute_engine_router(grpc_handler, store=resolved_store))
4646

4747
if resolved_store:
48-
49-
@app.post("/registry/refresh")
50-
def refresh_registry():
51-
try:
52-
from feast.permissions.action import AuthzedAction
53-
from feast.permissions.security_manager import assert_permissions
54-
55-
project = resolved_store.registry.get_project(
56-
name=resolved_store.project, allow_cache=True
57-
)
58-
assert_permissions(resource=project, actions=[AuthzedAction.UPDATE])
59-
60-
resolved_store.refresh_registry()
61-
return Response(status_code=status.HTTP_200_OK)
62-
except Exception:
63-
logger.exception("Registry refresh failed")
64-
return Response(
65-
content='{"detail":"Registry refresh failed. Check server logs for details."}',
66-
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
67-
media_type="application/json",
68-
)
48+
app.include_router(get_registry_router(resolved_store))
6949

7050
_register_openlineage_consumer(app, resolved_store)
7151

sdk/python/feast/api/registry/rest/projects.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from fastapi import APIRouter, Depends, Query
1+
from fastapi import APIRouter, Depends, Query, Response, status
22

33
from feast.api.registry.rest.rest_utils import (
44
get_pagination_params,
@@ -50,3 +50,19 @@ def list_projects(
5050
}
5151

5252
return router
53+
54+
55+
def get_registry_router(store) -> APIRouter:
56+
router = APIRouter()
57+
58+
@router.post("/registry/refresh")
59+
def refresh_registry():
60+
from feast.permissions.action import AuthzedAction
61+
from feast.permissions.security_manager import assert_permissions
62+
63+
project = store.registry.get_project(name=store.project, allow_cache=True)
64+
assert_permissions(resource=project, actions=[AuthzedAction.UPDATE])
65+
store.refresh_registry()
66+
return Response(status_code=status.HTTP_200_OK)
67+
68+
return router

sdk/python/tests/unit/api/test_api_rest_registry.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2323,9 +2323,8 @@ def test_registry_refresh_via_rest_error():
23232323
register_all_routes(app, grpc_handler, store=store)
23242324

23252325
with patch.object(store, "refresh_registry", side_effect=Exception("db error")):
2326-
client = TestClient(app)
2326+
client = TestClient(app, raise_server_exceptions=False)
23272327
response = client.post("/registry/refresh")
23282328
assert response.status_code == 500
2329-
assert "Registry refresh failed" in response.json()["detail"]
23302329

23312330
tmp_dir.cleanup()

sdk/python/tests/unit/test_ui_server.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,6 @@ def test_registry_refresh_endpoint_error(mock_feature_store):
309309
with _setup_importlib_mocks(temp_dir):
310310
app = get_app(mock_feature_store, TEST_PROJECT_NAME)
311311

312-
client = TestClient(app)
312+
client = TestClient(app, raise_server_exceptions=False)
313313
resp = client.post("/api/v1/registry/refresh")
314314
assertpy.assert_that(resp.status_code).is_equal_to(500)
315-
assertpy.assert_that(resp.json()["detail"]).contains("Registry refresh failed")

0 commit comments

Comments
 (0)