Skip to content

Commit 726dcee

Browse files
authored
Merge pull request #4283 from indrajitr/ddclient-update-20250106
ddclient: T5791: Relocate process params to ExecStart
2 parents 7f7bb85 + a328575 commit 726dcee

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
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: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,18 @@
2020
from base_vyostest_shim import VyOSUnitTestSHIM
2121

2222
from vyos.configsession import ConfigSessionError
23+
from vyos.utils.file import read_file
2324
from vyos.utils.process import cmd
2425
from vyos.utils.process import process_named_running
26+
from vyos.xml_ref import default_value
2527

2628
DDCLIENT_SYSTEMD_UNIT = '/run/systemd/system/ddclient.service.d/override.conf'
2729
DDCLIENT_CONF = '/run/ddclient/ddclient.conf'
2830
DDCLIENT_PNAME = 'ddclient'
2931

3032
base_path = ['service', 'dns', 'dynamic']
3133
name_path = base_path + ['name']
34+
default_interval = default_value(base_path + ['interval'])
3235
server = 'ddns.vyos.io'
3336
hostname = 'test.ddns.vyos.io'
3437
zone = 'vyos.io'
@@ -95,12 +98,14 @@ def test_01_dyndns_service_standard(self):
9598

9699
# Check the generating config parameters
97100
ddclient_conf = cmd(f'sudo cat {DDCLIENT_CONF}')
98-
# default value 300 seconds
99-
self.assertIn(f'daemon=300', ddclient_conf)
100101
self.assertIn(f'usev4=ifv4', ddclient_conf)
101102
self.assertIn(f'ifv4={interface}', ddclient_conf)
102103
self.assertIn(f'password=\'{password}\'', ddclient_conf)
103104

105+
# Check default interval of 300 seconds
106+
systemd_override = read_file(DDCLIENT_SYSTEMD_UNIT)
107+
self.assertIn(f'--daemon {default_interval}', systemd_override)
108+
104109
for opt in details.keys():
105110
if opt == 'username':
106111
login = details[opt]
@@ -140,7 +145,6 @@ def test_02_dyndns_service_ipv6(self):
140145

141146
# Check the generating config parameters
142147
ddclient_conf = cmd(f'sudo cat {DDCLIENT_CONF}')
143-
self.assertIn(f'daemon={interval}', ddclient_conf)
144148
self.assertIn(f'usev6=ifv6', ddclient_conf)
145149
self.assertIn(f'ifv6={interface}', ddclient_conf)
146150
self.assertIn(f'protocol={proto}', ddclient_conf)
@@ -150,6 +154,10 @@ def test_02_dyndns_service_ipv6(self):
150154
self.assertIn(f'min-interval={wait_time}', ddclient_conf)
151155
self.assertIn(f'max-interval={expiry_time_good}', ddclient_conf)
152156

157+
# default value 300 seconds
158+
systemd_override = read_file(DDCLIENT_SYSTEMD_UNIT)
159+
self.assertIn(f'--daemon {interval}', systemd_override)
160+
153161
# IPv4+IPv6 dual DDNS service configuration
154162
def test_03_dyndns_service_dual_stack(self):
155163
services = {'cloudflare': {'protocol': 'cloudflare', 'zone': zone},
@@ -339,9 +347,10 @@ def test_08_dyndns_vrf(self):
339347
self.cli_commit()
340348

341349
# Check for process in VRF
342-
systemd_override = cmd(f'cat {DDCLIENT_SYSTEMD_UNIT}')
350+
systemd_override = read_file(DDCLIENT_SYSTEMD_UNIT)
343351
self.assertIn(f'ExecStart=ip vrf exec {vrf_name} /usr/bin/ddclient ' \
344-
f'--file {DDCLIENT_CONF} --foreground', systemd_override)
352+
f'--file {DDCLIENT_CONF} --cache {DDCLIENT_CONF.replace("conf", "cache")} ' \
353+
f'--foreground --daemon {default_interval}', systemd_override)
345354

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

0 commit comments

Comments
 (0)