diff options
| -rw-r--r-- | python/vyos/configdict.py | 38 | ||||
| -rwxr-xr-x | src/conf_mode/interfaces-wireless.py | 5 | 
2 files changed, 27 insertions, 16 deletions
| diff --git a/python/vyos/configdict.py b/python/vyos/configdict.py index 5c6836e97..8308f0e9b 100644 --- a/python/vyos/configdict.py +++ b/python/vyos/configdict.py @@ -368,9 +368,11 @@ def get_interface_dict(config, base, ifname=''):              del default_values['dhcpv6_options']      # We have gathered the dict representation of the CLI, but there are -    # default options which we need to update into the dictionary -    # retrived. -    dict = dict_merge(default_values, dict) +    # default options which we need to update into the dictionary retrived. +    # But we should only add them when interface is not deleted - as this might +    # confuse parsers +    if 'deleted' not in dict: +        dict = dict_merge(default_values, dict)      # XXX: T2665: blend in proper DHCPv6-PD default values      dict = T2665_set_dhcpv6pd_defaults(dict) @@ -423,9 +425,12 @@ def get_interface_dict(config, base, ifname=''):          if not 'dhcpv6_options' in vif_config:              del default_vif_values['dhcpv6_options'] -        dict['vif'][vif] = dict_merge(default_vif_values, vif_config) -        # XXX: T2665: blend in proper DHCPv6-PD default values -        dict['vif'][vif] = T2665_set_dhcpv6pd_defaults(dict['vif'][vif]) +        # Only add defaults if interface is not about to be deleted - this is +        # to keep a cleaner config dict. +        if 'deleted' not in dict: +            dict['vif'][vif] = dict_merge(default_vif_values, vif_config) +            # XXX: T2665: blend in proper DHCPv6-PD default values +            dict['vif'][vif] = T2665_set_dhcpv6pd_defaults(dict['vif'][vif])          # Check if we are a member of a bridge device          bridge = is_member(config, f'{ifname}.{vif}', 'bridge') @@ -441,10 +446,12 @@ def get_interface_dict(config, base, ifname=''):          if not 'dhcpv6_options' in vif_s_config:              del default_vif_s_values['dhcpv6_options'] -        dict['vif_s'][vif_s] = dict_merge(default_vif_s_values, vif_s_config) -        # XXX: T2665: blend in proper DHCPv6-PD default values -        dict['vif_s'][vif_s] = T2665_set_dhcpv6pd_defaults( -            dict['vif_s'][vif_s]) +        # Only add defaults if interface is not about to be deleted - this is +        # to keep a cleaner config dict. +        if 'deleted' not in dict: +            dict['vif_s'][vif_s] = dict_merge(default_vif_s_values, vif_s_config) +            # XXX: T2665: blend in proper DHCPv6-PD default values +            dict['vif_s'][vif_s] = T2665_set_dhcpv6pd_defaults(dict['vif_s'][vif_s])          # Check if we are a member of a bridge device          bridge = is_member(config, f'{ifname}.{vif_s}', 'bridge') @@ -458,11 +465,14 @@ def get_interface_dict(config, base, ifname=''):              if not 'dhcpv6_options' in vif_c_config:                  del default_vif_c_values['dhcpv6_options'] -            dict['vif_s'][vif_s]['vif_c'][vif_c] = dict_merge( +            # Only add defaults if interface is not about to be deleted - this is +            # to keep a cleaner config dict. +            if 'deleted' not in dict: +                dict['vif_s'][vif_s]['vif_c'][vif_c] = dict_merge(                      default_vif_c_values, vif_c_config) -            # XXX: T2665: blend in proper DHCPv6-PD default values -            dict['vif_s'][vif_s]['vif_c'][vif_c] = T2665_set_dhcpv6pd_defaults( -                dict['vif_s'][vif_s]['vif_c'][vif_c]) +                # XXX: T2665: blend in proper DHCPv6-PD default values +                dict['vif_s'][vif_s]['vif_c'][vif_c] = T2665_set_dhcpv6pd_defaults( +                    dict['vif_s'][vif_s]['vif_c'][vif_c])              # Check if we are a member of a bridge device              bridge = is_member(config, f'{ifname}.{vif_s}.{vif_c}', 'bridge') diff --git a/src/conf_mode/interfaces-wireless.py b/src/conf_mode/interfaces-wireless.py index 7b3de6e8a..af35b5f03 100755 --- a/src/conf_mode/interfaces-wireless.py +++ b/src/conf_mode/interfaces-wireless.py @@ -82,11 +82,12 @@ def get_config(config=None):      tmp = conf.get_config_dict([], key_mangling=('-', '_'), get_first_key=True)      if not (dict_search('security.wpa.passphrase', tmp) or              dict_search('security.wpa.radius', tmp)): -        del wifi['security']['wpa'] +        if 'deleted' not in wifi: +            del wifi['security']['wpa']      # defaults include RADIUS server specifics per TAG node which need to be      # added to individual RADIUS servers instead - so we can simply delete them -    if dict_search('security.wpa.radius.server.port', wifi): +    if dict_search('security.wpa.radius.server.port', wifi) != None:          del wifi['security']['wpa']['radius']['server']['port']          if not len(wifi['security']['wpa']['radius']['server']):              del wifi['security']['wpa']['radius'] | 
