test.py: manager: add server_get_returncode() method
The method return None if Scylla process is still running or returncode. If there is no Scylla process launched then raise NoSuchProcess exception.
This commit is contained in:
@@ -32,6 +32,10 @@ import asyncio
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class NoSuchProcess(Exception):
|
||||
...
|
||||
|
||||
|
||||
class ManagerClient():
|
||||
"""Helper Manager API client
|
||||
Args:
|
||||
@@ -626,3 +630,12 @@ class ManagerClient():
|
||||
|
||||
async def server_get_exe(self, server_id: ServerNum) -> str:
|
||||
return await self.client.get_json(f"/cluster/server/{server_id}/exe")
|
||||
|
||||
async def server_get_returncode(self, server_id: ServerNum) -> int | None:
|
||||
match await self.client.get_json(f"/cluster/server/{server_id}/returncode"):
|
||||
case "NO_SUCH_PROCESS":
|
||||
raise NoSuchProcess(f"No process found for {server_id=}")
|
||||
case "RUNNING":
|
||||
return None
|
||||
case returncode:
|
||||
return int(returncode)
|
||||
|
||||
@@ -1482,6 +1482,7 @@ class ScyllaClusterManager:
|
||||
add_put('/cluster/server/{server_id}/wipe_sstables', self._cluster_server_wipe_sstables)
|
||||
add_get('/cluster/server/{server_id}/sstables_disk_usage', self._server_get_sstables_disk_usage)
|
||||
add_get('/cluster/server/{server_id}/process_status', self._server_get_process_status)
|
||||
add_get('/cluster/server/{server_id}/returncode', self._server_get_returncode)
|
||||
|
||||
async def _manager_up(self, _request) -> bool:
|
||||
return self.is_running
|
||||
@@ -1821,6 +1822,14 @@ class ScyllaClusterManager:
|
||||
async def _server_get_exe(self, request: aiohttp.web.Request) -> str:
|
||||
return str(await self._server_get_attribute(request, "exe"))
|
||||
|
||||
async def _server_get_returncode(self, request: aiohttp.web.Request) -> str:
|
||||
if cmd := await self._server_get_attribute(request=request, attribute="cmd"):
|
||||
returncode = cmd.returncode
|
||||
if returncode is None:
|
||||
return "RUNNING"
|
||||
return cmd.returncode
|
||||
return "NO_SUCH_PROCESS"
|
||||
|
||||
async def _cluster_server_wipe_sstables(self, request: aiohttp.web.Request):
|
||||
data = await request.json()
|
||||
server_id = ServerNum(int(request.match_info["server_id"]))
|
||||
|
||||
Reference in New Issue
Block a user