Skip to content

Commit 7839b52

Browse files
author
Andrei Neagu
committed
added redirect via rpc
1 parent 0b4577b commit 7839b52

File tree

8 files changed

+27
-58
lines changed

8 files changed

+27
-58
lines changed

services/web/server/src/simcore_service_webserver/director_v2/_core_dynamic_services.py

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
import logging
88

99
from aiohttp import web
10-
from models_library.api_schemas_directorv2.dynamic_services import DynamicServiceGet
1110
from models_library.projects import ProjectID
1211
from models_library.services import ServicePortKey
13-
from pydantic import BaseModel, NonNegativeInt, TypeAdapter
14-
from pydantic.types import PositiveInt
12+
from pydantic import NonNegativeInt
1513
from servicelib.logging_utils import log_decorator
1614
from yarl import URL
1715

@@ -22,36 +20,6 @@
2220
_log = logging.getLogger(__name__)
2321

2422

25-
class _Params(BaseModel):
26-
user_id: PositiveInt | None = None
27-
project_id: str | None = None
28-
29-
30-
async def list_dynamic_services(
31-
app: web.Application,
32-
user_id: PositiveInt | None = None,
33-
project_id: str | None = None,
34-
) -> list[DynamicServiceGet]:
35-
params = _Params(user_id=user_id, project_id=project_id)
36-
params_dict = params.model_dump(exclude_none=True)
37-
settings: DirectorV2Settings = get_plugin_settings(app)
38-
if params_dict: # Update query doesnt work with no params to unwrap
39-
backend_url = (settings.base_url / "dynamic_services").update_query(
40-
**params_dict
41-
)
42-
else:
43-
backend_url = settings.base_url / "dynamic_services"
44-
45-
services = await request_director_v2(
46-
app, "GET", backend_url, expected_status=web.HTTPOk
47-
)
48-
49-
if services is None:
50-
services = []
51-
assert isinstance(services, list) # nosec
52-
return TypeAdapter(list[DynamicServiceGet]).validate_python(services)
53-
54-
5523
# NOTE: ANE https://github.com/ITISFoundation/osparc-simcore/issues/3191
5624
@log_decorator(logger=_log)
5725
async def retrieve(

services/web/server/src/simcore_service_webserver/director_v2/api.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
)
2828
from ._core_dynamic_services import (
2929
get_project_inactivity,
30-
list_dynamic_services,
3130
request_retrieve_dyn_service,
3231
restart_dynamic_service,
3332
retrieve,
@@ -59,7 +58,6 @@
5958
"is_healthy",
6059
"is_pipeline_running",
6160
"list_clusters",
62-
"list_dynamic_services",
6361
"ping_cluster",
6462
"ping_specific_cluster",
6563
"request_retrieve_dyn_service",

services/web/server/src/simcore_service_webserver/dynamic_scheduler/api.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,30 @@
1818
from models_library.projects import ProjectID
1919
from models_library.projects_nodes_io import NodeID
2020
from models_library.rabbitmq_messages import ProgressRabbitMessageProject, ProgressType
21+
from models_library.users import UserID
2122
from pydantic.types import PositiveInt
2223
from servicelib.progress_bar import ProgressBarData
2324
from servicelib.rabbitmq import RabbitMQClient, RPCServerError
2425
from servicelib.rabbitmq.rpc_interfaces.dynamic_scheduler import services
2526
from servicelib.utils import logged_gather
2627

27-
from ..director_v2.api import list_dynamic_services
2828
from ..rabbitmq import get_rabbitmq_client, get_rabbitmq_rpc_client
2929
from .settings import DynamicSchedulerSettings, get_plugin_settings
3030

3131
_logger = logging.getLogger(__name__)
3232

3333

34+
async def list_dynamic_services(
35+
app: web.Application,
36+
*,
37+
user_id: UserID | None = None,
38+
project_id: ProjectID | None = None,
39+
) -> list[DynamicServiceGet]:
40+
return await services.list_tracked_dynamic_services(
41+
get_rabbitmq_rpc_client(app), user_id=user_id, project_id=project_id
42+
)
43+
44+
3445
async def get_dynamic_service(
3546
app: web.Application, *, node_id: NodeID
3647
) -> NodeGetIdle | NodeGetUnknown | DynamicServiceGet | NodeGet:

services/web/server/src/simcore_service_webserver/garbage_collector/_core_orphans.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from servicelib.utils import logged_gather
1414
from simcore_postgres_database.models.users import UserRole
1515

16-
from ..director_v2 import api as director_v2_api
1716
from ..dynamic_scheduler import api as dynamic_scheduler_api
1817
from ..projects.api import has_user_project_access_rights
1918
from ..projects.projects_api import (
@@ -90,7 +89,7 @@ async def remove_orphaned_services(
9089
# in between and the GC would remove services that actually should be running.
9190

9291
with log_catch(_logger, reraise=False):
93-
running_services = await director_v2_api.list_dynamic_services(app)
92+
running_services = await dynamic_scheduler_api.list_dynamic_services(app)
9493
if not running_services:
9594
# nothing to do
9695
return

services/web/server/src/simcore_service_webserver/projects/_trash_api.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from servicelib.utils import fire_and_forget_task
1313

1414
from ..director_v2 import api as director_v2_api
15+
from ..dynamic_scheduler import api as dynamic_scheduler_api
1516
from . import projects_api
1617
from ._access_rights_api import check_user_project_permission
1718
from .exceptions import ProjectRunningConflictError
@@ -56,8 +57,8 @@ async def _is_project_running(
5657
app, user_id=user_id, project_id=project_id
5758
)
5859
) or bool(
59-
await director_v2_api.list_dynamic_services(
60-
app, user_id=user_id, project_id=f"{project_id}"
60+
await dynamic_scheduler_api.list_dynamic_services(
61+
app, user_id=user_id, project_id=project_id
6162
)
6263
)
6364

services/web/server/src/simcore_service_webserver/projects/projects_api.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -609,8 +609,8 @@ async def _start_dynamic_service(
609609
project_settings.PROJECTS_MAX_NUM_RUNNING_DYNAMIC_NODES
610610
),
611611
):
612-
project_running_nodes = await director_v2_api.list_dynamic_services(
613-
request.app, user_id, f"{project_uuid}"
612+
project_running_nodes = await dynamic_scheduler_api.list_dynamic_services(
613+
request.app, user_id=user_id, project_id=project_uuid
614614
)
615615
_nodes_api.check_num_service_per_projects_limit(
616616
app=request.app,
@@ -903,8 +903,10 @@ async def delete_project_node(
903903
permission="write",
904904
)
905905

906-
list_running_dynamic_services = await director_v2_api.list_dynamic_services(
907-
request.app, project_id=f"{project_uuid}", user_id=user_id
906+
list_running_dynamic_services = await dynamic_scheduler_api.list_dynamic_services(
907+
request.app,
908+
user_id=user_id,
909+
project_id=project_uuid,
908910
)
909911

910912
fire_and_forget_task(
@@ -1628,9 +1630,9 @@ async def run_project_dynamic_services(
16281630
# first get the services if they already exist
16291631
project_settings: ProjectsSettings = get_plugin_settings(request.app)
16301632
running_services_uuids: list[NodeIDStr] = [
1631-
NodeIDStr(f"{d.node_uuid}")
1632-
for d in await director_v2_api.list_dynamic_services(
1633-
request.app, user_id, project["uuid"]
1633+
f"{d.node_uuid}"
1634+
for d in await dynamic_scheduler_api.list_dynamic_services(
1635+
request.app, user_id=user_id, project_id=ProjectID(project["uuid"])
16341636
)
16351637
]
16361638

services/web/server/tests/unit/isolated/test_garbage_collector_core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ async def mock_is_node_id_present_in_any_project_workbench(
9191
@pytest.fixture
9292
async def mock_list_dynamic_services(mocker: MockerFixture) -> mock.AsyncMock:
9393
return mocker.patch(
94-
f"{MODULE_GC_CORE_ORPHANS}.director_v2_api.list_dynamic_services",
94+
f"{MODULE_GC_CORE_ORPHANS}.dynamic_scheduler_api.list_dynamic_services",
9595
autospec=True,
9696
return_value=[],
9797
)

services/web/server/tests/unit/with_dbs/01/test_director_v2_handlers.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
from pytest_simcore.services_api_mocks_for_aiohttp_clients import AioResponsesMock
1717
from servicelib.aiohttp import status
1818
from simcore_service_webserver.db.models import UserRole
19-
from simcore_service_webserver.director_v2 import api
2019

2120

2221
@pytest.fixture
@@ -115,12 +114,3 @@ async def test_stop_computation(
115114
if user_role == UserRole.GUEST
116115
else expected.no_content,
117116
)
118-
119-
120-
async def test_regression_get_dynamic_services_empty_params(
121-
director_v2_service_mock: AioResponsesMock,
122-
client: TestClient,
123-
):
124-
assert client.app
125-
list_of_services = await api.list_dynamic_services(client.app)
126-
assert list_of_services == []

0 commit comments

Comments
 (0)