Skip to content

Commit 45c28b6

Browse files
committed
Add functions rest api inside webserver
1 parent 81958f3 commit 45c28b6

File tree

22 files changed

+632
-105
lines changed

22 files changed

+632
-105
lines changed

api/specs/web-server/_functions.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# pylint: disable=protected-access
2+
# pylint: disable=redefined-outer-name
3+
# pylint: disable=too-many-arguments
4+
# pylint: disable=unused-argument
5+
# pylint: disable=unused-variable
6+
7+
8+
from typing import Annotated
9+
10+
from fastapi import APIRouter, Depends, status
11+
from models_library.api_schemas_webserver.functions import (
12+
FunctionToRegister,
13+
RegisteredFunctionGet,
14+
)
15+
from models_library.generics import Envelope
16+
from simcore_service_webserver._meta import API_VTAG
17+
from simcore_service_webserver.functions._controller._functions_rest_schemas import (
18+
FunctionPathParams,
19+
)
20+
21+
router = APIRouter(
22+
prefix=f"/{API_VTAG}",
23+
tags=[
24+
"functions",
25+
],
26+
)
27+
28+
29+
@router.post(
30+
"/functions",
31+
response_model=Envelope[RegisteredFunctionGet],
32+
)
33+
async def register_function(
34+
_body: FunctionToRegister,
35+
) -> Envelope[RegisteredFunctionGet]: ...
36+
37+
38+
@router.get(
39+
"/functions/{function_id}",
40+
response_model=Envelope[RegisteredFunctionGet],
41+
)
42+
async def get_function(
43+
_path: Annotated[FunctionPathParams, Depends()],
44+
): ...
45+
46+
47+
@router.delete(
48+
"/projects/{function_id}",
49+
status_code=status.HTTP_204_NO_CONTENT,
50+
)
51+
async def delete_function(
52+
_path: Annotated[FunctionPathParams, Depends()],
53+
): ...
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# pylint: disable=unused-import
2+
3+
from ..functions import ( # noqa: F401
4+
Function,
5+
FunctionClass,
6+
FunctionClassSpecificData,
7+
FunctionID,
8+
FunctionIDNotFoundError,
9+
FunctionInputs,
10+
FunctionInputSchema,
11+
FunctionInputsList,
12+
FunctionInputsValidationError,
13+
FunctionJob,
14+
FunctionJobClassSpecificData,
15+
FunctionJobCollection,
16+
FunctionJobCollectionID,
17+
FunctionJobCollectionIDNotFoundError,
18+
FunctionJobCollectionStatus,
19+
FunctionJobID,
20+
FunctionJobIDNotFoundError,
21+
FunctionJobStatus,
22+
FunctionOutputs,
23+
FunctionOutputSchema,
24+
FunctionSchemaClass,
25+
JSONFunctionInputSchema,
26+
JSONFunctionOutputSchema,
27+
ProjectFunction,
28+
ProjectFunctionJob,
29+
RegisteredFunction,
30+
RegisteredFunctionJob,
31+
RegisteredFunctionJobCollection,
32+
RegisteredProjectFunction,
33+
RegisteredProjectFunctionJob,
34+
SolverFunction,
35+
SolverFunctionJob,
36+
UnsupportedFunctionClassError,
37+
UnsupportedFunctionFunctionJobClassCombinationError,
38+
)
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# pylint: disable=unused-import
2+
3+
from typing import Annotated, TypeAlias
4+
5+
from pydantic import Field
6+
7+
from ..functions import ( # noqa: F401
8+
Function,
9+
FunctionBase,
10+
FunctionClass,
11+
FunctionClassSpecificData,
12+
FunctionID,
13+
FunctionIDNotFoundError,
14+
FunctionInputs,
15+
FunctionInputSchema,
16+
FunctionInputsList,
17+
FunctionInputsValidationError,
18+
FunctionJob,
19+
FunctionJobClassSpecificData,
20+
FunctionJobCollection,
21+
FunctionJobCollectionID,
22+
FunctionJobCollectionIDNotFoundError,
23+
FunctionJobCollectionStatus,
24+
FunctionJobID,
25+
FunctionJobIDNotFoundError,
26+
FunctionJobStatus,
27+
FunctionOutputs,
28+
FunctionOutputSchema,
29+
FunctionSchemaClass,
30+
JSONFunctionInputSchema,
31+
JSONFunctionOutputSchema,
32+
ProjectFunction,
33+
ProjectFunctionJob,
34+
RegisteredFunction,
35+
RegisteredFunctionBase,
36+
RegisteredFunctionJob,
37+
RegisteredFunctionJobCollection,
38+
RegisteredProjectFunction,
39+
RegisteredProjectFunctionJob,
40+
RegisteredSolverFunction,
41+
SolverFunction,
42+
SolverFunctionJob,
43+
UnsupportedFunctionClassError,
44+
UnsupportedFunctionFunctionJobClassCombinationError,
45+
)
46+
from ._base import InputSchema, OutputSchema
47+
48+
49+
class RegisteredSolverFunctionGet(RegisteredSolverFunction, OutputSchema): ...
50+
51+
52+
class RegisteredProjectFunctionGet(RegisteredProjectFunction, OutputSchema): ...
53+
54+
55+
class SolverFunctionToRegister(SolverFunction, InputSchema): ...
56+
57+
58+
class ProjectFunctionToRegister(ProjectFunction, InputSchema): ...
59+
60+
61+
# class ProjectFunctionToRegister(InputSchema):
62+
# title: str = ""
63+
# description: str = ""
64+
# input_schema: FunctionInputSchema
65+
# output_schema: FunctionOutputSchema
66+
# default_inputs: FunctionInputs
67+
# function_class: Literal[FunctionClass.PROJECT] = FunctionClass.PROJECT
68+
# project_id: ProjectID
69+
70+
FunctionToRegister: TypeAlias = Annotated[
71+
ProjectFunctionToRegister | SolverFunctionToRegister,
72+
Field(discriminator="function_class"),
73+
]
74+
75+
RegisteredFunctionGet: TypeAlias = Annotated[
76+
RegisteredProjectFunctionGet | RegisteredSolverFunctionGet,
77+
Field(discriminator="function_class"),
78+
]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from models_library.services_types import ServiceKey, ServiceVersion
99
from pydantic import BaseModel, Field
1010

