Skip to content

Commit e97f83b

Browse files
✨ Expose /licensed-items endpoint in api server (#6958)
Co-authored-by: matusdrobuliak66 <[email protected]> Co-authored-by: Matus Drobuliak <[email protected]>
1 parent ed110f4 commit e97f83b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+459
-150
lines changed

packages/models-library/src/models_library/api_schemas_webserver/licensed_items.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from models_library.licensed_items import LicensedItemID, LicensedResourceType
55
from models_library.resource_tracker import PricingPlanId
6-
from pydantic import PositiveInt
6+
from pydantic import ConfigDict, PositiveInt
77

88
from ._base import OutputSchema
99

@@ -15,6 +15,20 @@ class LicensedItemGet(OutputSchema):
1515
pricing_plan_id: PricingPlanId
1616
created_at: datetime
1717
modified_at: datetime
18+
model_config = ConfigDict(
19+
json_schema_extra={
20+
"examples": [
21+
{
22+
"licensed_item_id": "0362b88b-91f8-4b41-867c-35544ad1f7a1",
23+
"name": "best-model",
24+
"licensed_resource_type": f"{LicensedResourceType.VIP_MODEL}",
25+
"pricing_plan_id": "15",
26+
"created_at": "2024-12-12 09:59:26.422140",
27+
"modified_at": "2024-12-12 09:59:26.422140",
28+
}
29+
]
30+
}
31+
)
1832

1933

2034
class LicensedItemGetPage(NamedTuple):

services/api-server/src/simcore_service_api_server/api/dependencies/rabbitmq.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,23 @@
66
from servicelib.aiohttp.application_setup import ApplicationSetupError
77
from servicelib.fastapi.dependencies import get_app
88
from servicelib.rabbitmq import RabbitMQClient
9+
from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient
910
from tenacity import before_sleep_log, retry, stop_after_delay, wait_fixed
1011

11-
from ...services.log_streaming import LogDistributor
12+
from ...services_http.log_streaming import LogDistributor
1213

1314
_MAX_WAIT_FOR_LOG_DISTRIBUTOR_SECONDS: Final[int] = 10
1415

1516
_logger = logging.getLogger(__name__)
1617

1718

19+
def get_rabbitmq_rpc_client(
20+
app: Annotated[FastAPI, Depends(get_app)]
21+
) -> RabbitMQRPCClient:
22+
assert app.state.rabbitmq_rpc_client # nosec
23+
return cast(RabbitMQRPCClient, app.state.rabbitmq_rpc_client)
24+
25+
1826
def get_rabbitmq_client(app: Annotated[FastAPI, Depends(get_app)]) -> RabbitMQClient:
1927
assert app.state.rabbitmq_client # nosec
2028
return cast(RabbitMQClient, app.state.rabbitmq_client)

services/api-server/src/simcore_service_api_server/api/dependencies/webserver.py renamed to services/api-server/src/simcore_service_api_server/api/dependencies/webserver_http.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from ..._constants import MSG_BACKEND_SERVICE_UNAVAILABLE
1111
from ...core.settings import ApplicationSettings, WebServerSettings
12-
from ...services.webserver import AuthSession
12+
from ...services_http.webserver import AuthSession
1313
from .application import get_app, get_settings
1414
from .authentication import Identity, get_active_user_email, get_current_identity
1515

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from typing import Annotated, cast
2+
3+
from fastapi import Depends, FastAPI
4+
from servicelib.fastapi.dependencies import get_app
5+
6+
from ...services_rpc.wb_api_server import WbApiRpcClient
7+
8+
9+
async def get_wb_api_rpc_client(
10+
app: Annotated[FastAPI, Depends(get_app)]
11+
) -> WbApiRpcClient:
12+
assert app.state.wb_api_rpc_client # nosec
13+
return cast(WbApiRpcClient, app.state.wb_api_rpc_client)

services/api-server/src/simcore_service_api_server/api/root.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from .routes import (
88
files,
99
health,
10+
licensed_items,
1011
meta,
1112
solvers,
1213
solvers_jobs,
@@ -40,6 +41,9 @@ def create_router(settings: ApplicationSettings):
4041
router.include_router(studies_jobs.router, tags=["studies"], prefix="/studies")
4142
router.include_router(wallets.router, tags=["wallets"], prefix="/wallets")
4243
router.include_router(_credits.router, tags=["credits"], prefix="/credits")
44+
router.include_router(
45+
licensed_items.router, tags=["licensed-items"], prefix="/licensed-items"
46+
)
4347

4448
# NOTE: multiple-files upload is currently disabled
4549
# Web form to upload files at http://localhost:8000/v0/upload-form-view

services/api-server/src/simcore_service_api_server/api/routes/credits.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from fastapi import APIRouter, Depends, status
44

55
from ...models.schemas.model_adapter import GetCreditPriceLegacy
6-
from ..dependencies.webserver import AuthSession, get_webserver_session
6+
from ..dependencies.webserver_http import AuthSession, get_webserver_session
77
from ._constants import FMSG_CHANGELOG_NEW_IN_VERSION
88

99
router = APIRouter()

services/api-server/src/simcore_service_api_server/api/routes/files.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
FileUploadData,
3838
UploadLinks,
3939
)
40-
from ...services.storage import StorageApi, StorageFileMetaData, to_file_api_model
40+
from ...services_http.storage import StorageApi, StorageFileMetaData, to_file_api_model
4141
from ..dependencies.authentication import get_current_user_id
4242
from ..dependencies.services import get_api_client
4343
from ._common import API_SERVER_DEV_FEATURES_ENABLED

services/api-server/src/simcore_service_api_server/api/routes/health.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010

1111
from ..._meta import API_VERSION, PROJECT_NAME
1212
from ...core.health_checker import ApiServerHealthChecker, get_health_checker
13-
from ...services.catalog import CatalogApi
14-
from ...services.director_v2 import DirectorV2Api
15-
from ...services.storage import StorageApi
16-
from ...services.webserver import WebserverApi
13+
from ...services_http.catalog import CatalogApi
14+
from ...services_http.director_v2 import DirectorV2Api
15+
from ...services_http.storage import StorageApi
16+
from ...services_http.webserver import WebserverApi
1717
from ..dependencies.application import get_reverse_url_mapper
1818
from ..dependencies.services import get_api_client
1919

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from typing import Annotated, Any
2+
3+
from fastapi import APIRouter, Depends, status
4+
5+
from ...api.dependencies.authentication import get_product_name
6+
from ...api.dependencies.webserver_rpc import get_wb_api_rpc_client
7+
from ...exceptions.service_errors_utils import DEFAULT_BACKEND_SERVICE_STATUS_CODES
8+
from ...models.pagination import Page, PaginationParams
9+
from ...models.schemas.model_adapter import LicensedItemGet
10+
from ...services_rpc.wb_api_server import WbApiRpcClient
11+
12+
router = APIRouter()
13+
14+
_LICENSE_ITEMS_STATUS_CODES: dict[int | str, dict[str, Any]] = {
15+
**DEFAULT_BACKEND_SERVICE_STATUS_CODES,
16+
}
17+
18+
19+
@router.get(
20+
"",
21+
response_model=Page[LicensedItemGet],
22+
status_code=status.HTTP_200_OK,
23+
responses=_LICENSE_ITEMS_STATUS_CODES,
24+
description="Get all licensed items",
25+
include_in_schema=False,
26+
)
27+
async def get_licensed_items(
28+
page_params: Annotated[PaginationParams, Depends()],
29+
web_api_rpc: Annotated[WbApiRpcClient, Depends(get_wb_api_rpc_client)],
30+
product_name: Annotated[str, Depends(get_product_name)],
31+
):
32+
return await web_api_rpc.get_licensed_items(
33+
product_name=product_name, page_params=page_params
34+
)

services/api-server/src/simcore_service_api_server/api/routes/solvers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
from ...models.schemas.errors import ErrorGet
1414
from ...models.schemas.model_adapter import ServicePricingPlanGetLegacy
1515
from ...models.schemas.solvers import Solver, SolverKeyId, SolverPort
16-
from ...services.catalog import CatalogApi
16+
from ...services_http.catalog import CatalogApi
1717
from ..dependencies.application import get_reverse_url_mapper
1818
from ..dependencies.authentication import get_current_user_id, get_product_name
1919
from ..dependencies.services import get_api_client
20-
from ..dependencies.webserver import AuthSession, get_webserver_session
20+
from ..dependencies.webserver_http import AuthSession, get_webserver_session
2121
from ._common import API_SERVER_DEV_FEATURES_ENABLED
2222
from ._constants import FMSG_CHANGELOG_NEW_IN_VERSION
2323

0 commit comments

Comments
 (0)