On 10/20/22 14:55, Thomas Lamprecht wrote: > 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? >
do you want a specific metric? in my (admittedly small) test setup (three vm cluster with 4 cores and 4Gib RAM) it is barely noticeable. the api call takes between 18 and 25ms in both cases for me. >> + >> 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}); > noted, ill avoid that in the future. >> + } >> + >> # 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