diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-02-06 04:11:10 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-06 04:11:10 +0200 |
| commit | aa244309c5ff0c436cd24476367d8bc5b61bbccf (patch) | |
| tree | b8ac61261db949699c748645a8569e4b6c8d7187 /src | |
| parent | c8d325d503bf7f8fc112c51031c99cf1e8fc3e8f (diff) | |
| parent | fda4a216cb64384f270f25f26afef78e25ef562b (diff) | |
| download | vyos-1x-aa244309c5ff0c436cd24476367d8bc5b61bbccf.tar.gz vyos-1x-aa244309c5ff0c436cd24476367d8bc5b61bbccf.zip | |
Merge pull request #8 from natali-rs1985/T7069
T7069: VPP check for CPU main core
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/vpp.py | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py index 0b2d4cbe8..421556d07 100755 --- a/src/conf_mode/vpp.py +++ b/src/conf_mode/vpp.py @@ -27,7 +27,7 @@ from vyos.base import Warning from vyos.config import Config, config_dict_merge from vyos.configdep import set_dependents, call_dependents from vyos.configdict import node_changed, leaf_node_changed -from vyos.utils.cpu import get_core_count +from vyos.utils.cpu import get_core_count, get_available_cpus from vyos.ifconfig import Section from vyos.template import render from vyos.utils.boot import boot_configuration_complete @@ -303,25 +303,6 @@ def verify(config): if 'settings' not in config: raise ConfigError('"settings interface" is required but not set!') - # CPU main-core must be not included to corelist-workers - if config.get('settings').get('cpu', {}).get('main_core') and config.get( - 'settings' - ).get('cpu', {}).get('corelist_workers'): - corelist_workers = config['settings']['cpu']['corelist_workers'] - main_core = int(config['settings']['cpu']['main_core']) - - all_core_numbers = [] - for worker_range in corelist_workers: - core_numbers = worker_range.split('-') - all_core_numbers.extend( - range(int(core_numbers[0]), int(core_numbers[-1]) + 1) - ) - - if main_core in all_core_numbers: - raise ConfigError( - f'"cpu main-core {main_core}" must not be included in the corelist-workers!' - ) - if 'interface' not in config['settings']: raise ConfigError('"settings interface" is required but not set!') @@ -413,6 +394,30 @@ def verify(config): f'(reduce to {available_workers} or less)' ) + cpus_available = list(map(lambda el: el['cpu'], get_available_cpus())) + + if 'main_core' in config['settings']['cpu']: + main_core = int(config['settings']['cpu']['main_core']) + + if main_core not in cpus_available: + raise ConfigError(f'"cpu main-core {main_core}" is not available!') + + # CPU main-core must be not included to corelist-workers + if config.get('settings').get('cpu', {}).get('corelist_workers'): + corelist_workers = config['settings']['cpu']['corelist_workers'] + + all_core_numbers = [] + for worker_range in corelist_workers: + core_numbers = worker_range.split('-') + all_core_numbers.extend( + range(int(core_numbers[0]), int(core_numbers[-1]) + 1) + ) + + if main_core in all_core_numbers: + raise ConfigError( + f'"cpu main-core {main_core}" must not be included in the corelist-workers!' + ) + verify_memory(config['settings']) # Check if deleted interfaces are not xconnect memebrs @@ -456,7 +461,6 @@ def generate(config): def apply(config): - # Open persistent config # It is required for operations with interfaces persist_config = JSONStorage('vpp_conf') |
