Skip to content

Commit a2a3ff9

Browse files
committed
ddclient: T5791: Relocate process params to ExecStart
Pull up all the global parameters controlling process behavior to systemd service. Also remove `syslog=yes`` as it is not needed with `exec` type service.
1 parent 53cb3e5 commit a2a3ff9

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

data/templates/dns-dynamic/ddclient.conf.j2

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ if{{ ipv }}={{ address }}, \
2121
{{ host }}
2222
{% endmacro %}
2323
### Autogenerated by service_dns_dynamic.py ###
24-
daemon={{ interval }}
25-
syslog=yes
2624
ssl=yes
27-
cache={{ config_file | replace('.conf', '.cache') }}
2825
{# ddclient default (web=dyndns) doesn't support ssl and results in process lockup #}
2926
web=googledomains
3027
{# ddclient default (use=ip) results in confusing warning message in log #}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{% set vrf_command = 'ip vrf exec ' ~ vrf ~ ' ' if vrf is vyos_defined else '' %}
2+
{% set cache_file = config_file.replace('.conf', '.cache') %}
23
[Unit]
34
ConditionPathExists={{ config_file }}
45
Wants=
@@ -7,5 +8,5 @@ After=vyos-router.service
78
[Service]
89
EnvironmentFile=
910
ExecStart=
10-
ExecStart={{ vrf_command }}/usr/bin/ddclient --file {{ config_file }} --foreground
11+
ExecStart={{ vrf_command }}/usr/bin/ddclient --file {{ config_file }} --cache {{ cache_file }} --foreground --daemon {{ interval }}
1112
Restart=always

smoketest/scripts/cli/test_service_dns_dynamic.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@
2222
from vyos.configsession import ConfigSessionError
2323
from vyos.utils.process import cmd
2424
from vyos.utils.process import process_named_running
25+
from vyos.xml_ref import default_value
2526

2627
DDCLIENT_SYSTEMD_UNIT = '/run/systemd/system/ddclient.service.d/override.conf'
2728
DDCLIENT_CONF = '/run/ddclient/ddclient.conf'
2829
DDCLIENT_PNAME = 'ddclient'
2930

3031
base_path = ['service', 'dns', 'dynamic']
3132
name_path = base_path + ['name']
33+
default_interval = default_value(base_path + ['interval'])
3234
server = 'ddns.vyos.io'
3335
hostname = 'test.ddns.vyos.io'
3436
zone = 'vyos.io'
@@ -95,12 +97,14 @@ def test_01_dyndns_service_standard(self):
9597

9698
# Check the generating config parameters
9799
ddclient_conf = cmd(f'sudo cat {DDCLIENT_CONF}')
98-
# default value 300 seconds
99-
self.assertIn(f'daemon=300', ddclient_conf)
100100
self.assertIn(f'usev4=ifv4', ddclient_conf)
101101
self.assertIn(f'ifv4={interface}', ddclient_conf)
102102
self.assertIn(f'password=\'{password}\'', ddclient_conf)
103103

104+
# Check default interval of 300 seconds
105+
systemd_override = cmd(f'cat {DDCLIENT_SYSTEMD_UNIT}')
106+
self.assertIn(f'--daemon {default_interval}', systemd_override)
107+
104108
for opt in details.keys():
105109
if opt == 'username':
106110
login = details[opt]
@@ -140,7 +144,6 @@ def test_02_dyndns_service_ipv6(self):
140144

141145
# Check the generating config parameters
142146
ddclient_conf = cmd(f'sudo cat {DDCLIENT_CONF}')
143-
self.assertIn(f'daemon={interval}', ddclient_conf)
144147
self.assertIn(f'usev6=ifv6', ddclient_conf)
145148
self.assertIn(f'ifv6={interface}', ddclient_conf)
146149
self.assertIn(f'protocol={proto}', ddclient_conf)
@@ -150,6 +153,10 @@ def test_02_dyndns_service_ipv6(self):
150153
self.assertIn(f'min-interval={wait_time}', ddclient_conf)
151154
self.assertIn(f'max-interval={expiry_time_good}', ddclient_conf)
152155

156+
# default value 300 seconds
157+
systemd_override = cmd(f'cat {DDCLIENT_SYSTEMD_UNIT}')
158+
self.assertIn(f'--daemon {interval}', systemd_override)
159+
153160
# IPv4+IPv6 dual DDNS service configuration
154161
def test_03_dyndns_service_dual_stack(self):
155162
services = {'cloudflare': {'protocol': 'cloudflare', 'zone': zone},
@@ -341,7 +348,8 @@ def test_08_dyndns_vrf(self):
341348
# Check for process in VRF
342349
systemd_override = cmd(f'cat {DDCLIENT_SYSTEMD_UNIT}')
343350
self.assertIn(f'ExecStart=ip vrf exec {vrf_name} /usr/bin/ddclient ' \
344-
f'--file {DDCLIENT_CONF} --foreground', systemd_override)
351+
f'--file {DDCLIENT_CONF} --cache {DDCLIENT_CONF.replace("conf", "cache")} ' \
352+
f'--foreground --daemon {default_interval}', systemd_override)
345353

346354
# Check for process in VRF
347355
proc = cmd(f'ip vrf pids {vrf_name}')

0 commit comments

Comments
 (0)