Skip to content

Commit 6d88937

Browse files
committed
Merge branch 'update-functions-loadtest' of github.com:bisgaard-itis/osparc-simcore into update-functions-loadtest
2 parents 96594d0 + 0e58040 commit 6d88937

File tree

117 files changed

+3973
-1111
lines changed

Some content is hidden

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

117 files changed

+3973
-1111
lines changed

ci/helpers/requirements/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ charset-normalizer==3.4.1
2020
# via requests
2121
docker==7.1.0
2222
# via -r requirements/requirements.in
23-
fastapi==0.115.0
23+
fastapi==0.115.12
2424
# via -r requirements/requirements.in
2525
frozenlist==1.4.1
2626
# via
@@ -49,7 +49,7 @@ requests==2.32.3
4949
# via docker
5050
sniffio==1.3.1
5151
# via anyio
52-
starlette==0.38.6
52+
starlette==0.46.2
5353
# via
5454
# -c requirements/../../../requirements/constraints.txt
5555
# fastapi

packages/aws-library/requirements/_test.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ docker==7.1.0
7070
# via moto
7171
faker==36.1.1
7272
# via -r requirements/_test.in
73-
fastapi==0.115.11
73+
fastapi==0.115.12
7474
# via -r requirements/_test.in
7575
flask==3.1.0
7676
# via

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,16 @@
55
FunctionClass,
66
FunctionClassSpecificData,
77
FunctionID,
8-
FunctionIDNotFoundError,
98
FunctionInputs,
109
FunctionInputSchema,
1110
FunctionInputsList,
12-
FunctionInputsValidationError,
1311
FunctionJob,
1412
FunctionJobClassSpecificData,
1513
FunctionJobCollection,
1614
FunctionJobCollectionID,
17-
FunctionJobCollectionIDNotFoundError,
1815
FunctionJobCollectionsListFilters,
1916
FunctionJobCollectionStatus,
2017
FunctionJobID,
21-
FunctionJobIDNotFoundError,
2218
FunctionJobStatus,
2319
FunctionOutputs,
2420
FunctionOutputSchema,
@@ -34,6 +30,12 @@
3430
RegisteredProjectFunctionJob,
3531
SolverFunction,
3632
SolverFunctionJob,
33+
)
34+
from ..functions_errors import (
35+
FunctionIDNotFoundError,
36+
FunctionInputsValidationError,
37+
FunctionJobCollectionIDNotFoundError,
38+
FunctionJobIDNotFoundError,
3739
UnsupportedFunctionClassError,
3840
UnsupportedFunctionFunctionJobClassCombinationError,
3941
)

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,17 @@
88
FunctionClass,
99
FunctionClassSpecificData,
1010
FunctionID,
11-
FunctionIDNotFoundError,
11+
FunctionIDString,
1212
FunctionInputs,
1313
FunctionInputSchema,
1414
FunctionInputsList,
15-
FunctionInputsValidationError,
1615
FunctionJob,
1716
FunctionJobClassSpecificData,
1817
FunctionJobCollection,
1918
FunctionJobCollectionID,
20-
FunctionJobCollectionIDNotFoundError,
2119
FunctionJobCollectionsListFilters,
2220
FunctionJobCollectionStatus,
2321
FunctionJobID,
24-
FunctionJobIDNotFoundError,
2522
FunctionJobStatus,
2623
FunctionOutputs,
2724
FunctionOutputSchema,
@@ -39,6 +36,13 @@
3936
RegisteredSolverFunction,
4037
SolverFunction,
4138
SolverFunctionJob,
39+
)
40+
from ..functions_errors import (
41+
FunctionIDNotFoundError,
42+
FunctionInputsValidationError,
43+
FunctionJobCollectionIDNotFoundError,
44+
FunctionJobIDNotFoundError,
45+
FunctionReadAccessDeniedError,
4246
UnsupportedFunctionClassError,
4347
UnsupportedFunctionFunctionJobClassCombinationError,
4448
)
@@ -54,6 +58,7 @@
5458
"FunctionID",
5559
"FunctionIDNotFoundError",
5660
"FunctionIDNotFoundError",
61+
"FunctionIDString",
5762
"FunctionInputSchema",
5863
"FunctionInputs",
5964
"FunctionInputs",
@@ -80,6 +85,7 @@
8085
"FunctionJobStatus",
8186
"FunctionOutputSchema",
8287
"FunctionOutputs",
88+
"FunctionReadAccessDeniedError",
8389
"FunctionSchemaClass",
8490
"FunctionToRegister",
8591
"FunctionToRegister",

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

