[pve-devel] [PATCH openvswitch 1/1] ifupdown.sh : add ifupdown2 workaround
Alexandre Derumier
aderumier at odiso.com
Wed May 16 12:01:50 CEST 2018
with ifupdown2, we can't call ifup for each ovs_ports in OvsBridge.
But as we define also ovs_bridge for each interface, we can simply add
the bridge here, to be sure that it's exist before adding the interface.
for config, we simply need to replace allow-..., with auto.
I have keeped ovs_ports to avoid config change, but it's not used.
old config
----------
auto vmbr100
iface vmbr100 inet manual
ovs_type OVSBridge
ovs_ports bond0 ovsinternalport
allow-vmbr100 ovsinternalport
iface ovsinternalport inet static
address 172.16.0.10
netmask 255.255.255.0
ovs_type OVSIntPort
ovs_bridge vmbr100
ovs_options tag=30
allow-vmbr100 bond0
iface bond0 inet manual
ovs_bonds eno3 eno4
ovs_type OVSBond
ovs_bridge vmbr100
ovs_options bond_mode=balance-slb lacp=active
new config
----------
auto vmbr100
iface vmbr100 inet manual
ovs_type OVSBridge
ovs_ports bond0 ovsinternalport
auto ovsinternalport
iface ovsinternalport inet static
address 172.16.0.10
netmask 255.255.255.0
ovs_type OVSIntPort
ovs_bridge vmbr100
ovs_options tag=30
auto bond0
iface bond0 inet manual
ovs_bonds eno3 eno4
ovs_type OVSBond
ovs_bridge vmbr100
ovs_options bond_mode=balance-slb lacp=active
---
.../ifupdown.sh-add-ifupdown2-workaround.patch | 154 +++++++++++++++++++++
pvepatches/series | 1 +
2 files changed, 155 insertions(+)
create mode 100644 pvepatches/ifupdown.sh-add-ifupdown2-workaround.patch
diff --git a/pvepatches/ifupdown.sh-add-ifupdown2-workaround.patch b/pvepatches/ifupdown.sh-add-ifupdown2-workaround.patch
new file mode 100644
index 0000000..009bf33
--- /dev/null
+++ b/pvepatches/ifupdown.sh-add-ifupdown2-workaround.patch
@@ -0,0 +1,154 @@
+From 8eef7f26c0489a582f8d8dd8fe8da8e573454d42 Mon Sep 17 00:00:00 2001
+From: root <root at kvmformation1.odiso.net>
+Date: Wed, 16 May 2018 10:22:22 +0200
+Subject: [PATCH] ifupdown.sh : add ifupdown2 workaround
+
+with ifupdown2, we can't call ifup for each ovs_ports in OvsBridge.
+But as we define also ovs_bridge for each interface, we can simply add
+the bridge here, to be sure that it's exist before adding the interface.
+
+for config, we simply need to replace allow-..., with auto.
+I have keeped ovs_ports to avoid config change, but it's not used.
+
+old config
+----------
+auto vmbr100
+iface vmbr100 inet manual
+ ovs_type OVSBridge
+ ovs_ports bond0 ovsinternalport
+
+allow-vmbr100 ovsinternalport
+iface ovsinternalport inet static
+ address 172.16.0.10
+ netmask 255.255.255.0
+ ovs_type OVSIntPort
+ ovs_bridge vmbr100
+ ovs_options tag=30
+
+allow-vmbr100 bond0
+iface bond0 inet manual
+ ovs_bonds eno3 eno4
+ ovs_type OVSBond
+ ovs_bridge vmbr100
+ ovs_options bond_mode=balance-slb lacp=active
+
+new config
+----------
+auto vmbr100
+iface vmbr100 inet manual
+ ovs_type OVSBridge
+ ovs_ports bond0 ovsinternalport
+
+auto ovsinternalport
+iface ovsinternalport inet static
+ address 172.16.0.10
+ netmask 255.255.255.0
+ ovs_type OVSIntPort
+ ovs_bridge vmbr100
+ ovs_options tag=30
+
+auto bond0
+iface bond0 inet manual
+ ovs_bonds eno3 eno4
+ ovs_type OVSBond
+ ovs_bridge vmbr100
+ ovs_options bond_mode=balance-slb lacp=active
+---
+ debian/ifupdown.sh | 44 ++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 40 insertions(+), 4 deletions(-)
+
+diff --git a/debian/ifupdown.sh b/debian/ifupdown.sh
+index e21215a..098d913 100755
+--- a/debian/ifupdown.sh
++++ b/debian/ifupdown.sh
+@@ -44,11 +44,20 @@ if [ "${MODE}" = "start" ]; then
+ ovs_vsctl -- --may-exist add-br "${IFACE}" ${IF_OVS_OPTIONS}\
+ ${OVS_EXTRA+-- $OVS_EXTRA}
+
+- if [ ! -z "${IF_OVS_PORTS}" ]; then
+- ifup --allow="${IFACE}" ${IF_OVS_PORTS}
++ if [ ! -f /usr/share/ifupdown2/ifupdown2 ]; then
++ if [ ! -z "${IF_OVS_PORTS}" ]; then
++ ifup --allow="${IFACE}" ${IF_OVS_PORTS}
++ fi
+ fi
++
+ ;;
+ OVSPort)
++
++ if [ -f /usr/share/ifupdown2/ifupdown2 ]; then
++ ovs_vsctl -- --may-exist add-br "${IF_OVS_BRIDGE}"
++ ip link set "${IF_OVS_BRIDGE}" up
++ fi
++
+ ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
+ "${IFACE}" ${IF_OVS_OPTIONS} \
+ ${OVS_EXTRA+-- $OVS_EXTRA}
+@@ -56,6 +65,12 @@ if [ "${MODE}" = "start" ]; then
+ ifconfig "${IFACE}" up
+ ;;
+ OVSIntPort)
++
++ if [ -f /usr/share/ifupdown2/ifupdown2 ]; then
++ ovs_vsctl -- --may-exist add-br "${IF_OVS_BRIDGE}"
++ ip link set "${IF_OVS_BRIDGE}" up
++ fi
++
+ ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
+ "${IFACE}" ${IF_OVS_OPTIONS} -- set Interface "${IFACE}"\
+ type=internal ${OVS_EXTRA+-- $OVS_EXTRA}
+@@ -63,6 +78,12 @@ if [ "${MODE}" = "start" ]; then
+ ifconfig "${IFACE}" up
+ ;;
+ OVSBond)
++
++ if [ -f /usr/share/ifupdown2/ifupdown2 ]; then
++ ovs_vsctl -- --may-exist add-br "${IF_OVS_BRIDGE}"
++ ip link set "${IF_OVS_BRIDGE}" up
++ fi
++
+ ovs_vsctl -- --fake-iface add-bond "${IF_OVS_BRIDGE}"\
+ "${IFACE}" ${IF_OVS_BONDS} ${IF_OVS_OPTIONS} \
+ ${OVS_EXTRA+-- $OVS_EXTRA}
+@@ -74,12 +95,24 @@ if [ "${MODE}" = "start" ]; then
+ done
+ ;;
+ OVSPatchPort)
++
++ if [ -f /usr/share/ifupdown2/ifupdown2 ]; then
++ ovs_vsctl -- --may-exist add-br "${IF_OVS_BRIDGE}"
++ ip link set "${IF_OVS_BRIDGE}" up
++ fi
++
+ ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
+ "${IFACE}" ${IF_OVS_OPTIONS} -- set Interface "${IFACE}" \
+ type=patch options:peer="${IF_OVS_PATCH_PEER}" \
+ ${OVS_EXTRA+-- $OVS_EXTRA}
+ ;;
+ OVSTunnel)
++
++ if [ -f /usr/share/ifupdown2/ifupdown2 ]; then
++ ovs_vsctl -- --may-exist add-br "${IF_OVS_BRIDGE}"
++ ip link set "${IF_OVS_BRIDGE}" up
++ fi
++
+ ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
+ "${IFACE}" ${IF_OVS_OPTIONS} -- set Interface "${IFACE}" \
+ type=${IF_OVS_TUNNEL_TYPE} ${IF_OVS_TUNNEL_OPTIONS} \
+@@ -92,8 +125,11 @@ if [ "${MODE}" = "start" ]; then
+ elif [ "${MODE}" = "stop" ]; then
+ case "${IF_OVS_TYPE}" in
+ OVSBridge)
+- if [ ! -z "${IF_OVS_PORTS}" ]; then
+- ifdown --allow="${IFACE}" ${IF_OVS_PORTS}
++
++ if [ ! -f /usr/share/ifupdown2/ifupdown2 ]; then
++ if [ ! -z "${IF_OVS_PORTS}" ]; then
++ ifdown --allow="${IFACE}" ${IF_OVS_PORTS}
++ fi
+ fi
+
+ ovs_vsctl -- --if-exists del-br "${IFACE}"
+--
+2.11.0
+
diff --git a/pvepatches/series b/pvepatches/series
index 4de5839..0eb7d08 100644
--- a/pvepatches/series
+++ b/pvepatches/series
@@ -4,3 +4,4 @@ delete-openvswitch-switch-init.patch
use-systemctl-inside-ifupdown.patch
remove-init-script-on-upgrades.patch
add-net-tools-dependency.patch
+ifupdown.sh-add-ifupdown2-workaround.patch
--
2.11.0
More information about the pve-devel
mailing list