Skip to content

Commit 823b31f

Browse files
continue fixing
1 parent 6e9590b commit 823b31f

File tree

5 files changed

+37
-50
lines changed

5 files changed

+37
-50
lines changed

services/director-v2/src/simcore_service_director_v2/modules/db/repositories/projects.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import sqlalchemy as sa
44
from aiopg.sa.result import RowProxy
55
from models_library.projects import ProjectAtDB, ProjectID
6-
from models_library.projects_nodes_io import NodeID
7-
from simcore_postgres_database.utils_projects_nodes import ProjectNodesRepo
86

97
from ....core.errors import ProjectNotFoundError
108
from ..tables import projects
@@ -24,18 +22,3 @@ async def get_project(self, project_id: ProjectID) -> ProjectAtDB:
2422
if not row:
2523
raise ProjectNotFoundError(project_id=project_id)
2624
return ProjectAtDB.model_validate(row)
27-
28-
async def is_node_present_in_workbench(
29-
self, project_id: ProjectID, node_uuid: NodeID
30-
) -> bool:
31-
try:
32-
project = await self.get_project(project_id)
33-
return f"{node_uuid}" in project.workbench
34-
except ProjectNotFoundError:
35-
return False
36-
37-
async def get_project_id_from_node(self, node_id: NodeID) -> ProjectID:
38-
async with self.db_engine.acquire() as conn:
39-
return await ProjectNodesRepo.get_project_id_from_node_id(
40-
conn, node_id=node_id
41-
)

services/director-v2/src/simcore_service_director_v2/modules/db/repositories/projects_nodes.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import sqlalchemy as sa
44
from models_library.projects import NodesDict, ProjectID
5-
from models_library.projects_nodes import Node
5+
from models_library.projects_nodes import Node, NodeID
66
from simcore_postgres_database.utils_projects_nodes import ProjectNode
77

88
from ..tables import projects_nodes
@@ -12,13 +12,13 @@
1212

1313

1414
class ProjectsNodesRepository(BaseRepository):
15-
async def get_nodes(self, project_uuid: ProjectID) -> NodesDict:
15+
async def get_nodes(self, project_id: ProjectID) -> NodesDict:
1616
nodes_dict = {}
1717
async with self.db_engine.acquire() as conn:
1818
rows = await (
1919
await conn.execute(
2020
sa.select(projects_nodes).where(
21-
projects_nodes.c.project_uuid == f"{project_uuid}"
21+
projects_nodes.c.project_uuid == f"{project_id}"
2222
)
2323
)
2424
).fetchall()
@@ -39,17 +39,14 @@ async def get_nodes(self, project_uuid: ProjectID) -> NodesDict:
3939

4040
return nodes_dict
4141

42-
# async def is_node_present_in_workbench(
43-
# self, project_id: ProjectID, node_uuid: NodeID
44-
# ) -> bool:
45-
# try:
46-
# project = await self.get_project(project_id)
47-
# return f"{node_uuid}" in project.workbench
48-
# except ProjectNotFoundError:
49-
# return False
50-
51-
# async def get_project_id_from_node(self, node_id: NodeID) -> ProjectID:
52-
# async with self.db_engine.acquire() as conn:
53-
# return await ProjectNodesRepo.get_project_id_from_node_id(
54-
# conn, node_id=node_id
55-
# )
42+
async def exists_node(self, project_id: ProjectID, node_id: NodeID) -> bool:
43+
async with self.db_engine.acquire() as conn:
44+
result = await (
45+
await conn.execute(
46+
sa.select(projects_nodes).where(
47+
(projects_nodes.c.project_uuid == f"{project_id}")
48+
& (projects_nodes.c.node_id == f"{node_id}")
49+
)
50+
)
51+
).fetchone()
52+
return result is not None

