summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorsever-sever <v.gletenko@vyos.io>2021-03-23 18:11:29 +0000
committersever-sever <v.gletenko@vyos.io>2021-03-23 18:36:15 +0000
commitc106aead9e297f973e91c3ea5371790040c05de3 (patch)
treec569bad27ffa320107c745f5000aacf3a8ebef53 /python
parentfa62d104dc7a860d3a2237b4431e5c5fc6ad7457 (diff)
downloadvyos-1x-c106aead9e297f973e91c3ea5371790040c05de3.tar.gz
vyos-1x-c106aead9e297f973e91c3ea5371790040c05de3.zip
routing: T3217: Save configs of daemon per commit
Diffstat (limited to 'python')
-rw-r--r--python/vyos/frr.py20
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