diff options
author | Andrew Evans <aevans@nicira.com> | 2011-02-14 13:02:43 -0800 |
---|---|---|
committer | Andrew Evans <aevans@nicira.com> | 2011-02-14 17:39:58 -0800 |
commit | d66880eeff656520e415c061eb44683389ea4f61 (patch) | |
tree | 5ff2c7cd96ff835e818b4b4d7209ee08578890b3 | |
parent | 0b8b6f71d5621a726a3bf5aa1bbee27ed1f4a8fe (diff) | |
download | openvswitch-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.spec | 69 |
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 |