Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
163d620
Add a function_job_list_with_status endpoint
wvangeit Aug 29, 2025
2bc1f19
Merge branch 'master' into fj_list_with_status
wvangeit Sep 1, 2025
6a80227
Fix merge
wvangeit Sep 1, 2025
e7f22c8
Merge branch 'master' into fj_list_with_status
wvangeit Sep 1, 2025
f9e8212
Update openapi specs
wvangeit Sep 1, 2025
609f70a
services/api-server version: 0.12.0 → 0.13.0
wvangeit Sep 1, 2025
115307b
Bump api server version
wvangeit Sep 1, 2025
5778fea
Merge branch 'master' into fj_list_with_status
wvangeit Sep 1, 2025
f0d9d3f
Move some solver/study job endpoint code into service layer
wvangeit Sep 2, 2025
14bc078
Merge branch 'fj_list_with_status' of github.com:wvangeit/osparc-simc…
wvangeit Sep 2, 2025
a43a660
Small pylint fixes
wvangeit Sep 2, 2025
41a627f
Merge branch 'master' into fj_list_with_status
wvangeit Sep 2, 2025
ae75dad
Fix tests
wvangeit Sep 2, 2025
c45ac3a
Merge branch 'fj_list_with_status' of github.com:wvangeit/osparc-simc…
wvangeit Sep 2, 2025
447cea5
Merge branch 'master' into fj_list_with_status
wvangeit Sep 2, 2025
a280944
Small test fix
wvangeit Sep 2, 2025
57e4591
Merge branch 'fj_list_with_status' of github.com:wvangeit/osparc-simc…
wvangeit Sep 2, 2025
57ea728
Merge branch 'master' into fj_list_with_status
wvangeit Sep 2, 2025
c814818
Fix based on comment
wvangeit Sep 2, 2025
fdd66f2
Merge branch 'fj_list_with_status' of github.com:wvangeit/osparc-simc…
wvangeit Sep 2, 2025
032505a
Merged list and list with status endpoints
wvangeit Sep 2, 2025
376b040
Fix typing
wvangeit Sep 2, 2025
4b1a4d7
Merge branch 'master' into fj_list_with_status
wvangeit Sep 3, 2025
f2cd24a
Finish merge with celery worker PR
wvangeit Sep 3, 2025
3ddc865
Merge branch 'master' into fj_list_with_status
wvangeit Sep 3, 2025
9acf1dc
Fix pylint
wvangeit Sep 3, 2025
a41b8a9
Merge branch 'fj_list_with_status' of github.com:wvangeit/osparc-simc…
wvangeit Sep 3, 2025
6abae7c
Restore copilot instructions
wvangeit Sep 3, 2025
a641bfc
Restore makefiles
wvangeit Sep 3, 2025
41d43ad
Update openapi specs
wvangeit Sep 3, 2025
0f804f6
Fix linting
wvangeit Sep 3, 2025
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
71 changes: 54 additions & 17 deletions packages/models-library/src/models_library/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,21 +160,12 @@ class FunctionJobBase(BaseModel):
function_class: FunctionClass


class RegisteredFunctionJobBase(FunctionJobBase):
uid: FunctionJobID
created_at: datetime.datetime


class ProjectFunctionJob(FunctionJobBase):
function_class: Literal[FunctionClass.PROJECT] = FunctionClass.PROJECT
project_job_id: ProjectID | None
job_creation_task_id: TaskID | None


class RegisteredProjectFunctionJob(ProjectFunctionJob, RegisteredFunctionJobBase):
pass


class RegisteredProjectFunctionJobPatch(BaseModel):
function_class: Literal[FunctionClass.PROJECT] = FunctionClass.PROJECT
title: str | None
Expand All @@ -191,10 +182,6 @@ class SolverFunctionJob(FunctionJobBase):
job_creation_task_id: TaskID | None


class RegisteredSolverFunctionJob(SolverFunctionJob, RegisteredFunctionJobBase):
pass


class RegisteredSolverFunctionJobPatch(BaseModel):
function_class: Literal[FunctionClass.SOLVER] = FunctionClass.SOLVER
title: str | None
Expand All @@ -209,10 +196,6 @@ class PythonCodeFunctionJob(FunctionJobBase):
function_class: Literal[FunctionClass.PYTHON_CODE] = FunctionClass.PYTHON_CODE


class RegisteredPythonCodeFunctionJob(PythonCodeFunctionJob, RegisteredFunctionJobBase):
pass


