summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Goller <g.goller@proxmox.com>2025-07-23 17:49:34 +0200
committerThomas Lamprecht <t.lamprecht@proxmox.com>2025-07-23 18:43:21 +0200
commit7ca344383c237e8946cb73c3f9d3804608461e16 (patch)
tree64f37c2b847143afdb5ac492ee7f9dfe5eefe087
parent32cac45c9b369921339a418ee76d44833110bf63 (diff)
frr: early exit on apply when frr is not installed
When frr isn't installed (happens e.g. on pve8 to 9 update) then the SDN and Networking "Apply Configuration" task will throw an error because it can't access the frr daemons file to check if the daemons are enabled. In order to fix this, check if the frr config file exists before continuing with the frr config generation. Also make the "daemons file does not exist" error nicer. Signed-off-by: Gabriel Goller <g.goller@proxmox.com> Link: https://lore.proxmox.com/20250723154934.928349-1-g.goller@proxmox.com [TL: switch to checking just for /etc/frr and perltidy] Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
-rw-r--r--src/PVE/Network/SDN.pm5
-rw-r--r--src/PVE/Network/SDN/Frr.pm3
2 files changed, 7 insertions, 1 deletions
diff --git a/src/PVE/Network/SDN.pm b/src/PVE/Network/SDN.pm
index 66665a4..0e7d1df 100644
--- a/src/PVE/Network/SDN.pm
+++ b/src/PVE/Network/SDN.pm
@@ -355,6 +355,11 @@ sub get_frr_daemon_status {
sub generate_frr_config {
my ($apply) = @_;
+ if (!-d '/etc/frr') {
+ print "frr is not installed, not generating any frr configuration\n";
+ return;
+ }
+
my $running_config = PVE::Network::SDN::running_config();
my $fabric_config = PVE::Network::SDN::Fabrics::config(1);
diff --git a/src/PVE/Network/SDN/Frr.pm b/src/PVE/Network/SDN/Frr.pm
index 52fa456..b548e7b 100644
--- a/src/PVE/Network/SDN/Frr.pm
+++ b/src/PVE/Network/SDN/Frr.pm
@@ -130,7 +130,8 @@ sub set_daemon_status {
my ($daemon_status, $set_default) = @_;
my $daemons_file = "/etc/frr/daemons";
- die "daemons file does not exist" if !-e $daemons_file;
+ die "/etc/frr/daemons file does not exist; is the frr package installed?\n"
+ if !-e $daemons_file;
for my $daemon (keys %$daemon_status) {
die "$daemon is not SDN managed" if !defined $SDN_DAEMONS_DEFAULT->{$daemon};