diff options
| author | zsdc <taras@vyos.io> | 2023-06-30 21:44:51 +0300 | 
|---|---|---|
| committer | zsdc <taras@vyos.io> | 2023-07-03 18:18:53 +0300 | 
| commit | f6036065083c76fa6ba0aed67ba7c07e5e53c07b (patch) | |
| tree | 89f36fda3d87cd26986c31c0d90282a6cbbc257e /src | |
| parent | 4599a9e35b8944a56e82d990957da27444b7814c (diff) | |
| download | vyos-1x-f6036065083c76fa6ba0aed67ba7c07e5e53c07b.tar.gz vyos-1x-f6036065083c76fa6ba0aed67ba7c07e5e53c07b.zip | |
VPP: T1797: Added interfaces reinitialization
After an interface is added/removed from VPP, it will be reinitialized, which
allows reconfiguring IP addresses on it.
Also modified VPP load priority to start before interfaces, and avoid
reconfiguration during boot.
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/vpp.py | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py index 62ec4c162..dc13f4e60 100755 --- a/src/conf_mode/vpp.py +++ b/src/conf_mode/vpp.py @@ -21,13 +21,11 @@ from pathlib import Path  from re import search as re_search, MULTILINE as re_M  from vyos.config import Config +from vyos.configdep import set_dependents, call_dependents  from vyos.configdict import dict_merge  from vyos.configdict import node_changed  from vyos.ifconfig import Section -from vyos.ifconfig import EthernetIf -from vyos.ifconfig import interface -from vyos.util import call -from vyos.util import rc_cmd +from vyos.util import call, rc_cmd, boot_configuration_complete  from vyos.template import render  from vyos.xml import defaults @@ -48,7 +46,6 @@ MIN_TOTAL_MEMORY = 6  def _get_pci_address_by_interface(iface) -> str: -    from vyos.util import rc_cmd      rc, out = rc_cmd(f'ethtool -i {iface}')      # if ethtool command was successful      if rc == 0 and out: @@ -87,6 +84,9 @@ def get_config(config=None):                  'iface_name': removed_iface,                  'iface_pci_addr': pci_address              }) +            # add an interface to a list of interfaces that need +            # to be reinitialized after the commit +            set_dependents('ethernet', conf, removed_iface)      if not conf.exists(base):          return {'removed_ifaces': removed_ifaces} @@ -107,6 +107,9 @@ def get_config(config=None):          for iface, iface_config in config['interface'].items():              default_values_iface = defaults(base + ['interface'])              config['interface'][iface] = dict_merge(default_values_iface, config['interface'][iface]) +            # add an interface to a list of interfaces that need +            # to be reinitialized after the commit +            set_dependents('ethernet', conf, iface)          # Get PCI address auto          for iface, iface_config in config['interface'].items(): @@ -186,9 +189,9 @@ def apply(config):              if iface not in Section.interfaces():                  vpp_control.lcp_pair_add(iface, iface) -        # update interface config -        #e = EthernetIf(iface) -        #e.update(config['other_interfaces'][iface]) +    # reinitialize interfaces, but not during the first boot +    if boot_configuration_complete(): +        call_dependents()  if __name__ == '__main__': | 
