Skip to content

Commit 5f20287

Browse files
authored
🎨 dynamic service status is now propagated to the project_id and not the node_id (#8175)
1 parent 68679ab commit 5f20287

File tree

4 files changed

+25
-19
lines changed

4 files changed

+25
-19
lines changed

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/notifier/_notifier.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
)
1212
from models_library.api_schemas_webserver.projects_nodes import NodeGet, NodeGetIdle
1313
from models_library.api_schemas_webserver.socketio import SocketIORoomStr
14-
from models_library.users import UserID
14+
from models_library.projects import ProjectID
1515
from servicelib.fastapi.app_state import SingletonInAppStateMixin
1616
from servicelib.services_utils import get_status_as_dict
1717

@@ -23,20 +23,22 @@ def __init__(self, sio_manager: socketio.AsyncAioPikaManager):
2323
self._sio_manager = sio_manager
2424

2525
async def notify_service_status(
26-
self, user_id: UserID, status: NodeGet | DynamicServiceGet | NodeGetIdle
26+
self, project_id: ProjectID, status: NodeGet | DynamicServiceGet | NodeGetIdle
2727
) -> None:
2828
await self._sio_manager.emit(
2929
SOCKET_IO_SERVICE_STATUS_EVENT,
3030
data=jsonable_encoder(get_status_as_dict(status)),
31-
room=SocketIORoomStr.from_user_id(user_id),
31+
room=SocketIORoomStr.from_project_id(project_id),
3232
)
3333

3434

3535
async def notify_service_status_change(
36-
app: FastAPI, user_id: UserID, status: NodeGet | DynamicServiceGet | NodeGetIdle
36+
app: FastAPI,
37+
project_id: ProjectID,
38+
status: NodeGet | DynamicServiceGet | NodeGetIdle,
3739
) -> None:
3840
notifier: Notifier = Notifier.get_from_app_state(app)
39-
await notifier.notify_service_status(user_id=user_id, status=status)
41+
await notifier.notify_service_status(project_id=project_id, status=status)
4042

4143

4244
async def lifespan(app: FastAPI) -> AsyncIterator[State]:

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/service_tracker/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from ._api import (
22
NORMAL_RATE_POLL_INTERVAL,
33
get_all_tracked_services,
4+
get_project_id_for_service,
45
get_tracked_service,
5-
get_user_id_for_service,
66
remove_tracked_service,
77
set_frontend_notified_for_service,
88
set_if_status_changed_for_service,
@@ -17,11 +17,11 @@
1717

1818
__all__: tuple[str, ...] = (
1919
"get_all_tracked_services",
20+
"get_project_id_for_service",
2021
"get_tracked_service",
21-
"get_user_id_for_service",
22-
"service_tracker_lifespan",
2322
"NORMAL_RATE_POLL_INTERVAL",
2423
"remove_tracked_service",
24+
"service_tracker_lifespan",
2525
"set_frontend_notified_for_service",
2626
"set_if_status_changed_for_service",
2727
"set_request_as_running",

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/service_tracker/_api.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@
1111
DynamicServiceStop,
1212
)
1313
from models_library.api_schemas_webserver.projects_nodes import NodeGet, NodeGetIdle
14+
from models_library.projects import ProjectID
1415
from models_library.projects_nodes_io import NodeID
1516
from models_library.services_enums import ServiceState
16-
from models_library.users import UserID
1717
from servicelib.deferred_tasks import TaskUID
1818

19-
from ._models import SchedulerServiceState, TrackedServiceModel, UserRequestedState
19+
from ._models import (
20+
SchedulerServiceState,
21+
TrackedServiceModel,
22+
UserRequestedState,
23+
)
2024
from ._setup import get_tracker
2125

2226
_logger = logging.getLogger(__name__)
@@ -242,7 +246,7 @@ async def get_all_tracked_services(app: FastAPI) -> dict[NodeID, TrackedServiceM
242246
return await get_tracker(app).all()
243247

244248

245-
async def get_user_id_for_service(app: FastAPI, node_id: NodeID) -> UserID | None:
246-
"""returns user_id for the service"""
249+
async def get_project_id_for_service(app: FastAPI, node_id: NodeID) -> ProjectID | None:
250+
"""returns project_id for the service"""
247251
model: TrackedServiceModel | None = await get_tracker(app).load(node_id)
248-
return model.user_id if model else None
252+
return model.project_id if model else None

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/status_monitor/_deferred_get_status.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
RunningDynamicServiceDetails,
88
)
99
from models_library.api_schemas_webserver.projects_nodes import NodeGet, NodeGetIdle
10+
from models_library.projects import ProjectID
1011
from models_library.projects_nodes_io import NodeID
11-
from models_library.users import UserID
1212
from servicelib.deferred_tasks import BaseDeferredHandler, TaskUID
1313
from servicelib.deferred_tasks._base_deferred_handler import DeferredContext
1414

@@ -69,15 +69,15 @@ async def on_result(
6969
if await service_tracker.should_notify_frontend_for_service(
7070
app, node_id, status_changed=status_changed
7171
):
72-
user_id: UserID | None = await service_tracker.get_user_id_for_service(
73-
app, node_id
72+
project_id: ProjectID | None = (
73+
await service_tracker.get_project_id_for_service(app, node_id)
7474
)
75-
if user_id:
76-
await notify_service_status_change(app, user_id, result)
75+
if project_id:
76+
await notify_service_status_change(app, project_id, result)
7777
await service_tracker.set_frontend_notified_for_service(app, node_id)
7878
else:
7979
_logger.info(
80-
"Did not find a user for '%s', skipping status delivery of: %s",
80+
"Did not find a project for '%s', skipping status delivery of: %s",
8181
node_id,
8282
result,
8383
)

0 commit comments

Comments
 (0)