From 70e26e5a101b2e2dd324b3dd92fb5a0b2a671375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Botond=20D=C3=A9nes?= Date: Thu, 7 Sep 2023 11:46:36 -0400 Subject: [PATCH] test/pylib: add REST methods to get node exe and workdir paths --- test/pylib/manager_client.py | 6 ++++++ test/pylib/scylla_cluster.py | 20 ++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/test/pylib/manager_client.py b/test/pylib/manager_client.py index 877c62f489..34e59afe4e 100644 --- a/test/pylib/manager_client.py +++ b/test/pylib/manager_client.py @@ -310,3 +310,9 @@ class ManagerClient(): logger.debug("ManagerClient getting log filename for %s", server_id) log_filename = await self.client.get_text(f"/cluster/server/{server_id}/get_log_filename") return ScyllaLogFile(self.thread_pool, log_filename) + + async def server_get_workdir(self, server_id: ServerNum) -> str: + return await self.client.get_text(f"/cluster/server/{server_id}/workdir") + + async def server_get_exe(self, server_id: ServerNum) -> str: + return await self.client.get_text(f"/cluster/server/{server_id}/exe") diff --git a/test/pylib/scylla_cluster.py b/test/pylib/scylla_cluster.py index d286e348d1..7bd6ee9112 100644 --- a/test/pylib/scylla_cluster.py +++ b/test/pylib/scylla_cluster.py @@ -1069,6 +1069,8 @@ class ScyllaClusterManager: add_put('/cluster/server/{server_id}/update_config', self._server_update_config) add_put('/cluster/server/{server_id}/change_ip', self._server_change_ip) add_get('/cluster/server/{server_id}/get_log_filename', self._server_get_log_filename) + add_get('/cluster/server/{server_id}/workdir', self._server_get_workdir) + add_get('/cluster/server/{server_id}/exe', self._server_get_exe) async def _manager_up(self, _request) -> aiohttp.web.Response: return aiohttp.web.Response(text=f"{self.is_running}") @@ -1279,13 +1281,27 @@ class ScyllaClusterManager: ip_addr = await self.cluster.change_ip(server_id) return aiohttp.web.json_response({"ip_addr": ip_addr}) - async def _server_get_log_filename(self, request: aiohttp.web.Request) -> aiohttp.web.Response: + async def _server_get_attribute(self, request: aiohttp.web.Request, attribute: str) -> aiohttp.web.Response: + """Generic request handler which gets a particular attribute of a ScyllaServer instance + + To be used to implement concrete handlers, not for direct use. + """ assert self.cluster server_id = ServerNum(int(request.match_info["server_id"])) server = self.cluster.servers[server_id] if not server: return aiohttp.web.Response(status=404, text=f"Server {server_id} unknown") - return aiohttp.web.Response(text=f"{server.log_filename}") + return aiohttp.web.Response(text=f"{getattr(server, attribute)}") + + async def _server_get_log_filename(self, request: aiohttp.web.Request) -> aiohttp.web.Response: + return await self._server_get_attribute(request, "log_filename") + + async def _server_get_workdir(self, request: aiohttp.web.Request) -> aiohttp.web.Response: + return await self._server_get_attribute(request, "workdir") + + async def _server_get_exe(self, request: aiohttp.web.Request) -> aiohttp.web.Response: + return await self._server_get_attribute(request, "exe") + @asynccontextmanager