[pve-devel] [PATCH pve-manager 1/1] api: network: default to not regenerating the frr configuration

Thomas Lamprecht t.lamprecht at proxmox.com
Mon Aug 4 16:07:37 CEST 2025


Am 04.08.25 um 15:46 schrieb Stefan Hanreich:
> Default to not regenerating the FRR configuration, unless explicitly
> requested. Otherwise applying the host network configuration would
> reload and enable the FRR service. Invert the boolean from skip to
> regenerate, since the logic is less convoluted this way.


and casually break API and reloading SDN during the upgrade, while
triggering such updates might be not the best idea to do in the first
place it would be at least good to call it out here.

FWIW, if we'd walk the full mile here we probably would keep the old
param as fallback and check the node version from the pmxcs in memory
kv store in pve-network to determine what param to send to the other
nodes.

That said, I can live with skip doing that, it is a major release
after all. Just ensure you have upgrades on your mind or, if you had,
add a note for that next time.

> 
> Signed-off-by: Stefan Hanreich <s.hanreich at proxmox.com>
> ---
>  PVE/API2/Network.pm | 7 ++++---
>  bin/pve-sdn-commit  | 4 ++--
>  2 files changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/PVE/API2/Network.pm b/PVE/API2/Network.pm
> index 93f441bab..b423e19b5 100644
> --- a/PVE/API2/Network.pm
> +++ b/PVE/API2/Network.pm
> @@ -891,10 +891,11 @@ __PACKAGE__->register_method({
>          additionalProperties => 0,
>          properties => {
>              node => get_standard_option('pve-node'),
> -            skip_frr => {
> +            'regenerate-frr' => {
>                  type => 'boolean',
>                  description => 'Whether FRR config generation should get skipped or not.',
>                  optional => 1,
> +                default => 0,
>              },
>          },
>      },
> @@ -910,7 +911,7 @@ __PACKAGE__->register_method({
>          my $current_config_file = "/etc/network/interfaces";
>          my $new_config_file = "/etc/network/interfaces.new";
>  
> -        my $skip_frr = extract_param($param, 'skip_frr');
> +        my $regenerate_frr = extract_param($param, 'regenerate-frr');
>  
>          assert_ifupdown2_installed();
>  
> @@ -931,7 +932,7 @@ __PACKAGE__->register_method({
>              };
>              PVE::Tools::run_command(['ifreload', '-a'], errfunc => $err);
>  
> -            if ($have_sdn && !$skip_frr) {
> +            if ($have_sdn && $regenerate_frr) {
>                  PVE::Network::SDN::generate_frr_config(1);
>              }
>          };
> diff --git a/bin/pve-sdn-commit b/bin/pve-sdn-commit
> index 492963baf..6eeba301c 100644
> --- a/bin/pve-sdn-commit
> +++ b/bin/pve-sdn-commit
> @@ -83,7 +83,7 @@ my $previous_config_has_frr = PVE::Network::SDN::running_config_has_frr();
>  PVE::Network::SDN::commit_config();
>  
>  my $new_config_has_frr = PVE::Network::SDN::running_config_has_frr();
> -my $skip_frr = !($previous_config_has_frr || $new_config_has_frr);
> +my $regenerate_frr = ($previous_config_has_frr || $new_config_has_frr);
>  
>  PVE::Network::SDN::generate_etc_network_config();
>  PVE::Network::SDN::generate_dhcp_config();
> @@ -97,6 +97,6 @@ my $err = sub {
>  
>  PVE::Tools::run_command(['ifreload', '-a'], errfunc => $err);
>  
> -PVE::Network::SDN::generate_frr_config(1) if !$skip_frr;
> +PVE::Network::SDN::generate_frr_config(1) if $regenerate_frr;
>  
>  exit 0;





More information about the pve-devel mailing list