Skip to content

Commit 6c52bae

Browse files
author
Andrei Neagu
committed
typing and placement refactor
1 parent c41f85b commit 6c52bae

File tree

6 files changed

+38
-21
lines changed

6 files changed

+38
-21
lines changed

packages/models-library/src/models_library/api_schemas_dynamic_sidecar/telemetry.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from abc import abstractmethod
2+
from enum import auto
23
from typing import Any, Final, Protocol
34

4-
from models_library.projects_nodes_io import NodeID
55
from pydantic import (
66
BaseModel,
77
ByteSize,
@@ -12,9 +12,19 @@
1212
validator,
1313
)
1414

15+
from ..projects_nodes_io import NodeID
16+
from ..utils.enums import StrAutoEnum
17+
1518
_EPSILON: Final[NonNegativeFloat] = 1e-16
1619

1720

21+
class MountPathCategory(StrAutoEnum):
22+
HOST = auto()
23+
STATES_VOLUMES = auto()
24+
INPUTS_VOLUMES = auto()
25+
OUTPUTS_VOLUMES = auto()
26+
27+
1828
class SDiskUsageProtocol(Protocol):
1929
@property
2030
@abstractmethod
@@ -104,4 +114,4 @@ def __hash__(self):
104114

105115
class ServiceDiskUsage(BaseModel):
106116
node_id: NodeID
107-
usage: dict[str, DiskUsage]
117+
usage: dict[MountPathCategory, DiskUsage]

services/dynamic-sidecar/src/simcore_service_dynamic_sidecar/modules/notifications/_notifications_system_monitor.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
from fastapi import FastAPI
2-
from models_library.api_schemas_dynamic_sidecar.telemetry import DiskUsage
2+
from models_library.api_schemas_dynamic_sidecar.telemetry import (
3+
DiskUsage,
4+
MountPathCategory,
5+
)
36
from models_library.projects_nodes_io import NodeID
47
from models_library.users import UserID
58

69
from ._notifier import Notifier
710

811

912
async def publish_disk_usage(
10-
app: FastAPI, *, user_id: UserID, node_id: NodeID, usage: dict[str, DiskUsage]
13+
app: FastAPI,
14+
*,
15+
user_id: UserID,
16+
node_id: NodeID,
17+
usage: dict[MountPathCategory, DiskUsage]
1118
) -> None:
1219
notifier: Notifier = Notifier.get_from_app_state(app)
1320
await notifier.notify_service_disk_usage(

services/dynamic-sidecar/src/simcore_service_dynamic_sidecar/modules/notifications/_notifier.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
)
1717
from models_library.api_schemas_dynamic_sidecar.telemetry import (
1818
DiskUsage,
19+
MountPathCategory,
1920
ServiceDiskUsage,
2021
)
2122
from models_library.api_schemas_webserver.socketio import SocketIORoomStr
@@ -33,7 +34,10 @@ def __init__(self, sio_manager: socketio.AsyncAioPikaManager):
3334
self._sio_manager = sio_manager
3435

