Am 20/10/2022 um 09:17 schrieb Stefan Sterz:
> since ceph luminous (ceph 12) pools need to be associated with at
> least one applicaton. expose this information here too so that clients
> of this endpoint can use it
> 
> Signed-off-by: Stefan Sterz <s.st...@proxmox.com>
> ---
> v3: add an api viewer entry for the applications object
> 
> thanks @ alwin antreich for pointing out that pools have applications!
> 
>  PVE/API2/Ceph/Pools.pm | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/PVE/API2/Ceph/Pools.pm b/PVE/API2/Ceph/Pools.pm
> index 6c05250e..f5984c2c 100644
> --- a/PVE/API2/Ceph/Pools.pm
> +++ b/PVE/API2/Ceph/Pools.pm
> @@ -125,6 +125,11 @@ __PACKAGE__->register_method ({
>                   title => 'Autoscale Status',
>                   optional => 1,
>               },
> +             applications => {
> +                 type => 'object',
> +                 title => 'Associated Applications',
> +                 optional => 1,
> +             },
>           },
>       },
>       links => [ { rel => 'child', href => "{pool_name}" } ],
> @@ -167,6 +172,8 @@ __PACKAGE__->register_method ({
>       # pg_autoscaler module is not enabled in Nautilus
>       my $autoscale = eval { $get_autoscale_status->($rados) };
>  
> +     my $apps = eval { $rados->mon_command({ prefix => 'osd pool application 
> get' }) };

out of interest: how expensive is this, did you check the overhead?

> +
>       foreach my $e (@{$res->{pools}}) {
>           my $d = {};
>           foreach my $attr (@$attr_list) {
> @@ -191,6 +198,10 @@ __PACKAGE__->register_method ({
>               $d->{percent_used} = $s->{percent_used};
>           }
>  
> +         if ($apps) {
> +             $d->{applications} = $apps->{$d->{pool_name}} if 
> $apps->{$d->{pool_name}};

no nested hashes-in-hashes, pull out $d->{pool_name} earlier and then make it 
an one
liner:

$d->{applications} = $apps->{$pool} if defined($apps->{$pool});

> +         }
> +
>           # Cephs numerical pool types are barely documented. Found the 
> following in the Ceph
>           # codebase: 
> https://github.com/ceph/ceph/blob/ff144995a849407c258bcb763daa3e03cfce5059/src/osd/osd_types.h#L1221-L1233
>           if ($e->{type} == 1) {



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to