From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 59B4D6AD5A for ; Wed, 9 Dec 2020 16:12:01 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5001412F57 for ; Wed, 9 Dec 2020 16:11:31 +0100 (CET) Received: from kvmformation1.odiso.net (globalOdiso.M6Lille.odiso.net [89.248.211.242]) by firstgate.proxmox.com (Proxmox) with ESMTP id 8B35E12F35 for ; Wed, 9 Dec 2020 16:11:28 +0100 (CET) Received: by kvmformation1.odiso.net (Postfix, from userid 0) id 6BA01BF8A99; Wed, 9 Dec 2020 16:11:20 +0100 (CET) From: Alexandre Derumier To: pve-devel@lists.proxmox.com Date: Wed, 9 Dec 2020 16:11:18 +0100 Message-Id: <20201209151119.3620405-3-aderumier@odiso.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201209151119.3620405-1-aderumier@odiso.com> References: <20201209151119.3620405-1-aderumier@odiso.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 1 AWL -0.203 Adjusted score from AWL reputation of From: address HEADER_FROM_DIFFERENT_DOMAINS 0.25 From and EnvelopeFrom 2nd level mail domains are different KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods KHOP_HELO_FCRDNS 0.4 Relay HELO differs from its IP's reverse DNS NO_DNS_FOR_FROM 0.379 Envelope sender has no MX or A DNS records SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [bgpplugin.pm, evpnplugin.pm, controllers.pm, plugin.pm] Subject: [pve-devel] [PATCH pve-network 2/3] controllers: add generate_controller_rawconfig X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Dec 2020 15:12:01 -0000 Signed-off-by: Alexandre Derumier --- PVE/Network/SDN/Controllers.pm | 19 ++++++++++++++++++- PVE/Network/SDN/Controllers/BgpPlugin.pm | 5 +++++ PVE/Network/SDN/Controllers/EvpnPlugin.pm | 10 +++++++++- 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(); @@ -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"; 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) = @_; -- 2.20.1