class RegisteredPythonCodeFunctionJobPatch(BaseModel):
function_class: Literal[FunctionClass.PYTHON_CODE] = FunctionClass.PYTHON_CODE
title: str | None
Expand All @@ -226,6 +209,24 @@ class RegisteredPythonCodeFunctionJobPatch(BaseModel):
Field(discriminator="function_class"),
]


class RegisteredFunctionJobBase(FunctionJobBase):
uid: FunctionJobID
created_at: datetime.datetime


class RegisteredProjectFunctionJob(ProjectFunctionJob, RegisteredFunctionJobBase):
pass


class RegisteredSolverFunctionJob(SolverFunctionJob, RegisteredFunctionJobBase):
pass


class RegisteredPythonCodeFunctionJob(PythonCodeFunctionJob, RegisteredFunctionJobBase):
pass


RegisteredFunctionJob: TypeAlias = Annotated[
RegisteredProjectFunctionJob
| RegisteredPythonCodeFunctionJob
Expand All @@ -245,6 +246,36 @@ class FunctionJobStatus(BaseModel):
status: str


class RegisteredFunctionJobWithStatusBase(RegisteredFunctionJobBase, FunctionJobBase):
status: FunctionJobStatus


class RegisteredProjectFunctionJobWithStatus(
RegisteredProjectFunctionJob, RegisteredFunctionJobWithStatusBase
):
pass


class RegisteredSolverFunctionJobWithStatus(
RegisteredSolverFunctionJob, RegisteredFunctionJobWithStatusBase
):
pass


class RegisteredPythonCodeFunctionJobWithStatus(
RegisteredPythonCodeFunctionJob, RegisteredFunctionJobWithStatusBase
):
pass


RegisteredFunctionJobWithStatus: TypeAlias = Annotated[
RegisteredProjectFunctionJobWithStatus
| RegisteredPythonCodeFunctionJobWithStatus
| RegisteredSolverFunctionJobWithStatus,
Field(discriminator="function_class"),
]


class FunctionJobCollection(BaseModel):
"""Model for a collection of function jobs"""

Expand Down Expand Up @@ -279,6 +310,12 @@ class RegisteredFunctionJobDB(FunctionJobDB):
created: datetime.datetime


class RegisteredFunctionJobWithStatusDB(FunctionJobDB):
uuid: FunctionJobID
created: datetime.datetime
status: str


class FunctionDB(BaseModel):
function_class: FunctionClass
title: str = ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
FunctionUserAccessRights,
FunctionUserApiAccessRights,
RegisteredFunctionJobPatch,
RegisteredFunctionJobWithStatus,
)
from models_library.products import ProductName
from models_library.rabbitmq_basic_types import RPCMethodName
Expand Down Expand Up @@ -192,6 +193,43 @@ async def list_function_jobs(
).validate_python(result)


@log_decorator(_logger, level=logging.DEBUG)
async def list_function_jobs_with_status(
rabbitmq_rpc_client: RabbitMQRPCClient,
*,
user_id: UserID,
product_name: ProductName,
pagination_offset: int,
pagination_limit: int,
filter_by_function_id: FunctionID | None = None,
filter_by_function_job_ids: list[FunctionJobID] | None = None,
filter_by_function_job_collection_id: FunctionJobCollectionID | None = None,
) -> tuple[
list[RegisteredFunctionJobWithStatus],
PageMetaInfoLimitOffset,
]:
result: tuple[
list[RegisteredFunctionJobWithStatus],
PageMetaInfoLimitOffset,
] = await rabbitmq_rpc_client.request(
WEBSERVER_RPC_NAMESPACE,
TypeAdapter(RPCMethodName).validate_python("list_function_jobs_with_status"),
user_id=user_id,
product_name=product_name,
pagination_offset=pagination_offset,
pagination_limit=pagination_limit,
filter_by_function_id=filter_by_function_id,
filter_by_function_job_ids=filter_by_function_job_ids,
filter_by_function_job_collection_id=filter_by_function_job_collection_id,
)
return TypeAdapter(
tuple[
list[RegisteredFunctionJobWithStatus],
PageMetaInfoLimitOffset,
]
).validate_python(result)


@log_decorator(_logger, level=logging.DEBUG)
async def list_function_job_collections(
rabbitmq_rpc_client: RabbitMQRPCClient,
Expand Down
2 changes: 1 addition & 1 deletion services/api-server/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.12.0
0.13.0
Loading
Loading