From 89e797eaaba57d7e2373d4dc6c6af62b2a92b0ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Gonz=C3=A1lez?= Date: Sat, 1 May 2021 21:52:50 +0200 Subject: [PATCH] F #5362: Add OpenVSwitch support for Firecracker (#1150) (cherry picked from commit f1749061a00108a81f60be5ab4748e3cf329ecf8) --- src/vnm_mad/remotes/hooks/clean/firecracker | 11 ++++++++++- src/vnm_mad/remotes/hooks/pre/firecracker | 10 +++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/vnm_mad/remotes/hooks/clean/firecracker b/src/vnm_mad/remotes/hooks/clean/firecracker index 6880e617b1..bfa815523a 100755 --- a/src/vnm_mad/remotes/hooks/clean/firecracker +++ b/src/vnm_mad/remotes/hooks/clean/firecracker @@ -43,6 +43,9 @@ vnmad = File.basename(File.expand_path('..', File.dirname(__FILE__))) XPATH_NICS = "//TEMPLATE/NIC[VN_MAD='#{vnmad}']" XPATH_HV = '//HISTORY/VM_MAD' + +OVS_VN_MADS = %w[ovswitch ovswitch_vxlan] + #---------------------------------------------------------------------------- template64 = STDIN.read @@ -60,6 +63,7 @@ error = false template.elements.each(XPATH_NICS) do |nic_element| nic_id = Integer(nic_element.elements['NIC_ID'].text) + bridge = nic_element.elements['BRIDGE'].text if_name = "#{deploy_id}-#{nic_id}" # check if interface is already defined @@ -69,7 +73,12 @@ template.elements.each(XPATH_NICS) do |nic_element| next unless rc.success? # Del tap interface from the bridge - cmd = "#{command(:ip)} link set #{if_name} nomaster" + if OVS_VN_MADS.include?(vnmad) + cmd = "#{command(:ovs_vsctl)} --if-exists del-port #{bridge} #{if_name}" + else + cmd = "#{command(:ip)} link set #{if_name} nomaster" + end + _, e, rc = Open3.capture3(cmd) if !rc.success? diff --git a/src/vnm_mad/remotes/hooks/pre/firecracker b/src/vnm_mad/remotes/hooks/pre/firecracker index b81045791e..c6e0b9d17f 100755 --- a/src/vnm_mad/remotes/hooks/pre/firecracker +++ b/src/vnm_mad/remotes/hooks/pre/firecracker @@ -39,6 +39,9 @@ vnmad = File.basename(File.expand_path('..', File.dirname(__FILE__))) XPATH_NICS = "//TEMPLATE/NIC[VN_MAD='#{vnmad}']" XPATH_HV = '//HISTORY/VM_MAD' + +OVS_VN_MADS = %w[ovswitch ovswitch_vxlan] + #---------------------------------------------------------------------------- template64 = STDIN.read @@ -82,7 +85,12 @@ template.elements.each(XPATH_NICS) do |nic_element| break unless rc.success? # Add tap interface to the bridge - cmd = "#{command(:ip)} link set #{if_name} master #{bridge}" + if OVS_VN_MADS.include?(vnmad) + cmd = "#{command(:ovs_vsctl)} add-port #{bridge} #{if_name}" + else + cmd = "#{command(:ip)} link set #{if_name} master #{bridge}" + end + _, _, rc = Open3.capture3(cmd) break unless rc.success?