Skip to content

Commit 200b1db

Browse files
implement rut part of checkout/release license
1 parent e060492 commit 200b1db

File tree

3 files changed

+55
-20
lines changed

3 files changed

+55
-20
lines changed
Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,4 @@
11
from typing import TypeAlias
22
from uuid import UUID
33

4-
from models_library.api_schemas_resource_usage_tracker.licensed_items_usages import (
5-
LicenseCheckoutID,
6-
)
7-
from models_library.products import ProductName
8-
from pydantic import BaseModel, ConfigDict
9-
104
LicensedItemUsageID: TypeAlias = UUID
11-
12-
13-
class LicenseCheckoutCreate(BaseModel):
14-
checkout_id: LicenseCheckoutID
15-
product_name: ProductName
16-
17-
model_config = ConfigDict(from_attributes=True)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from fastapi import FastAPI
2+
from models_library.api_schemas_resource_usage_tracker.licensed_items_usages import (
3+
LicensedItemUsageGet,
4+
LicenseItemCheckoutGet,
5+
)
6+
from models_library.licensed_items import LicensedItemID
7+
from models_library.products import ProductName
8+
from models_library.resource_tracker import ServiceRunId
9+
from models_library.resource_tracker_licensed_items_usages import LicenseCheckoutID
10+
from models_library.users import UserID
11+
from models_library.wallets import WalletID
12+
from servicelib.rabbitmq import RPCRouter
13+
14+
from ...services import licensed_items_usages
15+
16+
router = RPCRouter()
17+
18+
19+
@router.expose(reraise_if_error_type=())
20+
async def checkout_licensed_item(
21+
app: FastAPI,
22+
*,
23+
licensed_item_id: LicensedItemID,
24+
wallet_id: WalletID,
25+
product_name: ProductName,
26+
num_of_seats: int,
27+
service_run_id: ServiceRunId,
28+
user_id: UserID,
29+
user_email: str,
30+
) -> LicenseItemCheckoutGet:
31+
return await licensed_items_usages.checkout_licensed_item(
32+
db_engine=app.state.engine,
33+
licensed_item_id=licensed_item_id,
34+
wallet_id=wallet_id,
35+
product_name=product_name,
36+
num_of_seats=num_of_seats,
37+
service_run_id=service_run_id,
38+
user_id=user_id,
39+
user_email=user_email,
40+
)
41+
42+
43+
@router.expose(reraise_if_error_type=())
44+
async def release_licensed_item(
45+
app: FastAPI, *, checkout_id: LicenseCheckoutID, product_name: ProductName
46+
) -> LicensedItemUsageGet:
47+
return await licensed_items_usages.release_licensed_item(
48+
db_engine=app.state.engine, checkout_id=checkout_id, product_name=product_name
49+
)

services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/services/licensed_items_usages.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@
33

44
from fastapi import Depends
55
from models_library.api_schemas_resource_usage_tracker.licensed_items_usages import (
6+
LicenseCheckoutID,
67
LicensedItemsUsagesPage,
78
LicensedItemUsageGet,
89
LicenseItemCheckoutGet,
910
)
1011
from models_library.licensed_items import LicensedItemID
1112
from models_library.products import ProductName
1213
from models_library.resource_tracker import ServiceRunId, ServiceRunStatus
13-
from models_library.resource_tracker_licensed_items_usages import (
14-
LicenseCheckoutCreate,
15-
LicensedItemUsageID,
16-
)
14+
from models_library.resource_tracker_licensed_items_usages import LicensedItemUsageID
1715
from models_library.rest_ordering import OrderBy
1816
from models_library.users import UserID
1917
from models_library.wallets import WalletID
@@ -160,13 +158,14 @@ async def checkout_licensed_item(
160158
async def release_licensed_item(
161159
db_engine: Annotated[AsyncEngine, Depends(get_resource_tracker_db_engine)],
162160
*,
163-
data: LicenseCheckoutCreate,
161+
checkout_id: LicenseCheckoutID,
162+
product_name: ProductName,
164163
) -> LicensedItemUsageGet:
165164

166165
licensed_item_usage_db: LicensedItemUsageDB = await licensed_items_usages_db.update(
167166
db_engine,
168-
licensed_item_usage_id=data.checkout_id,
169-
product_name=data.product_name,
167+
licensed_item_usage_id=checkout_id,
168+
product_name=product_name,
170169
stopped_at=datetime.now(tz=UTC),
171170
)
172171

0 commit comments

Comments
 (0)