From 54e49943b636eab9453189381e93c68050c1e423 Mon Sep 17 00:00:00 2001 From: Gris Ge Date: Sun, 28 Jun 2020 20:05:08 +0800 Subject: [PATCH] dns: Fix remove dns config Current code raise NmstateVerificationError when user not providing the full state: DNS.CONFIG: {DNS.SERVER: [], DNS.SEARCH: []} Now supporting remove static DNS config via: * DNS.CONFIG: {} * DNS.CONFIG: {DNS.SERVER: []} * DNS.CONFIG: {DNS.SEARCH: []} * DNS.CONFIG: {DNS.SERVER: [], DNS.SEARCH: []} Test case updated for this. Signed-off-by: Gris Ge --- libnmstate/dns.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libnmstate/dns.py b/libnmstate/dns.py index 3196fc4..1ec0d81 100644 --- a/libnmstate/dns.py +++ b/libnmstate/dns.py @@ -33,14 +33,16 @@ class DnsState: def __init__(self, des_dns_state, cur_dns_state): self._config_changed = False - if des_dns_state: + if des_dns_state is None or des_dns_state.get(DNS.CONFIG) is None: + # Use current config if DNS.KEY not defined or DNS.CONFIG not + # defined. + self._dns_state = cur_dns_state or {} + else: self._dns_state = des_dns_state self._validate() self._config_changed = _is_dns_config_changed( des_dns_state, cur_dns_state ) - else: - self._dns_state = cur_dns_state or {} self._cur_dns_state = deepcopy(cur_dns_state) if cur_dns_state else {} @property @@ -179,7 +181,9 @@ class DnsState: def verify(self, cur_dns_state): cur_dns = DnsState(des_dns_state=None, cur_dns_state=cur_dns_state,) - if self.config != cur_dns.config: + if self.config.get(DNS.SERVER) != cur_dns.config.get( + DNS.SERVER + ) or self.config.get(DNS.SEARCH) != cur_dns.config.get(DNS.SEARCH): raise NmstateVerificationError( format_desired_current_state_diff( {DNS.KEY: self.config}, {DNS.KEY: cur_dns.config}, -- 2.27.0