summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOleksandr Kuchmystyi <o.kuchmystyi@vyos.io>2026-01-27 14:46:25 +0300
committerOleksandr Kuchmystyi <o.kuchmystyi@vyos.io>2026-02-10 13:00:27 +0300
commitbc485cbd6a798604d4873c8c4bb28c46a3b5ed2a (patch)
tree7e47f003ab9647a1219e8d41f2ee490208b87e66 /src
parent911f8653a813868f2cf805a3a1662eaf16375188 (diff)
downloadvyos-1x-bc485cbd6a798604d4873c8c4bb28c46a3b5ed2a.tar.gz
vyos-1x-bc485cbd6a798604d4873c8c4bb28c46a3b5ed2a.zip
dns: T7924: Fix dns-dynamic migration error when `service` path is missing
Handle absent `service dns dynamic address <iface> service` nodes during 1-to-2 migration to prevent ConfigTreeError.
Diffstat (limited to 'src')
-rw-r--r--src/migration-scripts/dns-dynamic/1-to-212
1 files changed, 7 insertions, 5 deletions
diff --git a/src/migration-scripts/dns-dynamic/1-to-2 b/src/migration-scripts/dns-dynamic/1-to-2
index 6398b902f..424d4fa85 100644
--- a/src/migration-scripts/dns-dynamic/1-to-2
+++ b/src/migration-scripts/dns-dynamic/1-to-2
@@ -51,8 +51,10 @@ def migrate(config: ConfigTree) -> None:
# Migrate "service dns dynamic address <interface> service <service> protocol dnsexit"
# to "service dns dynamic address <interface> service <service> protocol dnsexit2"
for address in config.list_nodes(address_path):
- for svc_cfg in config.list_nodes(address_path + [address, 'service']):
- if config.exists(address_path + [address, 'service', svc_cfg, 'protocol']):
- protocol = config.return_value(address_path + [address, 'service', svc_cfg, 'protocol'])
- if protocol == 'dnsexit':
- config.set(address_path + [address, 'service', svc_cfg, 'protocol'], 'dnsexit2')
+ service_path = address_path + [address, 'service']
+ if config.exists(service_path):
+ for svc_cfg in config.list_nodes(service_path):
+ if config.exists(service_path + [svc_cfg, 'protocol']):
+ protocol = config.return_value(service_path + [svc_cfg, 'protocol'])
+ if protocol == 'dnsexit':
+ config.set(service_path + [svc_cfg, 'protocol'], 'dnsexit2')