Skip to content

Commit b0384da

Browse files
authored
Merge branch 'master' into feature/support-center
2 parents 156ed94 + 127a619 commit b0384da

File tree

47 files changed

+2000
-886
lines changed

Some content is hidden

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

47 files changed

+2000
-886
lines changed

api/specs/web-server/_functions.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,18 @@
1010
from _common import as_query
1111
from fastapi import APIRouter, Depends, status
1212
from models_library.api_schemas_webserver.functions import (
13+
FunctionGroupAccessRightsGet,
14+
FunctionGroupAccessRightsUpdate,
1315
FunctionToRegister,
1416
RegisteredFunctionGet,
1517
RegisteredFunctionUpdate,
1618
)
1719
from models_library.generics import Envelope
20+
from models_library.groups import GroupID
1821
from simcore_service_webserver._meta import API_VTAG
22+
from simcore_service_webserver.functions._controller._functions_rest import (
23+
FunctionGroupPathParams,
24+
)
1925
from simcore_service_webserver.functions._controller._functions_rest_schemas import (
2026
FunctionGetQueryParams,
2127
FunctionPathParams,
@@ -75,3 +81,33 @@ async def update_function(
7581
async def delete_function(
7682
_path: Annotated[FunctionPathParams, Depends()],
7783
): ...
84+
85+
86+
@router.get(
87+
"/functions/{function_id}/groups",
88+
response_model=Envelope[dict[GroupID, FunctionGroupAccessRightsGet]],
89+
)
90+
async def get_function_groups(
91+
_path: Annotated[FunctionPathParams, Depends()],
92+
): ...
93+
94+
95+
@router.put(
96+
"/functions/{function_id}/groups/{group_id}",
97+
summary="Create or update a Function Group",
98+
response_model=Envelope[FunctionGroupAccessRightsGet],
99+
)
100+
async def create_or_update_function_group(
101+
_path: Annotated[FunctionGroupPathParams, Depends()],
102+
_body: FunctionGroupAccessRightsUpdate,
103+
): ...
104+
105+
106+
@router.delete(
107+
"/functions/{function_id}/groups/{group_id}",
108+
summary="Delete a Function Group",
109+
status_code=status.HTTP_204_NO_CONTENT,
110+
)
111+
async def delete_function_group(
112+
_path: Annotated[FunctionGroupPathParams, Depends()],
113+
): ...

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

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

66
from ..functions import (
77
Function,
8-
FunctionAccessRights,
98
FunctionBase,
109
FunctionClass,
1110
FunctionClassSpecificData,
@@ -49,6 +48,7 @@
4948
UnsupportedFunctionClassError,
5049
UnsupportedFunctionFunctionJobClassCombinationError,
5150
)
51+
from ..groups import GroupID
5252
from ..projects import ProjectID
5353
from ._base import InputSchema, OutputSchema
5454

@@ -114,11 +114,23 @@
114114
]
115115

116116

117+
class FunctionGroupAccessRightsGet(OutputSchema):
118+
read: bool
119+
write: bool
120+
execute: bool
121+
122+
123+
class FunctionGroupAccessRightsUpdate(InputSchema):
124+
read: bool
125+
write: bool
126+
execute: bool
127+
128+
117129
class RegisteredSolverFunctionGet(RegisteredSolverFunction, OutputSchema):
118130
uid: Annotated[FunctionID, Field(alias="uuid")]
119131
created_at: Annotated[datetime.datetime, Field(alias="creationDate")]
120132
modified_at: Annotated[datetime.datetime, Field(alias="lastChangeDate")]
121-
access_rights: FunctionAccessRights | None = None
133+
access_rights: dict[GroupID, FunctionGroupAccessRightsGet]
122134
thumbnail: HttpUrl | None = None
123135

124136

@@ -127,7 +139,7 @@ class RegisteredProjectFunctionGet(RegisteredProjectFunction, OutputSchema):
127139
project_id: Annotated[ProjectID, Field(alias="templateId")]
128140
created_at: Annotated[datetime.datetime, Field(alias="creationDate")]
129141
modified_at: Annotated[datetime.datetime, Field(alias="lastChangeDate")]
130-
access_rights: FunctionAccessRights | None = None
142+
access_rights: dict[GroupID, FunctionGroupAccessRightsGet]
131143
thumbnail: HttpUrl | None = None
132144

133145

packages/service-library/src/servicelib/fastapi/client_session.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,25 @@
22

33
import httpx
44
from fastapi import FastAPI
5+
from servicelib.fastapi.tracing import setup_httpx_client_tracing
6+
from settings_library.tracing import TracingSettings
57

68

79
def setup_client_session(
810
app: FastAPI,
911
*,
1012
default_timeout: datetime.timedelta = datetime.timedelta(seconds=20),
11-
max_keepalive_connections: int = 20
13+
max_keepalive_connections: int = 20,
14+
tracing_settings: TracingSettings | None,
1215
) -> None:
1316
async def on_startup() -> None:
1417
session = httpx.AsyncClient(
1518
transport=httpx.AsyncHTTPTransport(http2=True),
1619
limits=httpx.Limits(max_keepalive_connections=max_keepalive_connections),
1720
timeout=default_timeout.total_seconds(),
1821
)
22+
if tracing_settings:
23+
setup_httpx_client_tracing(session)
1924
app.state.aiohttp_client_session = session
2025

2126
async def on_shutdown() -> None:

0 commit comments

Comments
 (0)