services/director-v2/src/simcore_service_director_v2/modules/dynamic_sidecar/scheduler/_core/_events_utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@
6060
track_duration,
6161
)
6262
from .....utils.db import get_repository
63-
from ....db.repositories.projects import ProjectsRepository
6463
from ....db.repositories.projects_networks import ProjectsNetworksRepository
64+
from ....db.repositories.projects_nodes import ProjectsNodesRepository
6565
from ....db.repositories.user_preferences_frontend import (
6666
UserPreferencesFrontendRepository,
6767
)
@@ -321,12 +321,12 @@ async def attempt_pod_removal_and_data_saving(
321321
# to try and save the data, nodeports will raise errors
322322
# and sidecar will hang
323323

324-
projects_repository: ProjectsRepository = get_repository(
325-
app, ProjectsRepository
324+
projects_nodes_repo: ProjectsNodesRepository = get_repository(
325+
app, ProjectsNodesRepository
326326
)
327327

328-
can_really_save = await projects_repository.is_node_present_in_workbench(
329-
project_id=scheduler_data.project_id, node_uuid=scheduler_data.node_uuid
328+
can_really_save = await projects_nodes_repo.exists_node(
329+
project_id=scheduler_data.project_id, node_id=scheduler_data.node_uuid
330330
)
331331

332332
if can_really_save and scheduler_data.dynamic_sidecar.were_containers_created:

services/director-v2/tests/unit/with_dbs/test_cli.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ def test_project_save_state_retry_3_times_and_fails(
220220
mock_save_service_state_as_failing: None,
221221
cli_runner: CliRunner,
222222
project_at_db: ProjectAtDB,
223+
fake_workbench_without_outputs: dict[str, Any],
223224
capsys: pytest.CaptureFixture,
224225
):
225226
with capsys.disabled() as _disabled:
@@ -231,7 +232,7 @@ def test_project_save_state_retry_3_times_and_fails(
231232
print(result.stdout)
232233
assert result.exit_code == 1, _format_cli_error(result)
233234
assert "The following nodes failed to save:" in result.stdout
234-
for node_uuid in project_at_db.workbench:
235+
for node_uuid in fake_workbench_without_outputs:
235236
assert (
236237
result.stdout.count(f"Attempting to save {node_uuid}")
237238
== DEFAULT_NODE_SAVE_ATTEMPTS

services/director-v2/tests/unit/with_dbs/test_modules_db_repositories_projects.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
from simcore_service_director_v2.modules.db.repositories.projects import (
1717
ProjectsRepository,
1818
)
19+
from simcore_service_director_v2.modules.db.repositories.projects_nodes import (
20+
ProjectsNodesRepository,
21+
)
1922
from simcore_service_director_v2.utils.db import get_repository
2023

2124
pytest_simcore_core_services_selection = [
@@ -79,32 +82,35 @@ async def project(
7982

8083

8184
async def test_is_node_present_in_workbench(
82-
initialized_app: FastAPI, project: ProjectAtDB, faker: Faker
85+
initialized_app: FastAPI,
86+
project: ProjectAtDB,
87+
workbench: dict[str, Any],
88+
faker: Faker,
8389
):
84-
project_repository = get_repository(initialized_app, ProjectsRepository)
90+
project_nodes_repo = get_repository(initialized_app, ProjectsNodesRepository)
8591

86-
for node_uuid in project.workbench:
92+
for node_uuid in workbench:
8793
assert (
88-
await project_repository.is_node_present_in_workbench(
89-
project_id=project.uuid, node_uuid=NodeID(node_uuid)
94+
await project_nodes_repo.exists_node(
95+
project_id=project.uuid, node_id=NodeID(node_uuid)
9096
)
9197
is True
9298
)
9399

94100
not_existing_node = faker.uuid4(cast_to=None)
95-
assert not_existing_node not in project.workbench
101+
assert not_existing_node not in workbench
96102
assert (
97-
await project_repository.is_node_present_in_workbench(
98-
project_id=project.uuid, node_uuid=not_existing_node
103+
await project_nodes_repo.exists_node(
104+
project_id=project.uuid, node_id=not_existing_node
99105
)
100106
is False
101107
)
102108

103109
not_existing_project = faker.uuid4(cast_to=None)
104110
assert not_existing_project != project.uuid
105111
assert (
106-
await project_repository.is_node_present_in_workbench(
107-
project_id=not_existing_project, node_uuid=not_existing_node
112+
await project_nodes_repo.exists_node(
113+
project_id=not_existing_project, node_id=not_existing_node
108114
)
109115
is False
110116
)

0 commit comments

Comments
 (0)