diff options
| author | Alexandre Derumier <aderumier@odiso.com> | 2020-12-09 16:11:18 +0100 |
|---|---|---|
| committer | Thomas Lamprecht <t.lamprecht@proxmox.com> | 2020-12-18 18:02:47 +0100 |
| commit | 9cef13e929a79fbbabcde5ce98aad80025696f0e (patch) | |
| tree | 1b66b6df773269300e37d825803b49b983f3d6cd | |
| parent | fdf22d5f6b6c1ba5e61c1222e2548f236da47a1b (diff) | |
controllers: add generate_controller_rawconfig
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
| -rw-r--r-- | PVE/Network/SDN/Controllers.pm | 19 | ||||
| -rw-r--r-- | PVE/Network/SDN/Controllers/BgpPlugin.pm | 5 | ||||
| -rw-r--r-- | PVE/Network/SDN/Controllers/EvpnPlugin.pm | 10 | ||||
| -rw-r--r-- | PVE/Network/SDN/Controllers/Plugin.pm | 6 |
4 files changed, 38 insertions, 2 deletions
diff --git a/PVE/Network/SDN/Controllers.pm b/PVE/Network/SDN/Controllers.pm index 9937755..ba67d75 100644 --- a/PVE/Network/SDN/Controllers.pm +++ b/PVE/Network/SDN/Controllers.pm @@ -147,10 +147,27 @@ sub reload_controller { } } +sub generate_controller_rawconfig { + my ($config) = @_; + + my $cfg = PVE::Network::SDN::config(); + my $controller_cfg = $cfg->{controllers}; + return if !$controller_cfg; + + my $rawconfig = ""; + foreach my $id (keys %{$controller_cfg->{ids}}) { + my $plugin_config = $controller_cfg->{ids}->{$id}; + my $plugin = PVE::Network::SDN::Controllers::Plugin->lookup($plugin_config->{type}); + $rawconfig .= $plugin->generate_controller_rawconfig($plugin_config, $config); + } + return $rawconfig; +} + sub write_controller_config { my ($config) = @_; - my $controller_cfg = PVE::Cluster::cfs_read_file('sdn/controllers.cfg'); + my $cfg = PVE::Network::SDN::config(); + my $controller_cfg = $cfg->{controllers}; return if !$controller_cfg; foreach my $id (keys %{$controller_cfg->{ids}}) { diff --git a/PVE/Network/SDN/Controllers/BgpPlugin.pm b/PVE/Network/SDN/Controllers/BgpPlugin.pm index ccc06a8..e5d8490 100644 --- a/PVE/Network/SDN/Controllers/BgpPlugin.pm +++ b/PVE/Network/SDN/Controllers/BgpPlugin.pm @@ -138,6 +138,11 @@ sub on_update_hook { } } +sub generate_controller_rawconfig { + my ($class, $plugin_config, $config) = @_; + return ""; +} + sub write_controller_config { my ($class, $plugin_config, $config) = @_; return; diff --git a/PVE/Network/SDN/Controllers/EvpnPlugin.pm b/PVE/Network/SDN/Controllers/EvpnPlugin.pm index 6927921..55828ef 100644 --- a/PVE/Network/SDN/Controllers/EvpnPlugin.pm +++ b/PVE/Network/SDN/Controllers/EvpnPlugin.pm @@ -280,7 +280,7 @@ sub generate_frr_recurse{ } } -sub write_controller_config { +sub generate_controller_rawconfig { my ($class, $plugin_config, $config) = @_; my $nodename = PVE::INotify::nodename(); @@ -312,6 +312,14 @@ sub write_controller_config { my $rawconfig = join("\n", @{$final_config}); return if !$rawconfig; + return $rawconfig; +} + +sub write_controller_config { + my ($class, $plugin_config, $config) = @_; + + my $rawconfig = $class->generate_controller_rawconfig($plugin_config, $config); + return if !$rawconfig; return if !-d "/etc/frr"; file_set_contents("/etc/frr/frr.conf", $rawconfig); diff --git a/PVE/Network/SDN/Controllers/Plugin.pm b/PVE/Network/SDN/Controllers/Plugin.pm index 0c92b17..8b5bd4f 100644 --- a/PVE/Network/SDN/Controllers/Plugin.pm +++ b/PVE/Network/SDN/Controllers/Plugin.pm @@ -87,6 +87,12 @@ sub generate_controller_vnet_config { } +sub generate_controller_rawconfig { + my ($class, $plugin_config, $config) = @_; + + die "please implement inside plugin"; +} + sub write_controller_config { my ($class, $plugin_config, $config) = @_; |
