diff options
author | Andrei Rykov <arykov@ydb.tech> | 2024-01-18 17:37:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-18 17:37:55 +0100 |
commit | 6b023b51dc732c23a89764fc42a44cecda011fe8 (patch) | |
tree | ba2b9c5ec120be55189dfa89ca698522c29481e3 | |
parent | 859d03f38046e61338455c4d8594ee5fc77a8c74 (diff) | |
download | ydb-6b023b51dc732c23a89764fc42a44cecda011fe8.tar.gz |
YDB-1060 viewer nodes handler add missing sort (#1134)
* degraded-sort
* changed to int32
-rw-r--r-- | ydb/core/viewer/json_nodes.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ydb/core/viewer/json_nodes.h b/ydb/core/viewer/json_nodes.h index d385fd67dbe..2db9b9a124a 100644 --- a/ydb/core/viewer/json_nodes.h +++ b/ydb/core/viewer/json_nodes.h @@ -76,6 +76,7 @@ class TJsonNodes : public TViewerPipeClient<TJsonNodes> { Memory, CPU, LoadAverage, + Missing, }; ESort Sort = ESort::NodeId; bool ReverseSort = false; @@ -168,6 +169,8 @@ public: Sort = ESort::CPU; } else if (sort == "LoadAverage") { Sort = ESort::LoadAverage; + } else if (sort == "Missing") { + Sort = ESort::Missing; } } } @@ -668,6 +671,16 @@ public: return 0; } + static uint32 GetMissing(const NKikimrViewer::TNodeInfo& nodeInfo) { + uint32 missing = 0; + for (const auto& pDisk : nodeInfo.GetPDisks()) { + if (pDisk.state() != NKikimrBlobStorage::TPDiskState::Normal) { + missing++; + } + } + return missing; + } + void ReplyAndPassAway() { NKikimrViewer::TNodesInfo result; @@ -780,6 +793,9 @@ public: case ESort::LoadAverage: SortCollection(*result.MutableNodes(), [](const NKikimrViewer::TNodeInfo& node) { return GetLoadAverage(node.GetSystemState());}, ReverseSort); break; + case ESort::Missing: + SortCollection(*result.MutableNodes(), [](const NKikimrViewer::TNodeInfo& node) { return GetMissing(node);}, ReverseSort); + break; } } @@ -861,7 +877,7 @@ struct TJsonRequestParameters<TJsonNodes> { {"name":"type","in":"query","description":"nodes type to get (static,dynamic,any)","required":false,"type":"string"}, {"name":"storage","in":"query","description":"return storage info","required":false,"type":"boolean"}, {"name":"tablets","in":"query","description":"return tablets info","required":false,"type":"boolean"}, - {"name":"sort","in":"query","description":"sort by (NodeId,Host,DC,Rack,Version,Uptime,Memory,CPU,LoadAverage)","required":false,"type":"string"}, + {"name":"sort","in":"query","description":"sort by (NodeId,Host,DC,Rack,Version,Uptime,Memory,CPU,LoadAverage,Missing)","required":false,"type":"string"}, {"name":"offset","in":"query","description":"skip N nodes","required":false,"type":"integer"}, {"name":"limit","in":"query","description":"limit to N nodes","required":false,"type":"integer"}, {"name":"timeout","in":"query","description":"timeout in ms","required":false,"type":"integer"}, |