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

Dominik Csapak d.csapak at proxmox.com
Fri Apr 26 08:21:26 CEST 2019


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
+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) = @_;
 
-- 
2.11.0





More information about the pve-devel mailing list