Signed-off-by: Alexandre Derumier <aderum...@odiso.com> --- PVE/Network/SDN.pm | 17 +++++++++++++++++ PVE/Network/SDN/FaucetPlugin.pm | 11 +++++++++++ PVE/Network/SDN/FrrPlugin.pm | 18 ++++++++++++++++++ PVE/Network/SDN/Plugin.pm | 6 ++++++ 4 files changed, 52 insertions(+)
diff --git a/PVE/Network/SDN.pm b/PVE/Network/SDN.pm index 137f9f9..8e96084 100644 --- a/PVE/Network/SDN.pm +++ b/PVE/Network/SDN.pm @@ -230,6 +230,23 @@ sub generate_controller_config { return $config; } + +sub reload_controller { + + my $sdn_cfg = PVE::Cluster::cfs_read_file('sdn.cfg'); + return if !$sdn_cfg; + + foreach my $id (keys %{$sdn_cfg->{ids}}) { + my $plugin_config = $sdn_cfg->{ids}->{$id}; + my $plugin = PVE::Network::SDN::Plugin->lookup($plugin_config->{type}); + my $pd = $plugin->plugindata(); + my $role = $pd->{role}; + if ($role eq 'controller') { + $plugin->reload_controller(); + } + } +} + sub write_etc_network_config { my ($rawconfig) = @_; diff --git a/PVE/Network/SDN/FaucetPlugin.pm b/PVE/Network/SDN/FaucetPlugin.pm index 9e313c3..fe75efb 100644 --- a/PVE/Network/SDN/FaucetPlugin.pm +++ b/PVE/Network/SDN/FaucetPlugin.pm @@ -98,5 +98,16 @@ sub write_controller_config { $writefh->close(); } +sub reload_controller { + my ($class) = @_; + + my $conf_file = "/etc/faucet/faucet.yaml"; + my $bin_path = "/usr/bin/faucet"; + + if (-e $conf_file && -e $bin_path) { + PVE::Tools::run_command(['systemctl', 'reload', 'faucet']); + } +} + 1; diff --git a/PVE/Network/SDN/FrrPlugin.pm b/PVE/Network/SDN/FrrPlugin.pm index 532247a..3410844 100644 --- a/PVE/Network/SDN/FrrPlugin.pm +++ b/PVE/Network/SDN/FrrPlugin.pm @@ -290,6 +290,24 @@ sub write_controller_config { $writefh->close(); } +sub reload_controller { + my ($class) = @_; + + my $conf_file = "/etc/frr/frr.conf"; + my $bin_path = "/usr/bin/vtysh"; + + my $err = sub { + my $line = shift; + if ($line =~ /^line (\S+)/) { + print "$line \n"; + } + }; + + if (-e $conf_file && -e $bin_path) { + PVE::Tools::run_command([$bin_path, '-m', '-f', $conf_file], outfunc => {}, errfunc => $err); + } +} + 1; diff --git a/PVE/Network/SDN/Plugin.pm b/PVE/Network/SDN/Plugin.pm index 605fd06..0c6eaf0 100644 --- a/PVE/Network/SDN/Plugin.pm +++ b/PVE/Network/SDN/Plugin.pm @@ -88,6 +88,12 @@ sub write_controller_config { die "please implement inside plugin"; } +sub controller_reload { + my ($class) = @_; + + die "please implement inside plugin"; +} + sub on_delete_hook { my ($class, $sndid, $scfg) = @_; -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel