[pve-devel] [PATCH ovs 1/2] remove openvswitch-switch init script

Alexandre DERUMIER aderumier at odiso.com
Fri Aug 26 12:48:49 CEST 2016


Also, not sure it's related, but I have seen a bug report about order of ovs units on ubuntu 16.04

https://bugs.launchpad.net/ubuntu/+source/openvswitch/+bug/1448254
http://www.opencloudblog.com/?p=240


----- Mail original -----
De: "aderumier" <aderumier at odiso.com>
À: "pve-devel" <pve-devel at pve.proxmox.com>
Envoyé: Vendredi 26 Août 2016 12:41:42
Objet: Re: [pve-devel] [PATCH ovs 1/2] remove openvswitch-switch init script

Are you sure that systemd manage correctly this part: 

+-network_interfaces () { 
+- INTERFACES="/etc/network/interfaces" 
+- [ -e "${INTERFACES}" ] || return 
+- bridges=`ifquery --allow ovs --list` 
+- [ -n "${bridges}" ] && $1 --allow=ovs ${bridges} 
+-} 


? 

If I remember, the have keep the init script for this. 
I think the systemd unit only manage config from ovs database, but not debian /etc/network/interfaces 


----- Mail original ----- 
De: "Fabian Grünbichler" <f.gruenbichler at proxmox.com> 
À: "pve-devel" <pve-devel at pve.proxmox.com> 
Envoyé: Vendredi 26 Août 2016 12:14:20 
Objet: [pve-devel] [PATCH ovs 1/2] remove openvswitch-switch init script 

the init script serves exactly the same purpose as the 
openvswitch-nonetwork systemd unit - having both does not 
seem to break anything, but it is racy and confusing. 
--- 
Note: for testing the removal, a version bump is needed 

Testing this on complicated setups, especially ones with 
the ordering cycle/boot problem would be nice. 

pvepatches/delete-openvswitch-switch-init.patch | 153 ++++++++++++++++++++++++ 
pvepatches/install-systemd-services.patch | 5 +- 
pvepatches/remove-init-script-on-upgrades.patch | 15 +++ 
pvepatches/series | 4 +- 
4 files changed, 172 insertions(+), 5 deletions(-) 
create mode 100644 pvepatches/delete-openvswitch-switch-init.patch 
create mode 100644 pvepatches/remove-init-script-on-upgrades.patch 

