diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2024-05-16 16:25:18 +0000 | 
|---|---|---|
| committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2024-05-16 16:25:18 +0000 | 
| commit | c4cee2b7c51567350943a0387068f57d04456d12 (patch) | |
| tree | 5144ae36f6d79d41ef2e0dbe5ed969f16b6d3971 | |
| parent | 2a07aaed70f6c9dda0e95d2b01d3ba922c572716 (diff) | |
| download | vyos-1x-c4cee2b7c51567350943a0387068f57d04456d12.tar.gz vyos-1x-c4cee2b7c51567350943a0387068f57d04456d12.zip | |
T6351: CGNAT add verification if the pool exists
Add verification if the external/internal pools are exists before we
can use them in the source and translation rules
| -rwxr-xr-x | src/conf_mode/nat_cgnat.py | 13 | 
1 files changed, 13 insertions, 0 deletions
| diff --git a/src/conf_mode/nat_cgnat.py b/src/conf_mode/nat_cgnat.py index f41d66c66..9c5824512 100755 --- a/src/conf_mode/nat_cgnat.py +++ b/src/conf_mode/nat_cgnat.py @@ -203,6 +203,11 @@ def verify(config):                      f'Range for "{pool} pool {pool_name}" must be defined!'                  ) +    external_pools_query = "keys(pool.external)" +    external_pools: list = jmespath.search(external_pools_query, config) +    internal_pools_query = "keys(pool.internal)" +    internal_pools: list = jmespath.search(internal_pools_query, config) +      for rule, rule_config in config['rule'].items():          if 'source' not in rule_config:              raise ConfigError(f'Rule "{rule}" source pool must be defined!') @@ -212,6 +217,14 @@ def verify(config):          if 'translation' not in rule_config:              raise ConfigError(f'Rule "{rule}" translation pool must be defined!') +        internal_pool = rule_config['source']['pool'] +        if internal_pool not in internal_pools: +            raise ConfigError(f'Internal pool "{internal_pool}" does not exist!') + +        external_pool = rule_config['translation']['pool'] +        if external_pool not in external_pools: +            raise ConfigError(f'External pool "{external_pool}" does not exist!') +  def generate(config):      if not config: | 
