summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Evans <aevans@nicira.com>2011-02-14 13:02:43 -0800
committerAndrew Evans <aevans@nicira.com>2011-02-14 17:39:58 -0800
commitd66880eeff656520e415c061eb44683389ea4f61 (patch)
tree5ff2c7cd96ff835e818b4b4d7209ee08578890b3
parent0b8b6f71d5621a726a3bf5aa1bbee27ed1f4a8fe (diff)
downloadopenvswitch-d66880eeff656520e415c061eb44683389ea4f61.tar.gz
xenserver: Clean up /usr/sbin/brctl dangling symlink.
Commit 54f16a10 removed Open vSwitch's /usr/sbin/brctl replacement for XenServer, but because the RPM doesn't restore the original files on upgrade, an upgrade leaves /usr/sbin/brctl a broken symlink to the removed /usr/share/openvswitch/scripts/brctl. This commit adds a one-time cleanup to restore the original XenServer-supplied /usr/sbin/brctl. It also changes the RPM to restore all the replaced files with their XenServer originals at post-uninstall time during an upgrade transaction, just as uninstall has done up to now. This should prevent the same problem in the future. Bug #4667.
-rw-r--r--xenserver/openvswitch-xen.spec69
1 files changed, 38 insertions, 31 deletions
diff --git a/xenserver/openvswitch-xen.spec b/xenserver/openvswitch-xen.spec
index de9b4439d..1b97a53d2 100644
--- a/xenserver/openvswitch-xen.spec
+++ b/xenserver/openvswitch-xen.spec
@@ -199,6 +199,13 @@ do
fi
done
+# Bug #4667: one-time cleanup of brctl removal in commit 54f16a10
+# (xenserver: Remove brctl wrapper script).
+if [ -h /usr/sbin/brctl ] &&
+ [ "$(readlink /usr/sbin/brctl)" = /usr/share/openvswitch/scripts/brctl ]; then
+ mv -f /usr/lib/openvswitch/xs-original/brctl /usr/sbin/
+fi
+
# Ensure all required services are set to run
for s in openvswitch openvswitch-xapi-update; do
if chkconfig --list $s >/dev/null 2>&1; then
@@ -231,37 +238,38 @@ fi
%postun
-if [ "$1" = "0" ]; then # $1 = 1 for upgrade
- rm -f /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyc \
- /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyo
-
- rm -f /usr/share/openvswitch/scripts/InterfaceReconfigure.pyc \
- /usr/share/openvswitch/scripts/InterfaceReconfigure.pyo \
- /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.pyc \
- /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.pyo \
- /usr/share/openvswitch/scripts/InterfaceReconfigureVSwitch.pyc \
- /usr/share/openvswitch/scripts/InterfaceReconfigureVSwitch.pyo
-
- # Restore original XenServer scripts
- for f in \
- /opt/xensource/libexec/interface-reconfigure \
- /opt/xensource/libexec/InterfaceReconfigure.py \
- /opt/xensource/libexec/InterfaceReconfigureBridge.py \
- /opt/xensource/libexec/InterfaceReconfigureVswitch.py \
- /etc/xensource/scripts/vif \
- /usr/sbin/xen-bugtool
- do
- s=$(basename "$f")
- if [ ! -f "/usr/lib/openvswitch/xs-original/$s" ]; then
- printf "Original XenServer $s script not present in /usr/lib/openvswitch/xs-original\n"
- printf "Could not restore original XenServer script.\n"
- else
- (rm -f "$f" \
- && mv "/usr/lib/openvswitch/xs-original/$s" "$f") \
- || printf "Could not restore original XenServer $s script.\n"
- fi
- done
+rm -f /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyc \
+ /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyo
+
+rm -f /usr/share/openvswitch/scripts/InterfaceReconfigure.pyc \
+ /usr/share/openvswitch/scripts/InterfaceReconfigure.pyo \
+ /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.pyc \
+ /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.pyo \
+ /usr/share/openvswitch/scripts/InterfaceReconfigureVSwitch.pyc \
+ /usr/share/openvswitch/scripts/InterfaceReconfigureVSwitch.pyo
+
+# Restore original XenServer scripts. It's important to do this even on upgrade
+# since the version to be installed may be missing some of these scripts.
+for f in \
+ /opt/xensource/libexec/interface-reconfigure \
+ /opt/xensource/libexec/InterfaceReconfigure.py \
+ /opt/xensource/libexec/InterfaceReconfigureBridge.py \
+ /opt/xensource/libexec/InterfaceReconfigureVswitch.py \
+ /etc/xensource/scripts/vif \
+ /usr/sbin/xen-bugtool
+do
+ s=$(basename "$f")
+ if [ ! -f "/usr/lib/openvswitch/xs-original/$s" ]; then
+ printf "Original XenServer $s script not present in /usr/lib/openvswitch/xs-original\n"
+ printf "Could not restore original XenServer script.\n"
+ else
+ (rm -f "$f" \
+ && mv "/usr/lib/openvswitch/xs-original/$s" "$f") \
+ || printf "Could not restore original XenServer $s script.\n"
+ fi
+done
+if [ "$1" = "0" ]; then # $1 = 1 for upgrade
# Remove all configuration files
rm -f /etc/openvswitch/conf.db
rm -f /etc/sysconfig/openvswitch
@@ -277,7 +285,6 @@ if [ "$1" = "0" ]; then # $1 = 1 for upgrade
printf "could leave the server in a state requiring manual recovery.\n\n"
fi
-
%files
%defattr(-,root,root)
/etc/init.d/openvswitch