summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2025-01-06 14:16:16 +0000
committerGitHub <noreply@github.com>2025-01-06 14:16:16 +0000
commit53cb3e5cb9b0c88a5c83753bfadb5087b4aeb2b1 (patch)
tree63ffa08ada9f42a6bbed038e31dc67875a9d7258
parent5ae3f05d50f386cad33e7011ca9712e925ac7fa5 (diff)
parentdbf42ed4a657ec0cf4b954a8113921c130c118ce (diff)
downloadvyos-1x-53cb3e5cb9b0c88a5c83753bfadb5087b4aeb2b1.tar.gz
vyos-1x-53cb3e5cb9b0c88a5c83753bfadb5087b4aeb2b1.zip
Merge pull request #4276 from indrajitr/ddclient-process-2025-01-04
ddclient: T5791: Keep ddclient.service in foreground
-rw-r--r--data/templates/dns-dynamic/ddclient.conf.j21
-rw-r--r--data/templates/dns-dynamic/override.conf.j25
-rwxr-xr-xsmoketest/scripts/cli/test_service_dns_dynamic.py16
3 files changed, 13 insertions, 9 deletions
diff --git a/data/templates/dns-dynamic/ddclient.conf.j2 b/data/templates/dns-dynamic/ddclient.conf.j2
index 5538ea56c..23aad4cb8 100644
--- a/data/templates/dns-dynamic/ddclient.conf.j2
+++ b/data/templates/dns-dynamic/ddclient.conf.j2
@@ -24,7 +24,6 @@ if{{ ipv }}={{ address }}, \
daemon={{ interval }}
syslog=yes
ssl=yes
-pid={{ config_file | replace('.conf', '.pid') }}
cache={{ config_file | replace('.conf', '.cache') }}
{# ddclient default (web=dyndns) doesn't support ssl and results in process lockup #}
web=googledomains
diff --git a/data/templates/dns-dynamic/override.conf.j2 b/data/templates/dns-dynamic/override.conf.j2
index 4a6851cef..c0edd8f05 100644
--- a/data/templates/dns-dynamic/override.conf.j2
+++ b/data/templates/dns-dynamic/override.conf.j2
@@ -1,10 +1,11 @@
{% set vrf_command = 'ip vrf exec ' ~ vrf ~ ' ' if vrf is vyos_defined else '' %}
[Unit]
ConditionPathExists={{ config_file }}
+Wants=
After=vyos-router.service
[Service]
-PIDFile={{ config_file | replace('.conf', '.pid') }}
EnvironmentFile=
ExecStart=
-ExecStart={{ vrf_command }}/usr/bin/ddclient -file {{ config_file }}
+ExecStart={{ vrf_command }}/usr/bin/ddclient --file {{ config_file }} --foreground
+Restart=always
diff --git a/smoketest/scripts/cli/test_service_dns_dynamic.py b/smoketest/scripts/cli/test_service_dns_dynamic.py
index e9fb4bf10..9fbc931de 100755
--- a/smoketest/scripts/cli/test_service_dns_dynamic.py
+++ b/smoketest/scripts/cli/test_service_dns_dynamic.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2019-2024 VyOS maintainers and contributors
+# Copyright (C) 2019-2025 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
@@ -38,9 +38,13 @@ ttl = '300'
interface = 'eth0'
class TestServiceDDNS(VyOSUnitTestSHIM.TestCase):
- def setUp(self):
- # Always start with a clean CLI instance
- self.cli_delete(base_path)
+ @classmethod
+ def setUpClass(cls):
+ super(TestServiceDDNS, cls).setUpClass()
+
+ # ensure we can also run this test on a live system - so lets clean
+ # out the current configuration :)
+ cls.cli_delete(cls, base_path)
def tearDown(self):
# Check for running process
@@ -336,8 +340,8 @@ class TestServiceDDNS(VyOSUnitTestSHIM.TestCase):
# Check for process in VRF
systemd_override = cmd(f'cat {DDCLIENT_SYSTEMD_UNIT}')
- self.assertIn(f'ExecStart=ip vrf exec {vrf_name} /usr/bin/ddclient -file {DDCLIENT_CONF}',
- systemd_override)
+ self.assertIn(f'ExecStart=ip vrf exec {vrf_name} /usr/bin/ddclient ' \
+ f'--file {DDCLIENT_CONF} --foreground', systemd_override)
# Check for process in VRF
proc = cmd(f'ip vrf pids {vrf_name}')