node_ops: make node_ops tasks type more human-friendly
Currently, node ops tasks type is retrieved from topology_request without any change. Use respective node operation name instead. Closes scylladb/scylladb#20671
This commit is contained in:
committed by
Botond Dénes
parent
69b4769418
commit
3195ebd04e
@@ -20,6 +20,21 @@ using namespace std::chrono_literals;
|
||||
|
||||
namespace node_ops {
|
||||
|
||||
static sstring request_type_to_task_type(const std::optional<service::topology_request>& request_type) {
|
||||
return request_type.transform([] (auto type) -> sstring {
|
||||
switch (type) {
|
||||
case service::topology_request::join:
|
||||
return "bootstrap";
|
||||
case service::topology_request::remove:
|
||||
return "remove node";
|
||||
case service::topology_request::leave:
|
||||
return "decommission";
|
||||
default:
|
||||
return fmt::to_string(type);
|
||||
}
|
||||
}).value_or("");
|
||||
}
|
||||
|
||||
static tasks::task_manager::task_state get_state(const db::system_keyspace::topology_requests_entry& entry) {
|
||||
if (!entry.id) {
|
||||
return tasks::task_manager::task_state::created;
|
||||
@@ -59,10 +74,9 @@ future<std::optional<tasks::task_status>> node_ops_virtual_task::get_status_help
|
||||
if (!started && !get_pending_ids(topology).contains(id)) {
|
||||
co_return std::nullopt;
|
||||
}
|
||||
auto type = entry.request_type ? fmt::format("{}", entry.request_type.value()) : "";
|
||||
co_return tasks::task_status{
|
||||
.task_id = id,
|
||||
.type = std::move(type),
|
||||
.type = request_type_to_task_type(entry.request_type),
|
||||
.kind = tasks::task_kind::cluster,
|
||||
.scope = "cluster",
|
||||
.state = get_state(entry),
|
||||
@@ -121,10 +135,9 @@ future<std::vector<tasks::task_stats>> node_ops_virtual_task::get_stats() {
|
||||
| boost::adaptors::transformed([] (const auto& e) {
|
||||
auto id = e.first;
|
||||
auto& entry = e.second;
|
||||
auto type = entry.request_type ? fmt::format("{}", entry.request_type.value()) : "";
|
||||
return tasks::task_stats {
|
||||
.task_id = tasks::task_id{id},
|
||||
.type = std::move(type),
|
||||
.type = node_ops::request_type_to_task_type(entry.request_type),
|
||||
.kind = tasks::task_kind::cluster,
|
||||
.scope = "cluster",
|
||||
.state = get_state(entry),
|
||||
|
||||
@@ -80,12 +80,12 @@ async def check_bootstrap_tasks_tree(tm: TaskManagerClient, module_name: str, se
|
||||
|
||||
for virtual_task in virtual_tasks:
|
||||
if virtual_task.id in bootstrap_with_streaming:
|
||||
check_virtual_task_status(virtual_task, "done", "join", 1)
|
||||
check_virtual_task_status(virtual_task, "done", "bootstrap", 1)
|
||||
|
||||
child = await tm.get_task_status(virtual_task.children_ids[0]["node"], virtual_task.children_ids[0]["task_id"])
|
||||
check_regular_task_status(child, "done", "bootstrap: streaming", "node", virtual_task.id, 0)
|
||||
else:
|
||||
check_virtual_task_status(virtual_task, "done", "join", 0)
|
||||
check_virtual_task_status(virtual_task, "done", "bootstrap", 0)
|
||||
|
||||
return (servers, [vt.id for vt in virtual_tasks])
|
||||
|
||||
@@ -148,7 +148,7 @@ async def check_remove_node_tasks_tree(manager: ManagerClient, tm: TaskManagerCl
|
||||
|
||||
virtual_tasks = await get_new_virtual_tasks_statuses(tm, module_name, servers, previous_vts, 1)
|
||||
virtual_task = virtual_tasks[0]
|
||||
check_virtual_task_status(virtual_task, "done", "remove", len(servers))
|
||||
check_virtual_task_status(virtual_task, "done", "remove node", len(servers))
|
||||
|
||||
child = await tm.get_task_status(virtual_task.children_ids[0]["node"], virtual_task.children_ids[0]["task_id"])
|
||||
check_regular_task_status(child, "done", "removenode: streaming", "node", virtual_task.id, 0)
|
||||
@@ -180,7 +180,7 @@ async def check_decommission_tasks_tree(manager: ManagerClient, tm: TaskManagerC
|
||||
|
||||
virtual_tasks = await get_new_virtual_tasks_statuses(tm, module_name, servers, previous_vts, 1)
|
||||
virtual_task = virtual_tasks[0]
|
||||
check_virtual_task_status(virtual_task, "running", "leave", 1)
|
||||
check_virtual_task_status(virtual_task, "running", "decommission", 1)
|
||||
|
||||
child = await tm.get_task_status(virtual_task.children_ids[0]["node"], virtual_task.children_ids[0]["task_id"])
|
||||
check_regular_task_status(child, "running", "decommission: streaming", "node", virtual_task.id, 0)
|
||||
@@ -233,7 +233,7 @@ async def test_node_ops_task_wait(manager: ManagerClient):
|
||||
await manager.decommission_node(server.server_id)
|
||||
|
||||
async def _wait_for_task(tm: TaskManagerClient, module_name: str, server: ServerInfo, handler: InjectionHandler):
|
||||
task = await poll_for_task(tm, module_name, servers[1], "cluster", "leave")
|
||||
task = await poll_for_task(tm, module_name, servers[1], "cluster", "decommission")
|
||||
assert task.state == "running"
|
||||
|
||||
await handler.message()
|
||||
|
||||
Reference in New Issue
Block a user