diff --git a/pvepatches/delete-openvswitch-switch-init.patch b/pvepatches/delete-openvswitch-switch-init.patch 
new file mode 100644 
index 0000000..c0f5a52 
--- /dev/null 
+++ b/pvepatches/delete-openvswitch-switch-init.patch 
@@ -0,0 +1,153 @@ 
+diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init 
+deleted file mode 100755 
+index aece780..0000000 
+--- a/debian/openvswitch-switch.init 
++++ /dev/null 
+@@ -1,147 +0,0 @@ 
+-#! /bin/sh 
+-# 
+-# Copyright (C) 2011, 2012 Nicira, Inc. 
+-# 
+-# Licensed under the Apache License, Version 2.0 (the "License"); 
+-# you may not use this file except in compliance with the License. 
+-# You may obtain a copy of the License at: 
+-# 
+-# http://www.apache.org/licenses/LICENSE-2.0 
+-# 
+-# Unless required by applicable law or agreed to in writing, software 
+-# distributed under the License is distributed on an "AS IS" BASIS, 
+-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+-# See the License for the specific language governing permissions and 
+-# limitations under the License. 
+-# 
+-### BEGIN INIT INFO 
+-# Provides: openvswitch-switch 
+-# Required-Start: $network $named $remote_fs $syslog 
+-# Required-Stop: $remote_fs 
+-# Default-Start: 2 3 4 5 
+-# Default-Stop: 0 1 6 
+-# Short-Description: Open vSwitch switch 
+-# Description: openvswitch-switch provides the userspace components and utilities for 
+-# the Open vSwitch kernel-based switch. 
+-### END INIT INFO 
+- 
+-(test -x /usr/sbin/ovs-vswitchd && test -x /usr/sbin/ovsdb-server) || exit 0 
+- 
+-_SYSTEMCTL_SKIP_REDIRECT=yes 
+- 
+-. /usr/share/openvswitch/scripts/ovs-lib 
+-test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch 
+- 
+-network_interfaces () { 
+- INTERFACES="/etc/network/interfaces" 
+- [ -e "${INTERFACES}" ] || return 
+- bridges=`ifquery --allow ovs --list` 
+- [ -n "${bridges}" ] && $1 --allow=ovs ${bridges} 
+-} 
+- 
+-load_kmod () { 
+- ovs_ctl load-kmod || exit $? 
+-} 
+- 
+-start () { 
+- if ovs_ctl load-kmod; then 
+- : 
+- else 
+- echo "Module has probably not been built for this kernel." 
+- if ! test -d /usr/share/doc/openvswitch-datapath-source; then 
+- echo "Install the openvswitch-datapath-source package, then read" 
+- else 
+- echo "For instructions, read" 
+- fi 
+- echo "/usr/share/doc/openvswitch-datapath-source/README.Debian" 
+- 
+- if test X"$OVS_MISSING_KMOD_OK" = Xyes; then 
+- # We're being invoked by the package postinst. Do not 
+- # fail package installation just because the kernel module 
+- # is not available. 
+- exit 0 
+- fi 
+- fi 
+- set ovs_ctl ${1-start} --system-id=random 
+- if test X"$FORCE_COREFILES" != X; then 
+- set "$@" --force-corefiles="$FORCE_COREFILES" 
+- fi 
+- set "$@" $OVS_CTL_OPTS 
+- "$@" || exit $? 
+- if [ "$2" = "start" ] && [ "$READ_INTERFACES" != "no" ]; then 
+- network_interfaces ifup 
+- fi 
+-} 
+- 
+-stop () { 
+- [ "$READ_INTERFACES" != "no" ] && network_interfaces ifdown 
+- ovs_ctl stop 
+-} 
+- 
+-restart () { 
+- # OVS_FORCE_RELOAD_KMOD can be set by package postinst script. 
+- if [ "$1" = "--save-flows=yes" ] || \ 
+- [ "${OVS_FORCE_RELOAD_KMOD}" = "no" ]; then 
+- start restart 
+- elif [ "${OVS_FORCE_RELOAD_KMOD}" = "yes" ]; then 
+- depmod -a 
+- 
+- if [ -e /sys/module/openvswitch ]; then 
+- LOADED_SRCVERSION=`cat /sys/module/openvswitch/srcversion` 
+- LOADED_VERSION=`cat /sys/module/openvswitch/version` 
+- elif [ -e /sys/module/openvswitch_mod ]; then 
+- LOADED_SRCVERSION=`cat /sys/module/openvswitch_mod/srcversion` 
+- LOADED_VERSION=`cat /sys/module/openvswitch_mod/version` 
+- fi 
+- SRCVERSION=`modinfo -F srcversion openvswitch 2>/dev/null` 
+- VERSION=`modinfo -F version openvswitch 2>/dev/null` 
+- 
+- ovs_ctl_log "Package upgrading:\n"\ 
+- "Loaded version: ${LOADED_VERSION} ${LOADED_SRCVERSION}.\n"\ 
+- "Version on disk: ${VERSION} ${SRCVERSION}." 
+- 
+- # If the kernel module was previously loaded and it is different than 
+- # the kernel module on disk, then do a 'force-reload-kmod'. 
+- if [ -n "${LOADED_SRCVERSION}" ] && [ -n "${SRCVERSION}" ] && \ 
+- [ "${SRCVERSION}" != "${LOADED_SRCVERSION}" ]; then 
+- start force-reload-kmod 
+- else 
+- start restart 
+- fi 
+- else 
+- READ_INTERFACES="no" stop 
+- READ_INTERFACES="no" start 
+- fi 
+-} 
+- 
+-case $1 in 
+- start) 
+- start 
+- ;; 
+- stop | force-stop) 
+- stop 
+- ;; 
+- reload | force-reload) 
+- # The OVS daemons keep up-to-date. 
+- ;; 
+- restart) 
+- shift 
+- restart "$@" 
+- ;; 
+- status) 
+- ovs_ctl status 
+- exit $? 
+- ;; 
+- force-reload-kmod) 
+- start force-reload-kmod 
+- ;; 
+- load-kmod) 
+- load_kmod 
+- ;; 
+- *) 
+- echo "Usage: $0 {start|stop|restart|force-reload|status|force-stop|force-reload-kmod|load-kmod}" >&2 
+- exit 1 
+- ;; 
+-esac 
+- 
+-exit 0 
diff --git a/pvepatches/install-systemd-services.patch b/pvepatches/install-systemd-services.patch 
index 645d048..257c40f 100644 
--- a/pvepatches/install-systemd-services.patch 
+++ b/pvepatches/install-systemd-services.patch 
@@ -37,12 +37,11 @@ Index: new/debian/rules 
=================================================================== 
--- a/debian/rules 
+++ b/debian/rules 
-@@ -82,8 +82,10 @@ override_dh_install: 
+@@ -82,7 +82,10 @@ override_dh_install: 
debian/$(PACKAGE_DKMS)/usr/src/$(PACKAGE)-$(DEB_UPSTREAM_VERSION)/xenserver/LICENSE 

override_dh_installinit: 
-- dh_installinit -p "openvswitch-switch" -R -- start 20 S . stop 80 0 6 . 
-- dh_installinit --remaining-packages -R 
+- dh_installinit -R 
+ dh_systemd_enable -p "openvswitch-switch" --name openvswitch 
+ dh_systemd_enable -p "openvswitch-switch" --name openvswitch-nonetwork 
+ dh_installinit 
diff --git a/pvepatches/remove-init-script-on-upgrades.patch b/pvepatches/remove-init-script-on-upgrades.patch 
new file mode 100644 
index 0000000..683baca 
--- /dev/null 
+++ b/pvepatches/remove-init-script-on-upgrades.patch 
@@ -0,0 +1,15 @@ 
+diff --git a/debian/openvswitch-switch.postinst b/debian/openvswitch-switch.postinst 
+index 2464572..160b37b 100755 
+--- a/debian/openvswitch-switch.postinst 
++++ b/debian/openvswitch-switch.postinst 
+@@ -33,6 +33,10 @@ case "$1" in 
+ fi 
+ done 
+ fi 
++ 
++ if dpkg --compare-versions "$2" le "2.5.0-1"; then 
++ rm -f /etc/init.d/openvswitch-switch 
++ fi 
+ ;; 
+ 
+ abort-upgrade|abort-remove|abort-deconfigure) 
diff --git a/pvepatches/series b/pvepatches/series 
index e810b29..2c1c662 100644 
--- a/pvepatches/series 
+++ b/pvepatches/series 
@@ -1,5 +1,5 @@ 
remove-unneeded-from-control.patch 
-fix-init-script-patch 
-fix-init-depends.patch 
install-systemd-services.patch 
+delete-openvswitch-switch-init.patch 
use-systemctl-inside-ifupdown.patch 
+remove-init-script-on-upgrades.patch 
-- 
2.1.4 


_______________________________________________ 
pve-devel mailing list 
pve-devel at pve.proxmox.com 
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 

_______________________________________________ 
pve-devel mailing list 
pve-devel at pve.proxmox.com 
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 




More information about the pve-devel mailing list