Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,17 @@
_logger = logging.getLogger(__name__)


async def connect_to_db(app: FastAPI, settings: PostgresSettings) -> None:
async def connect_to_postgres_until_ready(settings: PostgresSettings) -> AsyncEngine:
with log_context(
_logger,
logging.DEBUG,
f"Connecting and migraging {settings.dsn_with_async_sqlalchemy}",
f"Connecting to {settings.dsn_with_async_sqlalchemy}",
):
engine = await create_async_engine_and_pg_database_ready(settings)
return await create_async_engine_and_pg_database_ready(settings)


async def connect_to_db(app: FastAPI, settings: PostgresSettings) -> None:
engine = await connect_to_postgres_until_ready(settings)

app.state.engine = engine
_logger.debug(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from fastapi.requests import Request
from sqlalchemy.ext.asyncio import AsyncEngine

from ...db.repositories._base import BaseRepository
from ...repository._base import BaseRepository

_logger = logging.getLogger(__name__)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@
from fastapi import Depends, FastAPI
from servicelib.fastapi.dependencies import get_app

from ...services.director import DirectorApi
from ...infrastructure.director import DirectorApi


def get_director_api(
app: Annotated[FastAPI, Depends(get_app)],
) -> DirectorApi:
director: DirectorApi = app.state.director_api
return director


__all__: tuple[str, ...] = ("DirectorApi",)
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,24 @@
from servicelib.fastapi.dependencies import get_app

from ...core.settings import ApplicationSettings
from ...db.repositories.groups import GroupsRepository
from ...db.repositories.services import ServicesRepository
from ...services import manifest
from ...services.director import DirectorApi
from ...repository.groups import GroupsRepository
from ...repository.services import ServicesRepository
from ...service import manifest
from .database import get_repository
from .director import get_director_api
from .director import DirectorApi, get_director_api

_logger = logging.getLogger(__name__)


def get_default_service_resources(
app: Annotated[FastAPI, Depends(get_app)]
app: Annotated[FastAPI, Depends(get_app)],
) -> ResourcesDict:
app_settings: ApplicationSettings = app.state.settings
return app_settings.CATALOG_SERVICES_DEFAULT_RESOURCES


def get_default_service_specifications(
app: Annotated[FastAPI, Depends(get_app)]
app: Annotated[FastAPI, Depends(get_app)],
) -> ServiceSpecifications:
app_settings: ApplicationSettings = app.state.settings
return app_settings.CATALOG_SERVICES_DEFAULT_SPECIFICATIONS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from models_library.groups import GroupAtDB
from models_library.users import UserID

from ...db.repositories.groups import GroupsRepository
from ...repository.groups import GroupsRepository
from .database import get_repository


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,12 @@
LIST_SERVICES_CACHING_TTL,
RESPONSE_MODEL_POLICY,
)
from ...db.repositories.groups import GroupsRepository
from ...db.repositories.services import ServicesRepository
from ...models.services_db import ServiceAccessRightsAtDB, ServiceMetaDataDBGet
from ...services.director import DirectorApi
from ..dependencies.database import get_repository
from ..dependencies.director import get_director_api
from ..dependencies.services import get_service_from_manifest
from ...repository.groups import GroupsRepository
from ...repository.services import ServicesRepository
from .._dependencies.database import get_repository
from .._dependencies.director import DirectorApi, get_director_api
from .._dependencies.services import get_service_from_manifest

_logger = logging.getLogger(__name__)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
from models_library.services import ServiceKey, ServiceVersion

from ..._constants import RESPONSE_MODEL_POLICY
from ...db.repositories.services import ServicesRepository
from ...models.services_db import ServiceAccessRightsAtDB
from ..dependencies.database import get_repository
from ..dependencies.services import AccessInfo, check_service_read_access
from ...repository.services import ServicesRepository
from .._dependencies.database import get_repository
from .._dependencies.services import AccessInfo, check_service_read_access

_logger = logging.getLogger(__name__)