Lines changed: 48 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
from typing import Annotated, Any, Literal, TypeAlias
44
from uuid import UUID
55

6-
from common_library.errors_classes import OsparcErrorMixin
76
from models_library import projects
87
from models_library.basic_regex import UUID_RE_BASE
98
from models_library.basic_types import ConstrainedStr
9+
from models_library.groups import GroupID
1010
from models_library.services_types import ServiceKey, ServiceVersion
11-
from pydantic import BaseModel, Field
11+
from models_library.users import UserID
12+
from pydantic import BaseModel, ConfigDict, Field
1213

1314
from .projects import ProjectID
15+
from .utils.change_case import snake_to_camel
1416

1517
FunctionID: TypeAlias = UUID
1618
FunctionJobID: TypeAlias = UUID
@@ -207,40 +209,6 @@ class FunctionJobCollectionStatus(BaseModel):
207209
status: list[str]
208210

209211

210-
class FunctionBaseError(OsparcErrorMixin, Exception):
211-
pass
212-
213-
214-
class FunctionIDNotFoundError(FunctionBaseError):
215-
msg_template: str = "Function {function_id} not found"
216-
217-
218-
class FunctionJobIDNotFoundError(FunctionBaseError):
219-
msg_template: str = "Function job {function_job_id} not found"
220-
221-
222-
class FunctionJobCollectionIDNotFoundError(FunctionBaseError):
223-
msg_template: str = "Function job collection {function_job_collection_id} not found"
224-
225-
226-
class UnsupportedFunctionClassError(FunctionBaseError):
227-
msg_template: str = "Function class {function_class} is not supported"
228-
229-
230-
class UnsupportedFunctionJobClassError(FunctionBaseError):
231-
msg_template: str = "Function job class {function_job_class} is not supported"
232-
233-
234-
class UnsupportedFunctionFunctionJobClassCombinationError(FunctionBaseError):
235-
msg_template: str = (
236-
"Function class {function_class} and function job class {function_job_class} combination is not supported"
237-
)
238-
239-
240-
class FunctionInputsValidationError(FunctionBaseError):
241-
msg_template: str = "Function inputs validation failed: {error}"
242-
243-
244212
class FunctionJobDB(BaseModel):
245213
function_uuid: FunctionID
246214
title: str = ""
@@ -286,3 +254,47 @@ class FunctionJobCollectionsListFilters(BaseModel):
286254
"""Filters for listing function job collections"""
287255

