From 23b20ae451b54c8ea349473cad5360704c4947b6 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Mon, 27 May 2019 14:13:52 +0200 Subject: [PATCH] add get_local_services for ceph 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 --- PVE/Ceph/Services.pm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/PVE/Ceph/Services.pm b/PVE/Ceph/Services.pm index f320b23c..0f3d59b5 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 +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, + } + }); + } + return $res; +} + sub ceph_service_cmd { my ($action, $service) = @_;