Expand All @@ -33,10 +33,12 @@ async def get_service_access_rights(
],
x_simcore_products_name: Annotated[str, Header(...)],
):
service_access_rights: list[
ServiceAccessRightsAtDB
] = await services_repo.get_service_access_rights(
key=service_key, version=service_version, product_name=x_simcore_products_name
service_access_rights: list[ServiceAccessRightsAtDB] = (
await services_repo.get_service_access_rights(
key=service_key,
version=service_version,
product_name=x_simcore_products_name,
)
)

gids_with_access_rights = {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
from models_library.api_schemas_directorv2.services import ServiceExtras
from models_library.services import ServiceKey, ServiceVersion

from ...services.director import DirectorApi
from ..dependencies.director import get_director_api
from .._dependencies.director import DirectorApi, get_director_api

router = APIRouter()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
from fastapi import APIRouter, Depends
from models_library.services import ServiceKey, ServiceVersion

from ...services.director import DirectorApi
from ..dependencies.director import get_director_api
from .._dependencies.director import DirectorApi, get_director_api

router = APIRouter()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from models_library.services_metadata_published import ServiceMetaDataPublished

from ..._constants import RESPONSE_MODEL_POLICY
from ..dependencies.services import (
from .._dependencies.services import (
AccessInfo,
check_service_read_access,
get_service_from_manifest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,16 @@
from pydantic import TypeAdapter

from ..._constants import RESPONSE_MODEL_POLICY, SIMCORE_SERVICE_SETTINGS_LABELS
from ...db.repositories.services import ServicesRepository
from ...services.director import DirectorApi
from ...services.function_services import is_function_service
from ...repository.services import ServicesRepository
from ...service.function_services import is_function_service
from ...utils.service_resources import (
merge_service_resources_with_user_specs,
parse_generic_resource,
)
from ..dependencies.database import get_repository
from ..dependencies.director import get_director_api
from ..dependencies.services import get_default_service_resources
from ..dependencies.user_groups import list_user_groups
from .._dependencies.database import get_repository
from .._dependencies.director import DirectorApi, get_director_api
from .._dependencies.services import get_default_service_resources
from .._dependencies.user_groups import list_user_groups

router = APIRouter()
_logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -149,7 +148,7 @@ async def _get_service_labels(


def _get_service_settings(
labels: dict[str, Any]
labels: dict[str, Any],
) -> list[SimcoreServiceSettingLabelEntry]:
service_settings = TypeAdapter(list[SimcoreServiceSettingLabelEntry]).validate_json(
labels.get(SIMCORE_SERVICE_SETTINGS_LABELS, "[]"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
from models_library.users import UserID

from ..._constants import RESPONSE_MODEL_POLICY
from ...db.repositories.groups import GroupsRepository
from ...db.repositories.services import ServicesRepository
from ...services.function_services import is_function_service
from ..dependencies.database import get_repository
from ..dependencies.services import get_default_service_specifications
from ...repository.groups import GroupsRepository
from ...repository.services import ServicesRepository
from ...service.function_services import is_function_service
from .._dependencies.database import get_repository
from .._dependencies.services import get_default_service_specifications

router = APIRouter()
_logger = logging.getLogger(__name__)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from fastapi import FastAPI
from servicelib.fastapi.http_error import set_app_default_http_error_handlers


def setup_rest_exception_handlers(app: FastAPI) -> None:
set_app_default_http_error_handlers(app)
110 changes: 55 additions & 55 deletions services/catalog/src/simcore_service_catalog/api/rest/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,67 +14,67 @@
_services_specifications,
)

v0_router = APIRouter()

# health
health_router = _health.router
v0_router.include_router(
_health.router,
tags=["diagnostics"],
)
def setup_rest_routes(app: FastAPI, vtag: str):
v0_router = APIRouter()

# meta
v0_router.include_router(
_meta.router,
tags=["meta"],
prefix="/meta",
)
# health
health_router = _health.router
v0_router.include_router(
_health.router,
tags=["diagnostics"],
)

# services
_SERVICE_PREFIX = "/services"
_SERVICE_TAGS: list[str | Enum] = [
"services",
]
v0_router.include_router(
_services_resources.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_labels.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_extras.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_specifications.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_ports.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_access_rights.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
# meta
v0_router.include_router(
_meta.router,
tags=["meta"],
prefix="/meta",
)

# NOTE: that this router must come after resources/specifications/ports/access_rights
v0_router.include_router(
_services.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
# services
_SERVICE_PREFIX = "/services"
_SERVICE_TAGS: list[str | Enum] = [
"services",
]
v0_router.include_router(
_services_resources.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_labels.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_extras.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_specifications.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_ports.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)
v0_router.include_router(
_services_access_rights.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)

# NOTE: that this router must come after resources/specifications/ports/access_rights
v0_router.include_router(
_services.router,
tags=_SERVICE_TAGS,
prefix=_SERVICE_PREFIX,
)

def setup_rest_api_routes(app: FastAPI, vtag: str):
# healthcheck at / and at /v0/
app.include_router(health_router)
# api under /v*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@
CatalogForbiddenError,
CatalogItemNotFoundError,
)
from simcore_service_catalog.db.repositories.groups import GroupsRepository
from simcore_service_catalog.repository.groups import GroupsRepository

from ...db.repositories.services import ServicesRepository
from ...services import services_api
from ..dependencies.director import get_director_api
from ...repository.services import ServicesRepository
from ...service import services_api
from .._dependencies.director import get_director_api

_logger = logging.getLogger(__name__)

Expand Down
13 changes: 7 additions & 6 deletions services/catalog/src/simcore_service_catalog/api/rpc/routes.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import logging
from collections.abc import AsyncIterator

from fastapi import FastAPI
from fastapi_lifespan_manager import State
from models_library.api_schemas_catalog import CATALOG_RPC_NAMESPACE

from ...services.rabbitmq import get_rabbitmq_rpc_server
from ...infrastructure.rabbitmq import get_rabbitmq_rpc_server
from . import _services

_logger = logging.getLogger(__name__)


def setup_rpc_api_routes(app: FastAPI) -> None:
async def _on_startup() -> None:
rpc_server = get_rabbitmq_rpc_server(app)
await rpc_server.register_router(_services.router, CATALOG_RPC_NAMESPACE, app)
async def setup_rpc_routes(app: FastAPI) -> AsyncIterator[State]:
rpc_server = get_rabbitmq_rpc_server(app)
await rpc_server.register_router(_services.router, CATALOG_RPC_NAMESPACE, app)

app.add_event_handler("startup", _on_startup)
yield {}
Loading
Loading