Skip to content

Commit 62244f5

Browse files
authored
Add a function_job_list_with_status endpoint 🎨 (#8278)
1 parent 6836ff2 commit 62244f5

File tree

25 files changed

+1154
-306
lines changed

25 files changed

+1154
-306
lines changed

packages/models-library/src/models_library/functions.py

Lines changed: 54 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -190,21 +190,12 @@ class FunctionJobBase(BaseModel):
190190
function_class: FunctionClass
191191

192192

193-
class RegisteredFunctionJobBase(FunctionJobBase):
194-
uid: FunctionJobID
195-
created_at: datetime.datetime
196-
197-
198193
class ProjectFunctionJob(FunctionJobBase):
199194
function_class: Literal[FunctionClass.PROJECT] = FunctionClass.PROJECT
200195
project_job_id: ProjectID | None
201196
job_creation_task_id: TaskID | None
202197

203198

204-
class RegisteredProjectFunctionJob(ProjectFunctionJob, RegisteredFunctionJobBase):
205-
pass
206-
207-
208199
class RegisteredProjectFunctionJobPatch(BaseModel):
209200
function_class: Literal[FunctionClass.PROJECT] = FunctionClass.PROJECT
210201
title: str | None
@@ -221,10 +212,6 @@ class SolverFunctionJob(FunctionJobBase):
221212
job_creation_task_id: TaskID | None
222213

223214

224-
class RegisteredSolverFunctionJob(SolverFunctionJob, RegisteredFunctionJobBase):
225-
pass
226-
227-
228215
class RegisteredSolverFunctionJobPatch(BaseModel):
229216
function_class: Literal[FunctionClass.SOLVER] = FunctionClass.SOLVER
230217
title: str | None
@@ -239,10 +226,6 @@ class PythonCodeFunctionJob(FunctionJobBase):
239226
function_class: Literal[FunctionClass.PYTHON_CODE] = FunctionClass.PYTHON_CODE
240227

241228

242-
class RegisteredPythonCodeFunctionJob(PythonCodeFunctionJob, RegisteredFunctionJobBase):
243-
pass
244-
245-
246229
class RegisteredPythonCodeFunctionJobPatch(BaseModel):
247230
function_class: Literal[FunctionClass.PYTHON_CODE] = FunctionClass.PYTHON_CODE
248231
title: str | None
@@ -256,6 +239,24 @@ class RegisteredPythonCodeFunctionJobPatch(BaseModel):
256239
Field(discriminator="function_class"),
257240
]
258241

242+
243+
class RegisteredFunctionJobBase(FunctionJobBase):
244+
uid: FunctionJobID
245+
created_at: datetime.datetime
246+
247+
248+
class RegisteredProjectFunctionJob(ProjectFunctionJob, RegisteredFunctionJobBase):
249+
pass
250+
251+
252+
class RegisteredSolverFunctionJob(SolverFunctionJob, RegisteredFunctionJobBase):
253+
pass
254+
255+
256+
class RegisteredPythonCodeFunctionJob(PythonCodeFunctionJob, RegisteredFunctionJobBase):
257+
pass
258+
259+
259260
RegisteredFunctionJob: TypeAlias = Annotated[
260261
RegisteredProjectFunctionJob
261262
| RegisteredPythonCodeFunctionJob
@@ -275,6 +276,36 @@ class FunctionJobStatus(BaseModel):
275276
status: str
276277

277278

279+
class RegisteredFunctionJobWithStatusBase(RegisteredFunctionJobBase, FunctionJobBase):
280+
status: FunctionJobStatus
281+
282+
283+
class RegisteredProjectFunctionJobWithStatus(
284+
RegisteredProjectFunctionJob, RegisteredFunctionJobWithStatusBase
285+
):
286+
pass
287+
288+
289+
class RegisteredSolverFunctionJobWithStatus(
290+
RegisteredSolverFunctionJob, RegisteredFunctionJobWithStatusBase
291+
):
292+
pass
293+
294+
295+
class RegisteredPythonCodeFunctionJobWithStatus(
296+
RegisteredPythonCodeFunctionJob, RegisteredFunctionJobWithStatusBase
297+
):
298+
pass
299+
300+
301+
RegisteredFunctionJobWithStatus: TypeAlias = Annotated[
302+
RegisteredProjectFunctionJobWithStatus
303+
| RegisteredPythonCodeFunctionJobWithStatus
304+
| RegisteredSolverFunctionJobWithStatus,
305+
Field(discriminator="function_class"),
306+
]
307+
308+
278309
class FunctionJobCollection(BaseModel):
279310
"""Model for a collection of function jobs"""
280311

@@ -309,6 +340,12 @@ class RegisteredFunctionJobDB(FunctionJobDB):
309340
created: datetime.datetime
310341

311342

343+
class RegisteredFunctionJobWithStatusDB(FunctionJobDB):
344+
uuid: FunctionJobID
345+
created: datetime.datetime
346+
status: str
347+
348+
312349
class FunctionDB(BaseModel):
313350
function_class: FunctionClass
314351
title: str = ""

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions_rpc_interface.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
FunctionUserAccessRights,
2424
FunctionUserApiAccessRights,
2525
RegisteredFunctionJobPatch,
26+
RegisteredFunctionJobWithStatus,
2627
)
2728
from models_library.products import ProductName
2829
from models_library.rabbitmq_basic_types import RPCMethodName
@@ -192,6 +193,40 @@ async def list_function_jobs(
192193
).validate_python(result)
193194

194195

196+
@log_decorator(_logger, level=logging.DEBUG)
197+
async def list_function_jobs_with_status(
198+
rabbitmq_rpc_client: RabbitMQRPCClient,
199+
*,
200+
user_id: UserID,
201+
product_name: ProductName,
202+
pagination_offset: int,
203+
pagination_limit: int,
204+
filter_by_function_id: FunctionID | None = None,
205+
filter_by_function_job_ids: list[FunctionJobID] | None = None,
206+
filter_by_function_job_collection_id: FunctionJobCollectionID | None = None,
207+
) -> tuple[
208+
list[RegisteredFunctionJobWithStatus],
209+
PageMetaInfoLimitOffset,
210+
]:
211+
result = await rabbitmq_rpc_client.request(
212+
WEBSERVER_RPC_NAMESPACE,
213+
TypeAdapter(RPCMethodName).validate_python("list_function_jobs_with_status"),
214+
user_id=user_id,
215+
product_name=product_name,
216+
pagination_offset=pagination_offset,
217+
pagination_limit=pagination_limit,
218+
filter_by_function_id=filter_by_function_id,
219+
filter_by_function_job_ids=filter_by_function_job_ids,
220+
filter_by_function_job_collection_id=filter_by_function_job_collection_id,
221+
)
222+
return TypeAdapter(
223+
tuple[
224+
list[RegisteredFunctionJobWithStatus],
225+
PageMetaInfoLimitOffset,
226+
]
227+
).validate_python(result)
228+
229+
195230
@log_decorator(_logger, level=logging.DEBUG)
196231
async def list_function_job_collections(
197232
rabbitmq_rpc_client: RabbitMQRPCClient,

packages/simcore-sdk/src/simcore_sdk/node_ports_v2/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ async def ports(
4141

4242
__all__ = (
4343
"DBManager",
44-
"exceptions",
4544
"FileLinkType",
4645
"Nodeports",
4746
"Port",
47+
"exceptions",
4848
"ports",
4949
)

services/api-server/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.12.0
1+
0.13.0

0 commit comments

Comments
 (0)