bundles/pppd: make sure dependent services are stopped before restarting pppoe session

This commit is contained in:
Franzi 2020-11-15 09:56:06 +01:00
parent 7e4c69c3f1
commit 0aafeb96cd
Signed by: kunsi
GPG key ID: 12E3D2136B818350
5 changed files with 54 additions and 2 deletions

View file

@ -7,8 +7,8 @@ Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/pon
ExecStop=/usr/bin/poff -a
# This is important, because otherwise systemd will kill the ip-down scripts!
KillMode=none
ExecStop=/etc/ppp/wait-until-stopped
TimeoutStopSec=90
[Install]
WantedBy=default.target

View file

@ -0,0 +1,17 @@
#!/bin/bash
% for service in sorted(services):
(
while true
do
if systemctl is-active ${service}
then
sleep 1
else
exit 0
fi
done
) &
% endfor
wait

View file

@ -68,6 +68,13 @@ files = {
'svc_systemd:pppoe:restart',
},
},
'/etc/ppp/wait-until-stopped': {
'content_type': 'mako',
'context': {
'services': node.metadata.get('pppd', {}).get('wait-until-stopped', set()),
},
'mode': '0700',
},
'/etc/systemd/system/pppoe.service': {
'triggers': {
'action:systemd-reload',

View file

@ -5,3 +5,17 @@ defaults = {
},
},
}
@metadata_reactor
def pppd(metadata):
if metadata.get('wide-dhcp6c/integrate-with-pppd', False):
return {
'pppd': {
'wait-until-stopped': {
'radvd.service',
},
}
}
return {}

View file

@ -16,3 +16,17 @@ defaults = {
'subnet_len': '8',
},
}
@metadata_reactor
def pppd(metadata):
if metadata.get('wide-dhcp6c/integrate-with-pppd', False):
return {
'pppd': {
'wait-until-stopped': {
'wide-dhcpv6-client.service',
},
}
}
return {}