[pve-devel] [PATCH ovs 1/2] remove openvswitch-switch init script
Alexandre DERUMIER
aderumier at odiso.com
Fri Aug 26 12:41:42 CEST 2016
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
More information about the pve-devel
mailing list