summaryrefslogtreecommitdiff
path: root/src/migration-scripts/vpp/7-to-8
diff options
context:
space:
mode:
Diffstat (limited to 'src/migration-scripts/vpp/7-to-8')
-rw-r--r--src/migration-scripts/vpp/7-to-8259
1 files changed, 0 insertions, 259 deletions
diff --git a/src/migration-scripts/vpp/7-to-8 b/src/migration-scripts/vpp/7-to-8
deleted file mode 100644
index 22d5e6d31..000000000
--- a/src/migration-scripts/vpp/7-to-8
+++ /dev/null
@@ -1,259 +0,0 @@
-# Copyright VyOS maintainers and contributors <maintainers@vyos.io>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library. If not, see <http://www.gnu.org/licenses/>.
-#
-# Rename `vpp settings logging default-log-level` to
-# `vpp settings logging default-level` (T8255)
-#
-# Move 'vpp nat44' and 'vpp settings nat44' to 'vpp nat nat44'.
-# Drop settings for nat workers (T8254)
-#
-# Delete 'ipsec' node and all settings and replace it with single 'ipsec-acceleration' flag (T8262)
-#
-# Unify CPU settings into a single 'cpu-cores' node under 'resource-allocation' (T8268)
-#
-# Convert `vpp settings interface <name> rx-mode` and `vpp kernel-interfaces <name> rx-mode`
-# to `vpp settings interfaces-rx-mode` by choose the worst value from all nodes (T8266)
-#
-# Get rid of 'dpdk-options' section for 'num-*' parameters:
-# - `vpp settings interface <ethN> dpdk-options num-*`
-# - `vpp settings interface <ethN> num-*`
-# and delete `vpp settings interface <ethN> dpdk-options promisc` (T8274)
-#
-# Migrate all resource settings into 'resource-allocation' section (T8261)
-#
-
-from vyos.configtree import ConfigTree
-
-def _migrate_vpp_unix_settings(config: ConfigTree) -> None:
- base_path = ['vpp', 'settings']
- old_base_path = base_path + ['unix']
- old_path = old_base_path + ['poll-sleep-usec']
- new_path = base_path + ['poll-sleep-usec']
-
- if config.exists(old_path):
- poll_sleep_usec = config.return_value(old_path)
- config.set(new_path, value=poll_sleep_usec)
- config.delete(old_base_path)
-
-def _migrate_vpp_log(config: ConfigTree) -> None:
- base = ['vpp', 'settings', 'logging']
- if config.exists(base + ['default-log-level']):
- config.rename(base + ['default-log-level'], 'default-level')
-
-def _migrate_vpp_nat44(config: ConfigTree) -> None:
- base_path = ['vpp', 'nat44']
- new_base_path = ['vpp', 'nat', 'nat44']
- settings_path = ['vpp', 'settings', 'nat44']
-
- if not config.exists(base_path):
- # Nothing to do
- return
-
- if not config.exists(['vpp', 'nat']):
- config.set(['vpp', 'nat'])
-
- # copy "vpp nat44" to "vpp nat nat44"
- config.copy(base_path, new_base_path)
- config.delete(base_path)
-
- # move 'vpp settings nat44' to 'vpp nat nat44'
- if config.exists(settings_path):
- if config.exists(settings_path + ['session-limit']):
- session_limit = config.return_value(settings_path + ['session-limit'])
- config.set(new_base_path + ['session-limit'], value=session_limit)
- if config.exists(settings_path + ['timeout']):
- config.copy(settings_path + ['timeout'], new_base_path + ['timeout'])
- config.delete(settings_path)
-
-def _migrate_vpp_ipsec(config: ConfigTree) -> None:
- base = ['vpp', 'settings']
-
- if config.exists(base + ['ipsec']):
- config.set(base + ['ipsec-acceleration'])
- config.delete(base + ['ipsec'])
-
-def _migrate_vpp_cpu(config: ConfigTree) -> None:
- settings_path = ['vpp', 'settings']
- cpu_path = settings_path + ['cpu']
-
- if not config.exists(cpu_path):
- # Nothing to do
- return
-
- # get number of configured workers
- workers = 0
-
- if config.exists(cpu_path + ['workers']):
- workers += int(config.return_value(cpu_path + ['workers']))
- # add main-core to total workers
- workers += 1
-
- if config.exists(cpu_path + ['corelist-workers']):
- def _count_range(item: str) -> int:
- if '-' in item:
- start, end = map(int, item.split('-'))
- return end - start + 1
- return 1
-
- tmp = config.return_values(cpu_path + ['corelist-workers'])
- workers = sum(_count_range(item) for item in tmp) + 1 # + main core
-
- # set 'resource-allocation cpu-cores'
- if workers:
- config.set(settings_path + ['resource-allocation', 'cpu-cores'], value=str(workers))
-
- config.delete(cpu_path)
-
-
-def _migrate_vpp_interface_rx_mode(config: ConfigTree) -> None:
- # Per-interface rx-mode commands
- external_interface_path = ['vpp', 'settings', 'interface']
- kernel_interface_path = ['vpp', 'kernel-interfaces']
-
- # New global interface rx-mode command
- new_rx_mode_path = ['vpp', 'settings', 'interface-rx-mode']
-
- def _iter_by_rx_modes(base_path: list):
- if config.exists(base_path):
- for iface_name in config.list_nodes(base_path):
- rx_mode_path = base_path + [iface_name, 'rx-mode']
- if config.exists(rx_mode_path):
- rx_mode = config.return_value(rx_mode_path)
- yield rx_mode, rx_mode_path
-
- rx_modes = set()
-
- def _collect_rx_modes(base_path: list):
- for rx_mode, _ in _iter_by_rx_modes(base_path):
- rx_modes.add(rx_mode)
-
- _collect_rx_modes(external_interface_path)
- _collect_rx_modes(kernel_interface_path)
-
- if not rx_modes:
- return
-
- if 'interrupt' in rx_modes:
- rx_mode = 'interrupt'
- elif 'adaptive' in rx_modes:
- rx_mode = 'adaptive'
- else:
- rx_mode = 'polling'
-
- config.set(new_rx_mode_path, value=rx_mode)
-
- def _delete_rx_modes(base_path: list):
- for _, rx_mode_path in _iter_by_rx_modes(base_path):
- config.delete(rx_mode_path)
-
- _delete_rx_modes(external_interface_path)
- _delete_rx_modes(kernel_interface_path)
-
-
-def _migrate_vpp_dpdk_options(config: ConfigTree) -> None:
- base_path = ['vpp', 'settings', 'interface']
- params = ['num-rx-desc', 'num-rx-queues', 'num-tx-desc', 'num-tx-queues']
-
- if not config.exists(base_path):
- return
-
- for iface_name in config.list_nodes(base_path):
- iface_path = base_path + [iface_name]
- dpdk_path = iface_path + ['dpdk-options']
-
- if config.exists(dpdk_path):
- for param in params:
- param_path = dpdk_path + [param]
- new_param_path = iface_path + [param]
-
- if config.exists(param_path):
- # Move `vpp settings interface <iface_name> dpdk-options num-*`
- # to `vpp settings interface <iface_name> num-*`
- config.copy(param_path, new_param_path)
- config.delete(param_path)
-
- # Delete `vpp settings interface <iface_name> dpdk-options promisc`
- promisc_path = dpdk_path + ['promisc']
- if config.exists(promisc_path):
- config.delete(promisc_path)
-
-
-def _migrate_vpp_resources(config: ConfigTree) -> None:
- base = ['vpp', 'settings']
- new_base = ['vpp', 'settings', 'resource-allocation']
-
- if not config.exists(new_base):
- config.set(new_base)
-
- if config.exists(base + ['buffers']):
- # copy "settings buffers" to "settings resource-allocation buffers"
- config.copy(base + ['buffers'], new_base + ['buffers'])
- config.delete(base + ['buffers'])
-
- if config.exists(base + ['memory']):
- # copy "settings memory" to "settings resource-allocation memory"
- config.copy(base + ['memory'], new_base + ['memory'])
- config.delete(base + ['memory'])
-
- if config.exists(base + ['statseg']):
- # copy "settings statseg" to "settings resource-allocation memory stats"
- if not config.exists(new_base + ['memory']):
- config.set(new_base + ['memory'])
- config.copy(base + ['statseg'], new_base + ['memory', 'stats'])
- config.delete(base + ['statseg'])
-
- if config.exists(base + ['ipv6']):
- # copy "settings ipv6" to "settings resource-allocation ipv6"
- config.copy(base + ['ipv6'], new_base + ['ipv6'])
- config.delete(base + ['ipv6'])
-
- if config.exists(base + ['lcp']):
- # move "settings lcp ignore-kernel-routes" to "settings resource-allocation ignore-kernel-routes"
- # and remove "settings lcp netlink" node
- if config.exists(base + ['lcp', 'ignore-kernel-routes']):
- config.set(new_base + ['ignore-kernel-routes'])
- config.delete(base + ['lcp'])
-
- if config.exists(base + ['l2learn']):
- # move "settings l2learn limit" to "settings resource-allocation mac-limit"
- if config.exists(base + ['l2learn', 'limit']):
- tmp = config.return_value(base + ['l2learn', 'limit'])
- config.set(new_base + ['mac-limit'], value=tmp)
- config.delete(base + ['l2learn'])
-
- if config.exists(base + ['physmem']):
- # move "settings physmem max-size" to "settings resource-allocation memory physmem-max-size"
- if config.exists(base + ['physmem', 'max-size']):
- tmp = config.return_value(base + ['physmem', 'max-size'])
- config.set(new_base + ['memory', 'physmem-max-size'], value=tmp)
- config.delete(base + ['physmem'])
-
- if len(config.list_nodes(new_base)) == 0:
- config.delete(new_base)
-
-
-def migrate(config: ConfigTree) -> None:
- if not config.exists(['vpp']):
- # Nothing to do
- return
-
- _migrate_vpp_unix_settings(config)
- _migrate_vpp_log(config)
- _migrate_vpp_nat44(config)
- _migrate_vpp_ipsec(config)
- _migrate_vpp_cpu(config)
- _migrate_vpp_interface_rx_mode(config)
- _migrate_vpp_dpdk_options(config)
- _migrate_vpp_resources(config)