summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbl0way <william.blonay@gmail.com>2025-10-24 13:19:16 +0200
committerChristian Breunig <christian@breunig.cc>2025-10-29 08:15:28 +0100
commitb0ffe03b917c894f684876facaacb48cdbdba690 (patch)
tree0ee905a2c96a3035808ac7ed00b7e15e38ec7c2f /src
parent761968da584199e74a23d6381b3f6b400906083f (diff)
downloadvyos-1x-b0ffe03b917c894f684876facaacb48cdbdba690.tar.gz
vyos-1x-b0ffe03b917c894f684876facaacb48cdbdba690.zip
frr: T7896: Configure frr profile with 'system frr profile' command
Co-authored-by: Christian Breunig <christian@breunig.cc>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/system_frr.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/conf_mode/system_frr.py b/src/conf_mode/system_frr.py
index 06af37ad8..5365ac294 100755
--- a/src/conf_mode/system_frr.py
+++ b/src/conf_mode/system_frr.py
@@ -19,12 +19,15 @@ from sys import exit
from vyos import ConfigError
from vyos.base import Warning
from vyos.config import Config
+from vyos.frrender import FRRender
+from vyos.frrender import get_frrender_dict
from vyos.logger import syslog
from vyos.template import render_to_string
from vyos.utils.boot import boot_configuration_complete
from vyos.utils.file import read_file
from vyos.utils.file import write_file
from vyos.utils.process import call
+from vyos.utils.process import is_systemd_service_running
from vyos import airbag
airbag.enable()
@@ -42,7 +45,8 @@ def get_config(config=None):
frr_config = conf.get_config_dict(base, key_mangling=('-', '_'),
get_first_key=True,
with_recursive_defaults=True)
-
+ # get FRR configuration
+ frr_config['frr_dict'] = get_frrender_dict(conf)
return frr_config
def verify(frr_config):
@@ -60,7 +64,17 @@ def generate(frr_config):
write_file(config_file, daemons_config_new)
frr_config['config_file_changed'] = True
+ # profile could be automatically generated by frr in frr.conf
+ # and needs to be updated as it is taking precedence
+ if 'frr_dict' in frr_config and not is_systemd_service_running('vyos-configd.service'):
+ FRRender().generate(frr_config['frr_dict'])
+ return None
+
def apply(frr_config):
+ # applying the profile configuration if necessary
+ if 'frr_dict' in frr_config and not is_systemd_service_running('vyos-configd.service'):
+ FRRender().apply()
+
# display warning to user
if boot_configuration_complete() and frr_config.get('config_file_changed'):
# Since FRR restart is not safe thing, better to give