From: Stefan Hanreich <s.hanreich@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
Gabriel Goller <g.goller@proxmox.com>
Subject: Re: [pve-devel] [PATCH network] frr: early exit on apply when frr is not installed
Date: Wed, 23 Jul 2025 18:26:30 +0200 [thread overview]
Message-ID: <03272d0d-e472-4188-b8a0-4d408dbf89f3@proxmox.com> (raw)
In-Reply-To: <20250723154934.928349-1-g.goller@proxmox.com>
On 7/23/25 17:49, Gabriel Goller wrote:
> 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>
> ---
> src/PVE/Network/SDN.pm | 5 +++++
> src/PVE/Network/SDN/Frr.pm | 4 ++--
> 2 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/PVE/Network/SDN.pm b/src/PVE/Network/SDN.pm
> index 66665a409305..d2ba31283a57 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 (!-e $PVE::Network::SDN::Frr::FRR_CONFIG_FILE) {
> + print "frr is not installed, not generating any frr configuration\n";
> + return;
> + }
> +
The old code checked for the existence of /etc/frr [1] - maybe we should
keep it like that?
[1]
https://git.proxmox.com/?p=pve-network.git;a=blob;f=src/PVE/Network/SDN/Controllers/EvpnPlugin.pm;h=5b1a9aa73c8048bab21d9087d1ba4715f4d2425a;hb=8f4f5d2074989cf814d2f2312360239377c495f5#l612
> 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 52fa456e2181..451ce1d87212 100644
> --- a/src/PVE/Network/SDN/Frr.pm
> +++ b/src/PVE/Network/SDN/Frr.pm
> @@ -44,7 +44,7 @@ sub read_local_frr_config {
> }
> }
>
> -my $FRR_CONFIG_FILE = "/etc/frr/frr.conf";
> +our $FRR_CONFIG_FILE = "/etc/frr/frr.conf";
>
> =head3 apply()
>
> @@ -130,7 +130,7 @@ 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};
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2025-07-23 16:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-23 15:49 Gabriel Goller
2025-07-23 16:26 ` Stefan Hanreich [this message]
2025-07-23 16:28 ` Thomas Lamprecht
2025-07-23 16:46 ` [pve-devel] applied: " Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=03272d0d-e472-4188-b8a0-4d408dbf89f3@proxmox.com \
--to=s.hanreich@proxmox.com \
--cc=g.goller@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.