From: Alwin Antreich <a.antreich@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: Re: [pve-devel] [PATCH manager v3 04/10] ceph: add get api call for single pool
Date: Thu, 14 Jan 2021 17:49:24 +0100 [thread overview]
Message-ID: <20210114164924.GE2853024@dona.proxmox.com> (raw)
In-Reply-To: <20210112102153.3215121-5-a.antreich@proxmox.com>
On Tue, Jan 12, 2021 at 11:21:47AM +0100, Alwin Antreich wrote:
> Information of a single pool can be queried.
>
> Signed-off-by: Alwin Antreich <a.antreich@proxmox.com>
> ---
> PVE/API2/Ceph/Pools.pm | 99 ++++++++++++++++++++++++++++++++++++++++++
> PVE/CLI/pveceph.pm | 4 ++
> 2 files changed, 103 insertions(+)
>
> diff --git a/PVE/API2/Ceph/Pools.pm b/PVE/API2/Ceph/Pools.pm
> index 24562456..01c11100 100644
> --- a/PVE/API2/Ceph/Pools.pm
> +++ b/PVE/API2/Ceph/Pools.pm
> @@ -395,4 +395,103 @@ __PACKAGE__->register_method ({
> }});
>
>
> +__PACKAGE__->register_method ({
> + name => 'getpool',
> + path => '{name}',
> + method => 'GET',
> + description => "List pool settings.",
> + proxyto => 'node',
> + protected => 1,
> + permissions => {
> + check => ['perm', '/', [ 'Sys.Audit', 'Datastore.Audit' ], any => 1],
> + },
> + parameters => {
> + additionalProperties => 0,
> + properties => {
> + node => get_standard_option('pve-node'),
> + name => {
> + description => "The name of the pool. It must be unique.",
> + type => 'string',
> + },
> + verbose => {
> + type => 'boolean',
> + default => 0,
> + optional => 1,
> + description => "If enabled, will display additional data".
> + "(eg. statistics).",
> + },
> + },
> + },
> + returns => {
> + type => "object",
> + properties => {
> + id => { type => 'integer', title => 'ID' },
> + pgp_num => { type => 'integer', title => 'PGP num' },
> + noscrub => { type => 'boolean', title => 'noscrub' },
> + 'nodeep-scrub' => { type => 'boolean', title => 'nodeep-scrub' },
> + nodelete => { type => 'boolean', title => 'nodelete' },
> + nopgchange => { type => 'boolean', title => 'nopgchange' },
> + nosizechange => { type => 'boolean', title => 'nosizechange' },
> + write_fadvise_dontneed => { type => 'boolean', title => 'write_fadvise_dontneed' },
> + hashpspool => { type => 'boolean', title => 'hashpspool' },
> + use_gmt_hitset => { type => 'boolean', title => 'use_gmt_hitset' },
> + fast_read => { type => 'boolean', title => 'Fast Read' },
> + application_list => { type => 'array', title => 'Application', optional => 1 },
> + statistics => { type => 'object', title => 'Statistics', optional => 1 },
> + %{ $ceph_pool_common_options->() },
> + },
> + },
> + code => sub {
> + my ($param) = @_;
> +
> + PVE::Ceph::Tools::check_ceph_inited();
> +
> + my $verbose = $param->{verbose};
> + my $pool = $param->{name};
> +
> + my $rados = PVE::RADOS->new();
> + my $res = $rados->mon_command({
> + prefix => 'osd pool get',
> + pool => "$pool",
> + var => 'all',
> + });
> +
> + my $data = {
> + id => $res->{pool_id},
> + name => $pool,
> + size => $res->{size},
> + min_size => $res->{min_size},
> + pg_num => $res->{pg_num},
> + pgp_num => $res->{pgp_num},
> + crush_rule => $res->{crush_rule},
> + pg_autoscale_mode => $res->{pg_autoscale_mode},
> + noscrub => "$res->{noscrub}",
> + 'nodeep-scrub' => "$res->{'nodeep-scrub'}",
> + nodelete => "$res->{nodelete}",
> + nopgchange => "$res->{nopgchange}",
> + nosizechange => "$res->{nosizechange}",
> + write_fadvise_dontneed => "$res->{write_fadvise_dontneed}",
> + hashpspool => "$res->{hashpspool}",
> + use_gmt_hitset => "$res->{use_gmt_hitset}",
> + fast_read => "$res->{fast_read}",
> + };
> +
> + if ($verbose) {
> + my $stats;
> + my $res = $rados->mon_command({ prefix => 'df' });
> +
> + foreach my $d (@{$res->{pools}}) {
> + next if !$d->{stats};
> + next if !defined($d->{name}) && !$d->{name} ne "$pool";
> + $data->{statistics} = $d->{stats};
> + }
> +
> + my $apps = $rados->mon_command({ prefix => "osd pool application get", pool => "$pool", });
> + $data->{application_list} = [ keys %$apps ];
> + }
> +
> + return $data;
> + }});
> +
> +
> 1;
> diff --git a/PVE/CLI/pveceph.pm b/PVE/CLI/pveceph.pm
> index 4114df7e..ba5067b1 100755
> --- a/PVE/CLI/pveceph.pm
> +++ b/PVE/CLI/pveceph.pm
> @@ -217,6 +217,10 @@ our $cmddef = {
> create => [ 'PVE::API2::Ceph::Pools', 'createpool', ['name'], { node => $nodename }],
> destroy => [ 'PVE::API2::Ceph::Pools', 'destroypool', ['name'], { node => $nodename } ],
> set => [ 'PVE::API2::Ceph::Pools', 'setpool', ['name'], { node => $nodename } ],
> + get => [ 'PVE::API2::Ceph::Pools', 'getpool', ['name'], { node => $nodename }, sub {
> + my ($data, $schema, $options) = @_;
> + PVE::CLIFormatter::print_api_result($data, $schema, undef, $options);
> + }, $PVE::RESTHandler::standard_output_options],
> },
> lspools => { alias => 'pool ls' },
> createpool => { alias => 'pool create' },
> --
> 2.29.2
Note:
I noticed that the crush_rule selection doesn't work. The value from the
get request isn't used. The field uses the pveCephRuleSelector.
next prev parent reply other threads:[~2021-01-14 16:49 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-12 10:21 [pve-devel] [PATCH manager v3 00/10] ceph: allow pools settings to be changed Alwin Antreich
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 01/10] api: ceph: subclass pools Alwin Antreich
2021-02-06 13:28 ` [pve-devel] applied: " Thomas Lamprecht
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 02/10] ceph: setpool, use parameter extraction instead Alwin Antreich
2021-02-06 13:29 ` [pve-devel] applied: " Thomas Lamprecht
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 03/10] ceph: add titles to ceph_pool_common_options Alwin Antreich
2021-02-06 13:29 ` [pve-devel] applied: " Thomas Lamprecht
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 04/10] ceph: add get api call for single pool Alwin Antreich
2021-01-14 16:49 ` Alwin Antreich [this message]
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 05/10] ceph: add autoscale_status to api calls Alwin Antreich
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 06/10] ceph: gui: add autoscale & flatten pool view Alwin Antreich
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 07/10] ceph: set allowed minimal pg_num down to 1 Alwin Antreich
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 08/10] ceph: gui: rework pool input panel Alwin Antreich
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 09/10] ceph: gui: add min num of PG Alwin Antreich
2021-01-12 10:21 ` [pve-devel] [PATCH manager v3 10/10] fix: ceph: always set pool size first Alwin Antreich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210114164924.GE2853024@dona.proxmox.com \
--to=a.antreich@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.