]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-daemon: add ceph.target and ceph-$fsid.target units
authorSage Weil <sage@redhat.com>
Thu, 26 Sep 2019 22:19:25 +0000 (17:19 -0500)
committerSage Weil <sage@redhat.com>
Wed, 2 Oct 2019 12:11:12 +0000 (07:11 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/ceph-daemon
test_ceph_daemon.sh

index a8764d282e94be76118fe46e8f14e12a629e0b7f..29ed19188b4e949aec62ff5749479a7f261ca5eb 100755 (executable)
@@ -137,7 +137,8 @@ def deploy_daemon(daemon_type, daemon_id, c, config=None, keyring=None):
         f.write('#!/bin/sh\n' + ' '.join(c.run_cmd()) + '\n')
         os.fchmod(f.fileno(), 0o700)
 
-    # unit
+    # systemd
+    install_base_units()
     unit = get_unit_file()
     unit_file = 'ceph-%s@.service' % (args.fsid)
     with open(args.unit_dir + '/' + unit_file, 'w') as f:
@@ -147,11 +148,39 @@ def deploy_daemon(daemon_type, daemon_id, c, config=None, keyring=None):
     check_output(['systemctl', 'enable', unit_name])
     check_output(['systemctl', 'start', unit_name])
 
+def install_base_units():
+    existed = os.path.exists(args.unit_dir + '/ceph.target')
+    with open(args.unit_dir + '/ceph.target', 'w') as f:
+        f.write('[Unit]\n'
+                'Description=all ceph service\n'
+                '[Install]\n'
+                'WantedBy=multi-user.target\n')
+    if not existed:
+        check_output(['systemctl', 'enable', 'ceph.target'])
+        check_output(['systemctl', 'start', 'ceph.target'])
+
+    existed = os.path.exists(args.unit_dir + '/ceph-%s.target' % args.fsid)
+    with open(args.unit_dir + '/ceph-%s.target' % args.fsid, 'w') as f:
+        f.write('[Unit]\n'
+                'Description=ceph cluster {fsid}\n'
+                'PartOf=ceph.target\n'
+                'Before=ceph.target\n'
+                '[Install]\n'
+                'WantedBy=multi-user.target ceph.target\n'.format(
+                    fsid=args.fsid)
+        )
+    if not existed:
+        check_output(['systemctl', 'enable', 'ceph-%s.target' % args.fsid])
+        check_output(['systemctl', 'start', 'ceph-%s.target' % args.fsid])
+
 def get_unit_file():
     u = """[Unit]
 Description=Ceph daemon for {fsid}
 After=network.target
 
+PartOf=ceph-{fsid}.target
+Before=ceph-{fsid}.target
+
 [Service]
 EnvironmentFile=-/etc/environment
 ExecStartPre=-/usr/bin/podman rm ceph-{fsid}-%i
@@ -165,7 +194,7 @@ TimeoutStartSec=120
 TimeoutStopSec=15
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=ceph-{fsid}.target
 """.format(fsid=args.fsid, data_dir=args.data_dir)
     return u
 
index 705aa8c0aa18012a3f0c59b5dfbeeca0f7f49b71..cb01d1dfcf1000100f518ec4e13ed5a702060698 100755 (executable)
@@ -3,7 +3,10 @@
 fsid=0a464092-dfd0-11e9-b903-002590e526e8
 
 for f in `podman ps | awk '{print $1}' | grep -v CONT ` ; do podman kill $f ; done
+
 for f in `systemctl | grep ceph | awk '{print $1}'` ; do systemctl stop $f ; systemctl disable $f ; done
+rm /etc/systemd/system/ceph*
+systemctl daemon-reload
 
 rm -rf /var/lib/ceph/$fsid/*
 rm -rf /var/log/ceph/$fsid/*