Add JSON output for ls-osd
This commit is contained in:
@@ -24,6 +24,8 @@ It supports the following commands:
|
||||
- [fix](#fix)
|
||||
- [alloc-osd](#alloc-osd)
|
||||
- [rm-osd](#rm-osd)
|
||||
- [osd-tree](#osd-tree)
|
||||
- [ls-osd](#ls-osd)
|
||||
- [create-pool](#create-pool)
|
||||
- [modify-pool](#modify-pool)
|
||||
- [ls-pools](#ls-pools)
|
||||
@@ -246,6 +248,58 @@ Refuses to remove OSDs with data without `--force` and `--allow-data-loss`.
|
||||
With `--dry-run` only checks if deletion is possible without data loss and
|
||||
redundancy degradation.
|
||||
|
||||
## osd-tree
|
||||
|
||||
`vitastor-cli osd-tree`
|
||||
|
||||
Show current OSD tree.
|
||||
|
||||
Example output:
|
||||
|
||||
```
|
||||
TYPE NAME UP SIZE USED% TAGS WEIGHT BLOCK BITMAP IMM
|
||||
host kaveri
|
||||
disk nvme0n1p1
|
||||
osd 3 down 100G 0 % abc,kaveri 1 128k 4k none
|
||||
osd 4 down 100G 0 % 1 128k 4k none
|
||||
disk nvme1n1p1
|
||||
osd 5 down 100G 0 % abc,kaveri 1 128k 4k none
|
||||
osd 6 down 100G 0 % 1 128k 4k none
|
||||
host stump
|
||||
osd 1 up 100G 37.29 % osdone 1 128k 4k all
|
||||
osd 2 up 100G 26.8 % abc 1 128k 4k all
|
||||
osd 7 up 100G 21.84 % 1 128k 4k all
|
||||
osd 8 up 100G 21.63 % 1 128k 4k all
|
||||
osd 9 up 100G 20.69 % 1 128k 4k all
|
||||
osd 10 up 100G 21.61 % 1 128k 4k all
|
||||
osd 11 up 100G 21.53 % 1 128k 4k all
|
||||
osd 12 up 100G 22.4 % 1 128k 4k all
|
||||
```
|
||||
|
||||
## ls-osd
|
||||
|
||||
`vitastor-cli osds|ls-osd|osd-ls`
|
||||
|
||||
Show current OSDs as list.
|
||||
|
||||
Example output:
|
||||
|
||||
```
|
||||
OSD PARENT UP SIZE USED% TAGS WEIGHT BLOCK BITMAP IMM
|
||||
3 kaveri/nvme0n1p1 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||
4 kaveri/nvme0n1p1 down 100G 0 % 1 128k 4k none
|
||||
5 kaveri/nvme1n1p1 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||
6 kaveri/nvme1n1p1 down 100G 0 % 1 128k 4k none
|
||||
1 stump up 100G 37.29 % osdone 1 128k 4k all
|
||||
2 stump up 100G 26.8 % globl 1 128k 4k all
|
||||
7 stump up 100G 21.84 % 1 128k 4k all
|
||||
8 stump up 100G 21.63 % 1 128k 4k all
|
||||
9 stump up 100G 20.69 % 1 128k 4k all
|
||||
10 stump up 100G 21.61 % 1 128k 4k all
|
||||
11 stump up 100G 21.53 % 1 128k 4k all
|
||||
12 stump up 100G 22.4 % 1 128k 4k all
|
||||
```
|
||||
|
||||
## create-pool
|
||||
|
||||
`vitastor-cli create-pool|pool-create <name> (-s <pg_size>|--ec <N>+<K>) -n <pg_count> [OPTIONS]`
|
||||
|
||||
@@ -23,6 +23,8 @@ vitastor-cli - интерфейс командной строки для адм
|
||||
- [merge-data](#merge-data)
|
||||
- [alloc-osd](#alloc-osd)
|
||||
- [rm-osd](#rm-osd)
|
||||
- [osd-tree](#osd-tree)
|
||||
- [ls-osd](#ls-osd)
|
||||
- [create-pool](#create-pool)
|
||||
- [modify-pool](#modify-pool)
|
||||
- [ls-pools](#ls-pools)
|
||||
@@ -263,6 +265,58 @@ vitastor-cli snap-create [-p|--pool <id|name>] <image>@<snapshot>
|
||||
С опцией `--dry-run` только проверяет, возможно ли удаление без потери данных и деградации
|
||||
избыточности.
|
||||
|
||||
## osd-tree
|
||||
|
||||
`vitastor-cli osd-tree`
|
||||
|
||||
Показать дерево OSD.
|
||||
|
||||
Пример вывода:
|
||||
|
||||
```
|
||||
TYPE NAME UP SIZE USED% TAGS WEIGHT BLOCK BITMAP IMM
|
||||
host kaveri
|
||||
disk nvme0n1p1
|
||||
osd 3 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||
osd 4 down 100G 0 % 1 128k 4k none
|
||||
disk nvme1n1p1
|
||||
osd 5 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||
osd 6 down 100G 0 % 1 128k 4k none
|
||||
host stump
|
||||
osd 1 up 100G 37.29 % osdone 1 128k 4k all
|
||||
osd 2 up 100G 26.8 % globl 1 128k 4k all
|
||||
osd 7 up 100G 21.84 % 1 128k 4k all
|
||||
osd 8 up 100G 21.63 % 1 128k 4k all
|
||||
osd 9 up 100G 20.69 % 1 128k 4k all
|
||||
osd 10 up 100G 21.61 % 1 128k 4k all
|
||||
osd 11 up 100G 21.53 % 1 128k 4k all
|
||||
osd 12 up 100G 22.4 % 1 128k 4k all
|
||||
```
|
||||
|
||||
## ls-osd
|
||||
|
||||
`vitastor-cli osds|ls-osd|osd-ls`
|
||||
|
||||
Показать список OSD.
|
||||
|
||||
Пример вывода:
|
||||
|
||||
```
|
||||
OSD PARENT UP SIZE USED% TAGS WEIGHT BLOCK BITMAP IMM
|
||||
3 kaveri/nvme0n1p1 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||
4 kaveri/nvme0n1p1 down 100G 0 % 1 128k 4k none
|
||||
5 kaveri/nvme1n1p1 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||
6 kaveri/nvme1n1p1 down 100G 0 % 1 128k 4k none
|
||||
1 stump up 100G 37.29 % osdone 1 128k 4k all
|
||||
2 stump up 100G 26.8 % globl 1 128k 4k all
|
||||
7 stump up 100G 21.84 % 1 128k 4k all
|
||||
8 stump up 100G 21.63 % 1 128k 4k all
|
||||
9 stump up 100G 20.69 % 1 128k 4k all
|
||||
10 stump up 100G 21.61 % 1 128k 4k all
|
||||
11 stump up 100G 21.53 % 1 128k 4k all
|
||||
12 stump up 100G 22.4 % 1 128k 4k all
|
||||
```
|
||||
|
||||
## create-pool
|
||||
|
||||
`vitastor-cli create-pool|pool-create <name> (-s <pg_size>|--ec <N>+<K>) -n <pg_count> [OPTIONS]`
|
||||
|
||||
@@ -178,7 +178,7 @@ resume_1:
|
||||
return tree;
|
||||
}
|
||||
|
||||
std::string format_tree()
|
||||
void format_tree()
|
||||
{
|
||||
std::vector<std::string> node_seq = { "" };
|
||||
std::vector<int> indents = { -1 };
|
||||
@@ -198,6 +198,38 @@ resume_1:
|
||||
}
|
||||
}
|
||||
json11::Json::array fmt_items;
|
||||
if (parent->json_output)
|
||||
{
|
||||
for (int i = 1; i < node_seq.size(); i++)
|
||||
{
|
||||
auto & node = placement_tree->nodes.at(node_seq[i]);
|
||||
fmt_items.push_back(json11::Json::object{
|
||||
{ "type", node.level },
|
||||
{ "name", node.name },
|
||||
{ "parent", node.parent },
|
||||
});
|
||||
for (uint64_t osd_num: node.child_osds)
|
||||
{
|
||||
auto & osd = placement_tree->osds.at(osd_num);
|
||||
fmt_items.push_back(json11::Json::object{
|
||||
{ "type", "osd" },
|
||||
{ "name", osd.num },
|
||||
{ "parent", node.name },
|
||||
{ "up", osd.up ? "up" : "down" },
|
||||
{ "size", osd.size },
|
||||
{ "free", osd.free },
|
||||
{ "reweight", osd.reweight },
|
||||
{ "tags", osd.tags },
|
||||
{ "block", (uint64_t)osd.block_size },
|
||||
{ "bitmap", (uint64_t)osd.bitmap_granularity },
|
||||
{ "commit", osd.immediate_commit == IMMEDIATE_NONE ? "none" : (osd.immediate_commit == IMMEDIATE_ALL ? "all" : "small") },
|
||||
{ "op_stats", osd_stats[osd_num]["op_stats"] },
|
||||
});
|
||||
}
|
||||
}
|
||||
result.data = fmt_items;
|
||||
return;
|
||||
}
|
||||
for (int i = 1; i < node_seq.size(); i++)
|
||||
{
|
||||
auto & node = placement_tree->nodes.at(node_seq[i]);
|
||||
@@ -340,7 +372,7 @@ resume_1:
|
||||
{ "title", "LAT" },
|
||||
});
|
||||
}
|
||||
return print_table(fmt_items, cols, parent->color);
|
||||
result.text = print_table(fmt_items, cols, parent->color);
|
||||
}
|
||||
|
||||
void loop()
|
||||
@@ -351,7 +383,7 @@ resume_1:
|
||||
load_osd_tree();
|
||||
if (parent->waiting > 0)
|
||||
return;
|
||||
result.text = format_tree();
|
||||
format_tree();
|
||||
state = 100;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user