From 7e45cda1404074e06c9f8156df72a08a797a11dc Mon Sep 17 00:00:00 2001 From: Oleksandr Ivantsiv Date: Tue, 23 Jan 2024 16:29:55 -0800 Subject: [PATCH] [dns] Do not apply dynamic DNS configuration when MGMT interface has static IP address. (#17769) ### Why I did it Fix the issue detected by[ TestStaticMgmtPortIP::test_dynamic_dns_not_working_when_static_ip_configured ](https://github.com/sonic-net/sonic-mgmt/blob/master/tests/dns/static_dns/test_static_dns.py#L105C9-L105C63) test. ### How I did it Query MGMT interface configuration. Do not apply dynamic DNS configuration when MGMT interface has static IP address. #### How to verify it Run `tests/dns/static_dns/test_static_dns.py` sonic-mgmt tests. --- .../resolv-config/resolv-config.sh | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/files/image_config/resolv-config/resolv-config.sh b/files/image_config/resolv-config/resolv-config.sh index cffda6acb54b..a9f061e31f27 100755 --- a/files/image_config/resolv-config/resolv-config.sh +++ b/files/image_config/resolv-config/resolv-config.sh @@ -14,13 +14,24 @@ start() { update_symlink - redis-dump -d 4 -k "DNS_NAMESERVER*" -y > /tmp/dns.json - if [[ $? -eq 0 && "$(cat /tmp/dns.json)" != "{}" ]]; then + has_static_mgmt_ip=false + mgmt_ip_cfg=$(redis-dump -d 4 -k "MGMT_INTERFACE|eth0|*" -y) + if [[ $? -eq 0 && ${mgmt_ip_cfg} != "{}" ]]; then + has_static_mgmt_ip=true + fi + + has_static_dns=false + dns_cfg=$(redis-dump -d 4 -k "DNS_NAMESERVER*" -y) + if [[ $? -eq 0 && ${dns_cfg} != "{}" ]]; then + has_static_dns=true + fi + + if [[ ${has_static_mgmt_ip} == true || ${has_static_dns} == true ]]; then # Apply static DNS configuration and disable updates /sbin/resolvconf --disable-updates pushd ${CONFIG_DIR} # Backup dynamic configuration to restore it when the static configuration is removed - mv ${DYNAMIC_CONFIG_FILE_TEMPLATE} ${WD} || true + mv ${DYNAMIC_CONFIG_FILE_TEMPLATE} ${WD} 2>/dev/null || true sonic-cfggen -d -t /usr/share/sonic/templates/resolv.conf.j2,${STATIC_CONFIG_FILE} @@ -34,7 +45,7 @@ start() pushd ${CONFIG_DIR} rm -f ${STATIC_CONFIG_FILE} # Restore dynamic configuration if it exists - mv ${WD}/${DYNAMIC_CONFIG_FILE_TEMPLATE} ${CONFIG_DIR} || true + mv ${WD}/${DYNAMIC_CONFIG_FILE_TEMPLATE} ${CONFIG_DIR} 2>/dev/null || true /sbin/resolvconf --enable-updates /sbin/resolvconf -u