diff options
Diffstat (limited to 'src/PVE/API2/Network/SDN.pm')
| -rw-r--r-- | src/PVE/API2/Network/SDN.pm | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/PVE/API2/Network/SDN.pm b/src/PVE/API2/Network/SDN.pm index b514803..0824410 100644 --- a/src/PVE/API2/Network/SDN.pm +++ b/src/PVE/API2/Network/SDN.pm @@ -83,13 +83,18 @@ __PACKAGE__->register_method({ }); my $create_reload_network_worker = sub { - my ($nodename) = @_; + my ($nodename, $skip_frr) = @_; + + my @command = ('pvesh', 'set', "/nodes/$nodename/network"); + if ($skip_frr) { + push(@command, '--skip_frr'); + } # FIXME: how to proxy to final node ? my $upid; print "$nodename: reloading network config\n"; run_command( - ['pvesh', 'set', "/nodes/$nodename/network"], + \@command, outfunc => sub { my $line = shift; if ($line =~ /["']?(UPID:[^\s"']+)["']?$/) { @@ -124,14 +129,18 @@ __PACKAGE__->register_method({ my $rpcenv = PVE::RPCEnvironment::get(); my $authuser = $rpcenv->get_user(); + 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 $code = sub { $rpcenv->{type} = 'priv'; # to start tasks in background PVE::Cluster::check_cfs_quorum(); my $nodelist = PVE::Cluster::get_nodelist(); for my $node (@$nodelist) { - my $pid = eval { $create_reload_network_worker->($node) }; + my $pid = eval { $create_reload_network_worker->($node, $skip_frr) }; warn $@ if $@; } |
