]> git.proxmox.com Git - pve-network.git/commitdiff
controllers: add generate_controller_rawconfig
authorAlexandre Derumier <aderumier@odiso.com>
Wed, 9 Dec 2020 15:11:18 +0000 (16:11 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 18 Dec 2020 17:02:47 +0000 (18:02 +0100)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/Network/SDN/Controllers.pm
PVE/Network/SDN/Controllers/BgpPlugin.pm
PVE/Network/SDN/Controllers/EvpnPlugin.pm
PVE/Network/SDN/Controllers/Plugin.pm

index 9937755a0807329d6a5554c9f025ee662add6d38..ba67d755969f8a41852d1d74d56f2fb2cb8f525e 100644 (file)
@@ -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}}) {
index ccc06a81b8d56d550708c0f99c6ffc29d5af174a..e5d849021c98e1fc8e6996a8a532a9618b450c5b 100644 (file)
@@ -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;
index 6927921ebac455fdea527ce9b69289d711f9410a..55828ef6a5d934ef4e2207e2dbced6958c284527 100644 (file)
@@ -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();
@@ -311,6 +311,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";
 
index 0c92b173596e12d9d85d75e1c903ac406df29abc..8b5bd4f2753f3fbd056afcb797e927f8a5c55048 100644 (file)
@@ -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) = @_;