diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py index 923ac7f..02c9b57 100755 --- a/src/conf_mode/vpp.py +++ b/src/conf_mode/vpp.py @@ -381,10 +381,19 @@ def verify(config): if 'cpu' in config['settings']: if ( 'corelist_workers' in config['settings']['cpu'] - and 'main_core' not in config['settings']['cpu'] - ): + or 'workers' in config['settings']['cpu'] + ) and 'main_core' not in config['settings']['cpu']: raise ConfigError('"cpu main-core" is required but not set!') + cpus = int(get_core_count()) + if 'workers' in config['settings']['cpu']: + # number of worker threads must be not more than + # available CPUs in the system - 2 (1 for main thread and at least 1 for system processes) + workers = int(config['settings']['cpu']['workers']) + available_workers = cpus - 2 + if workers > available_workers: + raise ConfigError(f'"cpu workers" cannot be not more than {available_workers}') + verify_memory(config['settings']) # Check if deleted interfaces are not xconnect memebrs @@ -428,6 +437,7 @@ def generate(config): def apply(config): + # Open persistent config # It is required for operations with interfaces persist_config = JSONStorage('vpp_conf')