summaryrefslogtreecommitdiff
path: root/src/migration-scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/migration-scripts')
-rw-r--r--src/migration-scripts/vpp/5-to-627
1 files changed, 27 insertions, 0 deletions
diff --git a/src/migration-scripts/vpp/5-to-6 b/src/migration-scripts/vpp/5-to-6
index 18f0f70d2..23b2d4eaa 100644
--- a/src/migration-scripts/vpp/5-to-6
+++ b/src/migration-scripts/vpp/5-to-6
@@ -43,6 +43,8 @@
#
# Move ipip interface from vpp section to 'interfaces vpp ipip' (T8314)
#
+# Migrate loopback interface from vpp section to 'interfaces vpp loopback' (T8324)
+#
from vyos.configtree import ConfigTree
@@ -437,6 +439,30 @@ def _migrate_vpp_ipip_interface(config: ConfigTree) -> None:
config.delete(['vpp', 'interfaces'])
+def _migrate_vpp_loopback_interface(config: ConfigTree) -> None:
+ base = ['vpp', 'interfaces', 'loopback']
+ new_base = ['interfaces', 'vpp', 'loopback']
+ kernel_interface_base = ['vpp', 'kernel-interfaces']
+
+ if not config.exists(base):
+ return
+
+ config.set(new_base)
+
+ for ifname in config.list_nodes(base):
+ _migrate_interface(config, 'loopback', ifname)
+
+ _migrate_members_bridge(config, ifname)
+
+ config.delete(base)
+
+ if config.exists(kernel_interface_base) and len(config.list_nodes(kernel_interface_base)) == 0:
+ config.delete(['vpp', 'kernel-interfaces'])
+
+ if len(config.list_nodes(['vpp', 'interfaces'])) == 0:
+ config.delete(['vpp', 'interfaces'])
+
+
def migrate(config: ConfigTree) -> None:
if not config.exists(['vpp']):
# Nothing to do
@@ -455,3 +481,4 @@ def migrate(config: ConfigTree) -> None:
_migrate_vpp_bonding_interface(config)
_migrate_vpp_vxlan_interface(config)
_migrate_vpp_ipip_interface(config)
+ _migrate_vpp_loopback_interface(config)