Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / ceph-volume / ceph_volume / systemd / systemctl.py
1 """
2 Utilities to control systemd units
3 """
4 from ceph_volume import process
5
6
7 def start(unit):
8     process.run(['systemctl', 'start', unit])
9
10
11 def stop(unit):
12     process.run(['systemctl', 'stop', unit])
13
14
15 def enable(unit):
16     process.run(['systemctl', 'enable', unit])
17
18
19 def disable(unit):
20     process.run(['systemctl', 'disable', unit])
21
22
23 def mask(unit):
24     process.run(['systemctl', 'mask', unit])
25
26
27 def start_osd(id_):
28     return start(osd_unit % id_)
29
30
31 def stop_osd(id_):
32     return stop(osd_unit % id_)
33
34
35 def enable_osd(id_):
36     return enable(osd_unit % id_)
37
38
39 def disable_osd(id_):
40     return disable(osd_unit % id_)
41
42
43 def enable_volume(id_, fsid, device_type='lvm'):
44     return enable(volume_unit % (device_type, id_, fsid))
45
46
47 def mask_ceph_disk():
48     # systemctl allows using a glob like '*' for masking, but there was a bug
49     # in that it wouldn't allow this for service templates. This means that
50     # masking ceph-disk@* will not work, so we must link the service directly.
51     # /etc/systemd takes precendence regardless of the location of the unit
52     process.run(
53         ['ln', '-sf', '/dev/null', '/etc/systemd/system/ceph-disk@.service']
54     )
55
56
57 #
58 # templates
59 #
60
61 osd_unit = "ceph-osd@%s"
62 ceph_disk_unit = "ceph-disk@%s"
63 volume_unit = "ceph-volume@%s-%s-%s"