diff options
author | Christian Breunig <christian@breunig.cc> | 2023-07-03 20:46:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-03 20:46:55 +0200 |
commit | b9e0cbfa934317f572e0f16bb2a195a3c4a6876e (patch) | |
tree | 89f36fda3d87cd26986c31c0d90282a6cbbc257e /src/conf_mode/vpp.py | |
parent | 4599a9e35b8944a56e82d990957da27444b7814c (diff) | |
parent | f6036065083c76fa6ba0aed67ba7c07e5e53c07b (diff) | |
download | vyos-1x-b9e0cbfa934317f572e0f16bb2a195a3c4a6876e.tar.gz vyos-1x-b9e0cbfa934317f572e0f16bb2a195a3c4a6876e.zip |
Merge pull request #2071 from zdc/T1797-sagitta
VPP: T1797: Added interfaces reinitialization
Diffstat (limited to 'src/conf_mode/vpp.py')
-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__': |