11-
from ..projects import ProjectID
11+
from .projects import ProjectID
1212

1313
FunctionID: TypeAlias = UUID
1414
FunctionJobID: TypeAlias = UUID

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22

33
from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE
4-
from models_library.api_schemas_webserver.functions_wb_schema import (
4+
from models_library.api_schemas_webserver.functions import (
55
Function,
66
FunctionID,
77
FunctionInputs,

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

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

44
from fastapi import APIRouter, Depends, status
55
from fastapi_pagination.api import create_page
6-
from models_library.api_schemas_webserver.functions_wb_schema import (
6+
from models_library.api_schemas_webserver.functions import (
77
FunctionJobCollection,
88
FunctionJobCollectionID,
99
FunctionJobCollectionStatus,

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

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

33
from fastapi import APIRouter, Depends, status
44
from fastapi_pagination.api import create_page
5-
from models_library.api_schemas_webserver.functions_wb_schema import (
5+
from models_library.api_schemas_webserver.functions import (
66
Function,
77
FunctionClass,
88
FunctionJob,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from fastapi import APIRouter, Depends, Request, status
66
from fastapi_pagination.api import create_page
77
from jsonschema import ValidationError
8-
from models_library.api_schemas_webserver.functions_wb_schema import (
8+
from models_library.api_schemas_api_server.functions import (
99
Function,
1010
FunctionClass,
1111
FunctionID,

services/api-server/src/simcore_service_api_server/models/schemas/functions_api_schema.py

Lines changed: 0 additions & 85 deletions
This file was deleted.

services/api-server/src/simcore_service_api_server/services_rpc/wb_api_server.py

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

77
from fastapi import FastAPI
88
from fastapi_pagination import create_page
9-
from models_library.api_schemas_webserver.functions_wb_schema import (
9+
from models_library.api_schemas_api_server.functions import (
1010
Function,
1111
FunctionID,
1212
FunctionInputs,

0 commit comments

Comments
 (0)