3536
async def notify_service_disk_usage(
36-
self, user_id: UserID, node_id: NodeID, usage: dict[str, DiskUsage]
37+
self,
38+
user_id: UserID,
39+
node_id: NodeID,
40+
usage: dict[MountPathCategory, DiskUsage],
3741
) -> None:
3842
await self._sio_manager.emit(
3943
SOCKET_IO_SERVICE_DISK_USAGE_EVENT,

services/dynamic-sidecar/src/simcore_service_dynamic_sidecar/modules/system_monitor/_disk_usage.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@
22
import logging
33
from dataclasses import dataclass, field
44
from datetime import timedelta
5-
from enum import auto
65
from functools import cached_property
76
from pathlib import Path
87
from typing import Final
98

109
import psutil
1110
from fastapi import FastAPI
12-
from models_library.api_schemas_dynamic_sidecar.telemetry import DiskUsage
11+
from models_library.api_schemas_dynamic_sidecar.telemetry import (
12+
DiskUsage,
13+
MountPathCategory,
14+
)
1315
from models_library.projects_nodes_io import NodeID
1416
from models_library.users import UserID
15-
from models_library.utils.enums import StrAutoEnum
1617
from servicelib.background_task import start_periodic_task, stop_periodic_task
1718
from servicelib.logging_utils import log_context
1819
from servicelib.utils import logged_gather
@@ -27,13 +28,6 @@
2728
_logger = logging.getLogger(__name__)
2829

2930

30-
class MountPathCategory(StrAutoEnum):
31-
HOST = auto()
32-
STATES_VOLUMES = auto()
33-
INPUTS_VOLUMES = auto()
34-
OUTPUTS_VOLUMES = auto()
35-
36-
3731
_SUPPORTED_ITEMS: Final[set[str]] = {
3832
MountPathCategory.HOST,
3933
MountPathCategory.STATES_VOLUMES,
@@ -74,7 +68,7 @@ class DiskUsageMonitor:
7468
_monitor_task: asyncio.Task | None = None
7569

7670
# tracked disk usage
77-
_last_usage: dict[str, DiskUsage] = field(default_factory=dict)
71+
_last_usage: dict[MountPathCategory, DiskUsage] = field(default_factory=dict)
7872
_usage_overwrite: dict[str, DiskUsage] = field(
7973
default_factory=dict,
8074
metadata={
@@ -141,7 +135,7 @@ def _get_grouped_usage_to_folder_names(
141135
usage_to_folder_names[disk_usage].add(folder_name)
142136
return usage_to_folder_names
143137

144-
async def _publish_disk_usage(self, usage: dict[str, DiskUsage]):
138+
async def _publish_disk_usage(self, usage: dict[MountPathCategory, DiskUsage]):
145139
await publish_disk_usage(
146140
self.app, user_id=self.user_id, node_id=self.node_id, usage=usage
147141
)
@@ -158,7 +152,7 @@ async def _monitor(self) -> None:
158152
)
159153

160154
# compute new version of DiskUsage for FE, only 1 label for each unique disk usage entry
161-
usage: dict[str, DiskUsage] = {}
155+
usage: dict[MountPathCategory, DiskUsage] = {}
162156

163157
normalized_paths = self._normalized_monitored_paths
164158

services/dynamic-sidecar/tests/unit/test_modules_notifier.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
)
2626
from models_library.api_schemas_dynamic_sidecar.telemetry import (
2727
DiskUsage,
28+
MountPathCategory,
2829
ServiceDiskUsage,
2930
)
3031
from models_library.api_schemas_webserver.socketio import SocketIORoomStr
@@ -45,7 +46,6 @@
4546
)
4647
from simcore_service_dynamic_sidecar.modules.system_monitor._disk_usage import (
4748
DiskUsageMonitor,
48-
MountPathCategory,
4949
)
5050
from socketio import AsyncServer
5151
from tenacity import AsyncRetrying

services/dynamic-sidecar/tests/unit/test_modules_system_monitor__disk_usage.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
import pytest
1111
from faker import Faker
1212
from fastapi import FastAPI
13-
from models_library.api_schemas_dynamic_sidecar.telemetry import DiskUsage
13+
from models_library.api_schemas_dynamic_sidecar.telemetry import (
14+
DiskUsage,
15+
MountPathCategory,
16+
)
1417
from models_library.projects_nodes_io import NodeID
1518
from models_library.services_types import RunID
1619
from models_library.users import UserID
@@ -21,7 +24,6 @@
2124
from simcore_service_dynamic_sidecar.modules.mounted_fs import MountedVolumes
2225
from simcore_service_dynamic_sidecar.modules.system_monitor._disk_usage import (
2326
DiskUsageMonitor,
24-
MountPathCategory,
2527
_get_monitored_paths,
2628
get_usage,
2729
)

0 commit comments

Comments
 (0)