From ae3f4de81577ba04610cfb44de3d0fa0a1ff4945 Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Tue, 2 Jun 2020 11:20:24 +0200 Subject: [PATCH] catch errors on sdn config generation Signed-off-by: Alexandre Derumier --- PVE/Network/SDN/Zones.pm | 8 +++++++- PVE/Network/SDN/Zones/QinQPlugin.pm | 1 + PVE/Network/SDN/Zones/VlanPlugin.pm | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/PVE/Network/SDN/Zones.pm b/PVE/Network/SDN/Zones.pm index b8dc54c..552b334 100644 --- a/PVE/Network/SDN/Zones.pm +++ b/PVE/Network/SDN/Zones.pm @@ -109,7 +109,13 @@ sub generate_etc_network_config { } my $plugin = PVE::Network::SDN::Zones::Plugin->lookup($plugin_config->{type}); - $plugin->generate_sdn_config($plugin_config, $zone, $id, $vnet, $controller, $interfaces_config, $config); + eval { + $plugin->generate_sdn_config($plugin_config, $zone, $id, $vnet, $controller, $interfaces_config, $config); + }; + if($@) { + warn "zone $zone : vnet $id : $@"; + next; + } } my $raw_network_config = "\#version:$version\n"; diff --git a/PVE/Network/SDN/Zones/QinQPlugin.pm b/PVE/Network/SDN/Zones/QinQPlugin.pm index 20c0986..2ae2649 100644 --- a/PVE/Network/SDN/Zones/QinQPlugin.pm +++ b/PVE/Network/SDN/Zones/QinQPlugin.pm @@ -52,6 +52,7 @@ sub generate_sdn_config { my $vlanprotocol = $plugin_config->{'vlan-protocol'}; my $ctag = $vnet->{tag}; my $alias = $vnet->{alias}; + die "can't find bridge $bridge" if !-d "/sys/class/net/$bridge"; my $vlan_aware = PVE::Tools::file_read_firstline("/sys/class/net/$bridge/bridge/vlan_filtering"); my $is_ovs = 1 if !-d "/sys/class/net/$bridge/brif"; diff --git a/PVE/Network/SDN/Zones/VlanPlugin.pm b/PVE/Network/SDN/Zones/VlanPlugin.pm index aeff1a4..d3dc857 100644 --- a/PVE/Network/SDN/Zones/VlanPlugin.pm +++ b/PVE/Network/SDN/Zones/VlanPlugin.pm @@ -41,6 +41,8 @@ sub generate_sdn_config { my ($class, $plugin_config, $zoneid, $vnetid, $vnet, $controller, $interfaces_config, $config) = @_; my $bridge = $plugin_config->{bridge}; + die "can't find bridge $bridge" if !-d "/sys/class/net/$bridge"; + my $vlan_aware = PVE::Tools::file_read_firstline("/sys/class/net/$bridge/bridge/vlan_filtering"); my $is_ovs = 1 if !-d "/sys/class/net/$bridge/brif"; -- 2.39.5