'Type=forking\n'
'PIDFile=/%t/%n-pid\n')
+ docker = 'docker' in container_path
u = """# generated by cephadm
[Unit]
Description=Ceph %i for {fsid}
# http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
# these can be removed once ceph-mon will dynamically change network
# configuration.
-After=network-online.target local-fs.target time-sync.target
+After=network-online.target local-fs.target time-sync.target{docker_after}
Wants=network-online.target local-fs.target time-sync.target
+{docker_requires}
PartOf=ceph-{fsid}.target
Before=ceph-{fsid}.target
container_path=container_path,
fsid=fsid,
data_dir=args.data_dir,
- extra_args=extra_args)
+ extra_args=extra_args,
+ # if docker, we depend on docker.service
+ docker_after=' docker.service' if docker else '',
+ docker_requires='Requires=docker.service\n' if docker else '',
+)
return u
cd = SourceFileLoader('cephadm', 'cephadm').load_module()
class TestCephAdm(object):
+
+ def test_docker_unit_file(self):
+ cd.args = mock.Mock()
+ cd.container_path = '/usr/bin/docker'
+ r = cd.get_unit_file('9b9d7609-f4d5-4aba-94c8-effa764d96c9')
+ assert 'Requires=docker.service' in r
+ cd.container_path = '/usr/sbin/podman'
+ r = cd.get_unit_file('9b9d7609-f4d5-4aba-94c8-effa764d96c9')
+ assert 'Requires=docker.service' not in r
+
def test_is_not_fsid(self):
assert not cd.is_fsid('no-uuid')