288256
has_function_id: FunctionIDString | None = None
257+
258+
259+
class FunctionAccessRights(BaseModel):
260+
read: bool = False
261+
write: bool = False
262+
execute: bool = False
263+
264+
model_config = ConfigDict(
265+
alias_generator=snake_to_camel,
266+
populate_by_name=True,
267+
extra="forbid",
268+
)
269+
270+
271+
class FunctionUserAccessRights(FunctionAccessRights):
272+
user_id: UserID
273+
274+
275+
class FunctionGroupAccessRights(FunctionAccessRights):
276+
group_id: GroupID
277+
278+
279+
class FunctionAccessRightsDB(BaseModel):
280+
group_id: GroupID | None = None
281+
read: bool = False
282+
write: bool = False
283+
execute: bool = False
284+
285+
model_config = ConfigDict(
286+
alias_generator=snake_to_camel,
287+
populate_by_name=True,
288+
extra="forbid",
289+
)
290+
291+
292+
FunctionJobAccessRights: TypeAlias = FunctionAccessRights
293+
FunctionJobAccessRightsDB: TypeAlias = FunctionAccessRightsDB
294+
FunctionJobUserAccessRights: TypeAlias = FunctionUserAccessRights
295+
FunctionJobGroupAccessRights: TypeAlias = FunctionGroupAccessRights
296+
297+
FunctionJobCollectionAccessRights: TypeAlias = FunctionAccessRights
298+
FunctionJobCollectionAccessRightsDB: TypeAlias = FunctionAccessRightsDB
299+
FunctionJobCollectionUserAccessRights: TypeAlias = FunctionUserAccessRights
300+
FunctionJobCollectionGroupAccessRights: TypeAlias = FunctionGroupAccessRights
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
from common_library.errors_classes import OsparcErrorMixin
2+
3+
4+
class FunctionBaseError(OsparcErrorMixin, Exception):
5+
pass
6+
7+
8+
class FunctionJobReadAccessDeniedError(FunctionBaseError):
9+
msg_template: str = (
10+
"Function job {function_job_id} read access denied for user {user_id}"
11+
)
12+
13+
14+
class FunctionIDNotFoundError(FunctionBaseError):
15+
msg_template: str = "Function {function_id} not found"
16+
17+
18+
class FunctionJobIDNotFoundError(FunctionBaseError):
19+
msg_template: str = "Function job {function_job_id} not found"
20+
21+
22+
class FunctionInputsValidationError(FunctionBaseError):
23+
msg_template: str = "Function inputs validation failed: {error}"
24+
25+
26+
class FunctionReadAccessDeniedError(FunctionBaseError):
27+
msg_template: str = "Function {function_id} read access denied for user {user_id}"
28+
29+
30+
class FunctionJobCollectionIDNotFoundError(FunctionBaseError):
31+
msg_template: str = "Function job collection {function_job_collection_id} not found"
32+
33+
34+
class UnsupportedFunctionClassError(FunctionBaseError):
35+
msg_template: str = "Function class {function_class} is not supported"
36+
37+
38+
class UnsupportedFunctionJobClassError(FunctionBaseError):
39+
msg_template: str = "Function job class {function_job_class} is not supported"
40+
41+
42+
class UnsupportedFunctionFunctionJobClassCombinationError(FunctionBaseError):
43+
msg_template: str = (
44+
"Function class {function_class} and function job class {function_job_class} combination is not supported"
45+
)
46+
47+
48+
class FunctionJobCollectionReadAccessDeniedError(FunctionBaseError):
49+
msg_template: str = (
50+
"Function job collection {function_job_collection_id} read access denied for user {user_id}"
51+
)
52+
53+
54+
class FunctionWriteAccessDeniedError(FunctionBaseError):
55+
msg_template: str = "Function {function_id} write access denied for user {user_id}"
56+
57+
58+
class FunctionJobWriteAccessDeniedError(FunctionBaseError):
59+
msg_template: str = (
60+
"Function job {function_job_id} write access denied for user {user_id}"
61+
)
62+
63+
64+
class FunctionJobCollectionWriteAccessDeniedError(FunctionBaseError):
65+
msg_template: str = (
66+
"Function job collection {function_job_collection_id} write access denied for user {user_id}"
67+
)
68+
69+
70+
class FunctionExecuteAccessDeniedError(FunctionBaseError):
71+
msg_template: str = (
72+
"Function {function_id} execute access denied for user {user_id}"
73+
)
74+
75+
76+
class FunctionJobExecuteAccessDeniedError(FunctionBaseError):
77+
msg_template: str = (
78+
"Function job {function_job_id} execute access denied for user {user_id}"
79+
)
80+
81+
82+
class FunctionJobCollectionExecuteAccessDeniedError(FunctionBaseError):
83+
msg_template: str = (
84+
"Function job collection {function_job_collection_id} execute access denied for user {user_id}"
85+
)

0 commit comments

Comments
 (0)