summaryrefslogtreecommitdiff
path: root/src/PVE/API2/Network/SDN.pm
diff options
context:
space:
mode:
Diffstat (limited to 'src/PVE/API2/Network/SDN.pm')
-rw-r--r--src/PVE/API2/Network/SDN.pm15
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 $@;
}