[pve-devel] [RFC manager 1/3] add get_local_services for ceph

Thomas Lamprecht t.lamprecht at proxmox.com
Fri Apr 26 10:47:08 CEST 2019


Am 4/26/19 um 8:21 AM schrieb Dominik Csapak:
> this returns a hash of existing service links for
> mds/mgr/mons so that we know which services exists
> 
> this is necessary since ceph itself does not save if a service is
> defined somewhere, only when it runs
> 
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
>  PVE/Ceph/Services.pm | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/PVE/Ceph/Services.pm b/PVE/Ceph/Services.pm
> index 739df266..a0203f9c 100644
> --- a/PVE/Ceph/Services.pm
> +++ b/PVE/Ceph/Services.pm
> @@ -9,6 +9,24 @@ use PVE::RADOS;
>  
>  use File::Path;
>  
> +# checks links in /etc/systemd/system/ceph-* to list all services, even
> +# those not running

hmm, what about (temporarily) disabled ones? or can we just say that won't
happen with service unit templates.. Else we could possibly also check
/var/lib/ceph/m{ds,gr,on} for old configured but not active (anymore) ones

> +sub get_local_services {
> +    my $res = {};
> +    for my $type (qw(mds mgr mon)) {
> +	$res->{$type} = {};
> +	my $path = "/etc/systemd/system/ceph-$type.target.wants";
> +	my $regex = "ceph-$type\@(.*)\.service";
> +	PVE::Tools::dir_glob_foreach($path, $regex, sub {
> +	    my (undef, $id) = @_;
> +	    $res->{$type}->{$id} = {
> +		service => 1,

if we could get it in a cheap way it could be great to get it's state too
(running, dead, ...?) or do we get that from ceph for running ones, and the
difference from those and this set can be assumed to be dead?

> +	    }
> +	});
> +    }
> +    return $res;
> +}
> +
>  sub ceph_service_cmd {
>      my ($action, $service) = @_;
>  
> 





More information about the pve-devel mailing list