Skip to content

Commit e1b0492

Browse files
[Refactor][Core/Dashboard] Make datacenter.py a private implementation for NodeHead (#51847)
Signed-off-by: Chi-Sheng Liu <chishengliu@chishengliu.com>
1 parent 8f5c4c3 commit e1b0492

File tree

4 files changed

+28
-30
lines changed

4 files changed

+28
-30
lines changed

python/ray/dashboard/head.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from ray._raylet import GcsClient
1616
from ray.dashboard.consts import DASHBOARD_METRIC_PORT
1717
from ray.dashboard.dashboard_metrics import DashboardPrometheusMetrics
18-
from ray.dashboard.datacenter import DataOrganizer
1918
from ray.dashboard.utils import (
2019
DashboardHeadModule,
2120
DashboardHeadModuleConfig,
@@ -141,7 +140,6 @@ def __init__(
141140
self.gcs_error_subscriber = None
142141
self.gcs_log_subscriber = None
143142
self.ip = node_ip_address
144-
DataOrganizer.head_node_ip = self.ip
145143

146144
if self.minimal:
147145
self.server, self.grpc_port = None, None
@@ -445,8 +443,6 @@ async def _async_notify():
445443
concurrent_tasks = [
446444
self._gcs_check_alive(),
447445
_async_notify(),
448-
DataOrganizer.purge(),
449-
DataOrganizer.organize(self._executor),
450446
]
451447
for m in dashboard_head_modules:
452448
concurrent_tasks.append(m.run(self.server))

python/ray/dashboard/datacenter.py renamed to python/ray/dashboard/modules/node/datacenter.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ class DataSource:
3939

4040

4141
class DataOrganizer:
42-
head_node_ip = None
43-
4442
@staticmethod
4543
@async_loop_forever(dashboard_consts.RAY_DASHBOARD_STATS_PURGING_INTERVAL)
4644
async def purge():

python/ray/dashboard/modules/node/node_head.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
DASHBOARD_AGENT_ADDR_NODE_ID_PREFIX,
3636
DASHBOARD_AGENT_ADDR_IP_PREFIX,
3737
)
38-
from ray.dashboard.datacenter import DataOrganizer, DataSource
38+
from ray.dashboard.modules.node.datacenter import DataOrganizer, DataSource
3939
from ray.dashboard.modules.node import node_consts
4040
from ray.dashboard.modules.node import actor_consts
4141
from ray.dashboard.utils import async_loop_forever
@@ -710,13 +710,40 @@ async def get_actor(self, req) -> aiohttp.web.Response:
710710
detail=actors[actor_id],
711711
)
712712

713+
@routes.get("/test/dump")
714+
async def dump(self, req) -> aiohttp.web.Response:
715+
"""
716+
Dump all data from datacenter. This is used for testing purpose only.
717+
"""
718+
key = req.query.get("key")
719+
if key is None:
720+
all_data = {
721+
k: dict(v)
722+
for k, v in DataSource.__dict__.items()
723+
if not k.startswith("_")
724+
}
725+
return dashboard_optional_utils.rest_response(
726+
status_code=dashboard_utils.HTTPStatusCode.OK,
727+
message="Fetch all data from datacenter success.",
728+
**all_data,
729+
)
730+
else:
731+
data = dict(DataSource.__dict__.get(key))
732+
return dashboard_optional_utils.rest_response(
733+
status_code=dashboard_utils.HTTPStatusCode.OK,
734+
message=f"Fetch {key} from datacenter success.",
735+
**{key: data},
736+
)
737+
713738
async def run(self, server):
714739
await asyncio.gather(
715740
self._update_nodes(),
716741
self._update_node_stats(),
717742
self._update_node_physical_stats(),
718743
self._update_actors(),
719744
self._cleanup_actors(),
745+
DataOrganizer.purge(),
746+
DataOrganizer.organize(self._node_executor),
720747
)
721748

722749
@staticmethod

python/ray/dashboard/modules/tests/test_head.py

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import ray.dashboard.optional_utils as dashboard_optional_utils
99
import ray.dashboard.utils as dashboard_utils
1010
from ray._private.ray_constants import env_bool
11-
from ray.dashboard.datacenter import DataSource
1211

1312
logger = logging.getLogger(__name__)
1413
routes = dashboard_optional_utils.DashboardHeadRouteTable
@@ -41,28 +40,6 @@ async def route_delete(self, req) -> aiohttp.web.Response:
4140
async def route_view(self, req) -> aiohttp.web.Response:
4241
pass
4342

44-
@routes.get("/test/dump")
45-
async def dump(self, req) -> aiohttp.web.Response:
46-
key = req.query.get("key")
47-
if key is None:
48-
all_data = {
49-
k: dict(v)
50-
for k, v in DataSource.__dict__.items()
51-
if not k.startswith("_")
52-
}
53-
return dashboard_optional_utils.rest_response(
54-
status_code=dashboard_utils.HTTPStatusCode.OK,
55-
message="Fetch all data from datacenter success.",
56-
**all_data,
57-
)
58-
else:
59-
data = dict(DataSource.__dict__.get(key))
60-
return dashboard_optional_utils.rest_response(
61-
status_code=dashboard_utils.HTTPStatusCode.OK,
62-
message=f"Fetch {key} from datacenter success.",
63-
**{key: data},
64-
)
65-
6643
@routes.get("/test/http_get")
6744
async def get_url(self, req) -> aiohttp.web.Response:
6845
url = req.query.get("url")

0 commit comments

Comments
 (0)