diff options
author | sever-sever <v.gletenko@vyos.io> | 2021-03-23 18:11:29 +0000 |
---|---|---|
committer | sever-sever <v.gletenko@vyos.io> | 2021-03-23 18:36:15 +0000 |
commit | c106aead9e297f973e91c3ea5371790040c05de3 (patch) | |
tree | c569bad27ffa320107c745f5000aacf3a8ebef53 /python/vyos | |
parent | fa62d104dc7a860d3a2237b4431e5c5fc6ad7457 (diff) | |
download | vyos-1x-c106aead9e297f973e91c3ea5371790040c05de3.tar.gz vyos-1x-c106aead9e297f973e91c3ea5371790040c05de3.zip |
routing: T3217: Save configs of daemon per commit
Diffstat (limited to 'python/vyos')
-rw-r--r-- | python/vyos/frr.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/python/vyos/frr.py b/python/vyos/frr.py index 69c7a14ce..ec0bef37a 100644 --- a/python/vyos/frr.py +++ b/python/vyos/frr.py @@ -86,6 +86,7 @@ _frr_daemons = ['zebra', 'bgpd', 'fabricd', 'isisd', 'ospf6d', 'ospfd', 'pbrd', path_vtysh = '/usr/bin/vtysh' path_frr_reload = '/usr/lib/frr/frr-reload.py' +path_config = '/run/frr' class FrrError(Exception): @@ -207,6 +208,25 @@ def reload_configuration(config, daemon=None): return output +def save_configuration(daemon=None): + """Save FRR configuration to /run/frr/{daemon}.conf + It save configuration on each commit. + """ + if daemon and daemon not in _frr_daemons: + raise ValueError(f'The specified daemon type is not supported {repr(daemon)}') + + cmd = f"{path_vtysh} -d {daemon} -c 'show run no-header'" + output, code = util.popen(cmd, stderr=util.STDOUT) + if code: + raise OSError(code, output) + + with open(f"{path_config}/{daemon}.conf", "w") as f: + f.write(output) + config = output + + return config + + def execute(command): """ Run commands inside vtysh command: str containing commands to execute inside a vtysh session |