From 8950f895254912e6cd3041620206c4c59ecf94bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Gonz=C3=A1lez?= Date: Wed, 7 Apr 2021 13:16:46 +0200 Subject: [PATCH] B #5319: make sure OVS ports are cleanned (#1071) --- src/vnm_mad/remotes/lib/nic.rb | 2 ++ src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/vnm_mad/remotes/lib/nic.rb b/src/vnm_mad/remotes/lib/nic.rb index 95e2b91d2c..3d41bfd5de 100644 --- a/src/vnm_mad/remotes/lib/nic.rb +++ b/src/vnm_mad/remotes/lib/nic.rb @@ -202,6 +202,8 @@ module VNMMAD end def get_tap(vm) + return self unless vm.deploy_id + self[:tap] = "#{vm.deploy_id}-#{self[:nic_id]}" self diff --git a/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb b/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb index 2a510c4d11..c73723a8bd 100644 --- a/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb +++ b/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb @@ -132,8 +132,9 @@ class OpenvSwitchVLAN < VNMMAD::VNMDriver # Remove flows del_flows - # delete port from bridge in case of dpdk - del_bridge_port(@nic[:target]) if dpdk? + # delete port from bridge if exists. Some virtualization + # technologies might clean the port itselves. + del_bridge_port(@nic[:target]) next if @nic[:phydev].nil? next if @bridges[@nic[:bridge]].nil? @@ -440,7 +441,8 @@ private # Delete port from OvS bridge def del_bridge_port(port) - OpenNebula.exec_and_log("#{command(:ovs_vsctl)} del-port #{@nic[:bridge]} #{port}") + OpenNebula.exec_and_log("#{command(:ovs_vsctl)} --if-exists del-port " \ + "#{@nic[:bridge]} #{port}") @bridges[@nic[:bridge]].delete(port) end