'Type=forking\n'
'PIDFile=/%t/%n-pid\n')
+ docker = 'docker' in ctx.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=ctx.container_path,
fsid=fsid,
data_dir=ctx.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
@property
def unit_file(self):
+ docker = 'docker' in self.ctx.container_path
return """#generated by cephadm
[Unit]
Description=cephadm exporter service for cluster {fsid}
-After=network-online.target
+After=network-online.target{docker_after}
Wants=network-online.target
+{docker_requires}
PartOf=ceph-{fsid}.target
Before=ceph-{fsid}.target
WantedBy=ceph-{fsid}.target
""".format(
fsid=self.fsid,
- daemon_path=self.daemon_path
-)
+ daemon_path=self.daemon_path,
+ # if docker, we depend on docker.service
+ docker_after=' docker.service' if docker else '',
+ docker_requires='Requires=docker.service\n' if docker else '',
+ )
def deploy_daemon_unit(self, config=None):
"""deploy a specific unit file for cephadm
class TestCephAdm(object):
+ def test_docker_unit_file(self):
+ ctx = mock.Mock()
+ ctx.container_path = '/usr/bin/docker'
+ r = cd.get_unit_file(ctx, '9b9d7609-f4d5-4aba-94c8-effa764d96c9')
+ assert 'Requires=docker.service' in r
+ ctx.container_path = '/usr/sbin/podman'
+ r = cd.get_unit_file(ctx, '9b9d7609-f4d5-4aba-94c8-effa764d96c9')
+ assert 'Requires=docker.service' not in r
+
@mock.patch('cephadm.logger')
def test_attempt_bind(self, logger):
ctx = None