diff options
| author | khramshinr <khramshinr@gmail.com> | 2024-03-19 17:50:11 +0800 | 
|---|---|---|
| committer | khramshinr <khramshinr@gmail.com> | 2024-03-20 13:10:16 +0800 | 
| commit | 6fa72591972618f02ac1c66c084a99e006ce18f3 (patch) | |
| tree | c2ede40bce1a220e8625322e09f9e6eeeb02da17 /python | |
| parent | 4912dfbfa5ef52eb8a6c7d54bb23e0092dffb4f2 (diff) | |
| download | vyos-1x-6fa72591972618f02ac1c66c084a99e006ce18f3.tar.gz vyos-1x-6fa72591972618f02ac1c66c084a99e006ce18f3.zip | |
bgp: T6106: Valid commit error for route-reflector-client option defined in peer-group
handle vtysh bgp error
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/frr.py | 16 | 
1 files changed, 11 insertions, 5 deletions
| diff --git a/python/vyos/frr.py b/python/vyos/frr.py index a01d967e4..c3703cbb4 100644 --- a/python/vyos/frr.py +++ b/python/vyos/frr.py @@ -68,6 +68,7 @@ Apply the new configuration:  import tempfile  import re +from vyos import ConfigError  from vyos.utils.permission import chown  from vyos.utils.process import cmd  from vyos.utils.process import popen @@ -95,6 +96,7 @@ path_config = '/run/frr'  default_add_before = r'(ip prefix-list .*|route-map .*|line vty|end)' +  class FrrError(Exception):      pass @@ -210,13 +212,12 @@ def reload_configuration(config, daemon=None):      LOG.debug(f'reload_configuration: Executing command against frr-reload: "{cmd}"')      output, code = popen(cmd, stderr=STDOUT)      f.close() +      for i, e in enumerate(output.split('\n')):          LOG.debug(f'frr-reload output: {i:3} {e}') +      if code == 1: -        raise CommitError('FRR configuration failed while running commit. Please ' \ -                          'enable debugging to examine logs.\n\n\n' \ -                          'To enable debugging run: "touch /tmp/vyos.frr.debug" ' \ -                          'and "sudo systemctl stop vyos-configd"') +        raise ConfigError(output)      elif code:          raise OSError(code, output) @@ -469,17 +470,22 @@ class FRRConfig:          # https://github.com/FRRouting/frr/issues/10133          count = 0          count_max = 5 +        emsg = ''          while count < count_max:              count += 1              try:                  reload_configuration('\n'.join(self.config), daemon=daemon)                  break +            except ConfigError as e: +                emsg = str(e)              except:                  # we just need to re-try the commit of the configuration                  # for the listed FRR issues above                  pass          if count >= count_max: -            raise ConfigurationNotValid(f'Config commit retry counter ({count_max}) exceeded for {daemon} dameon!') +            if emsg: +                raise ConfigError(emsg) +            raise ConfigurationNotValid(f'Config commit retry counter ({count_max}) exceeded for {daemon} daemon!')          # Save configuration to /run/frr/config/frr.conf          save_configuration() | 
