xenserver: Clean up /usr/sbin/brctl dangling symlink.
[sliver-openvswitch.git] / xenserver / openvswitch-xen.spec
index deb1fd3..1b97a53 100644 (file)
@@ -1,6 +1,6 @@
 # Spec file for Open vSwitch.
 
-# Copyright (C) 2009, 2010 Nicira Networks, Inc.
+# Copyright (C) 2009, 2010, 2011 Nicira Networks, Inc.
 #
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
@@ -73,16 +73,14 @@ install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py \
              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
 install -m 755 xenserver/etc_xensource_scripts_vif \
              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/vif
-install -m 755 xenserver/usr_share_openvswitch_scripts_ovs-external-ids \
-               $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/ovs-external-ids
-install -m 755 xenserver/usr_share_openvswitch_scripts_refresh-xs-network-uuids \
-               $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/refresh-xs-network-uuids
+install -m 755 xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync \
+               $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/ovs-xapi-sync
 install -m 755 xenserver/usr_sbin_xen-bugtool \
              $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/xen-bugtool
-install -m 755 xenserver/usr_sbin_brctl \
-             $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/brctl
 install -m 755 xenserver/usr_share_openvswitch_scripts_sysconfig.template \
          $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/sysconfig.template
+install -m 755 utilities/ovs-save \
+         $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/ovs-save
 install -d -m 755 $RPM_BUILD_ROOT/usr/lib/xsconsole/plugins-base
 install -m 644 \
         xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
@@ -111,94 +109,26 @@ install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch
 rm -rf $RPM_BUILD_ROOT
 
 %post
-if [ ! -f /etc/xensource-inventory ]; then
-    printf "XenSource inventory not present in /etc/xensource-inventory"
-    exit 1
-fi
-. /etc/xensource-inventory
-
-if [ "$1" = "1" ]; then
-    if md5sum -c --status <<EOF
-ca141d60061dcfdade73e75abc6529b5  /usr/sbin/brctl
-b8e9835862ef1a9cec2a3f477d26c989  /etc/xensource/scripts/vif
-51970ad613a3996d5997e18e44db47da  /opt/xensource/libexec/interface-reconfigure
-5654c8c36699fcc8744ca9cd5b855414  /usr/sbin/xen-bugtool
-EOF
-    then
-        printf "\nVerified host scripts from XenServer 5.5.0.\n\n"
-    elif md5sum -c --status <<EOF
-ca141d60061dcfdade73e75abc6529b5  /usr/sbin/brctl
-b8e9835862ef1a9cec2a3f477d26c989  /etc/xensource/scripts/vif
-51970ad613a3996d5997e18e44db47da  /opt/xensource/libexec/interface-reconfigure
-f6519085c2fc5f7bc4eccc294ed62000  /usr/sbin/xen-bugtool
-EOF
-    then
-        printf "\nVerified host scripts from XenServer 5.5.0-24648p (Update 1)\n"
-        printf "or 5.5.0-25727p (Update 2).\n\n"
-    elif md5sum -c --status <<EOF
-ca141d60061dcfdade73e75abc6529b5  /usr/sbin/brctl
-02cf136237ed85fcbcc1efc15ce0591c  /opt/xensource/libexec/interface-reconfigure
-3a192ee70ebf2153c90051b3af95f331  /opt/xensource/libexec/InterfaceReconfigureBridge.py
-f71cadf1464caefa7943de0ab47fdd8a  /opt/xensource/libexec/InterfaceReconfigure.py
-d70f08f235fb1bfd49a0580e440f15a0  /opt/xensource/libexec/InterfaceReconfigureVswitch.py
-f5c85ca825b1e6f5a0845530981cd836  /etc/xensource/scripts/vif
-facb851606f82ca2bcc760a4d91bbe33  /usr/sbin/xen-bugtool
-EOF
-    then
-        printf "\nVerified host scripts from XenServer 5.5.900-29381p.\n\n"
-    else
-cat <<EOF
-
-The original XenServer scripts replaced by this package are not those
-of any supported version of XenServer.  This could lead to unexpected
-behavior of your server.  Unless you are sure you know what you are
-doing, it is highly recommended that you remove this package
-immediately after the install completes, which will restore the
-XenServer scripts that you were previously using.
-
-EOF
-    fi
-fi
-
-# On XenServer 5.5.0, we need refresh-xs-network-uuids to run whenever
-# XAPI starts or restarts.  (On XenServer 5.6.0, XAPI calls the
-# "update" method of the vswitch-cfg-update plugin whenever it starts
-# or restarts, so this is no longer necessary.)
-if test "$PRODUCT_VERSION" = "5.5.0"; then
-    RNU=/usr/share/openvswitch/scripts/refresh-xs-network-uuids
-    XSS=/opt/xensource/libexec/xapi-startup-script
-    if test -e $XSS && (test ! -L $XSS || test "`readlink $XSS`" != $RNU); then
-        echo "$XSS is already in use, refusing to overwrite"
-        exit 1
-    fi
-    rm -f $XSS
-    ln -s $RNU $XSS
-
-    # If /etc/xensource/network.conf doesn't exist (it was added in 5.6.0),
-    # then interface-reconfigure will be unhappy when we run it below.
-    if test ! -e /etc/xensource/network.conf; then
-        echo bridge > /etc/xensource/network.conf
-    fi
-fi
-
-
-if test ! -e /var/xapi/network.dbcache; then
-    if test "$1" = 1; then
-        printf "Creating xapi database cache...  "
-    else
-        printf "warning: Open vSwitch is being re-installed or upgraded,\n"
-        printf "         but the xapi database cache is missing.\n"
-        printf "Re-creating xapi database cache...  "
-    fi
+# Do not run the first block if we are in the XenServer installer
+if runlevel >/dev/null 2>&1; then
+    if test ! -e /var/xapi/network.dbcache; then
+        if test "$1" = 1; then
+            printf "Creating xapi database cache...  "
+        else
+            printf "warning: Open vSwitch is being re-installed or upgraded,\n"
+            printf "         but the xapi database cache is missing.\n"
+            printf "Re-creating xapi database cache...  "
+        fi
 
-    if /usr/share/openvswitch/scripts/interface-reconfigure rewrite; then
-        printf "done.\n"
-    else
-        printf "FAILED\n"
-        printf "Open vSwitch can only be installed on a XenServer that\n"
-        printf "has connectivity to xapi on the pool master.  Please\n"
-        printf "fix connectivity to the pool master, then try again.\n"
-        exit 1
+        if /usr/share/openvswitch/scripts/interface-reconfigure rewrite; then
+            printf "done.\n"
+        else
+            printf "FAILED\n"
+            printf "Open vSwitch can only be installed on a XenServer that\n"
+            printf "has connectivity to xapi on the pool master.  Please\n"
+            printf "fix connectivity to the pool master, then try again.\n"
+            exit 1
+        fi
     fi
 fi
 
@@ -257,8 +187,7 @@ for f in \
     /opt/xensource/libexec/InterfaceReconfigureBridge.py \
     /opt/xensource/libexec/InterfaceReconfigureVswitch.py \
     /etc/xensource/scripts/vif \
-    /usr/sbin/xen-bugtool \
-    /usr/sbin/brctl
+    /usr/sbin/xen-bugtool
 do
     s=$(basename "$f")
     t=$(readlink "$f")
@@ -270,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
@@ -302,57 +238,46 @@ fi
 
 
 %postun
-if [ "$1" = "0" ]; then     # $1 = 1 for upgrade
-    . /etc/xensource-inventory
-    if test "$PRODUCT_VERSION" = "5.5.0"; then
-        XSS=/opt/xensource/libexec/xapi-startup-script
-        rm -f $XSS
+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
 
-    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 \
-        /usr/sbin/brctl
-    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
     rm -f /etc/openvswitch/vswitchd.cacert
     rm -f /var/xapi/network.dbcache
 
-    if test "$PRODUCT_VERSION" != "5.5.0"; then
-        # Configure system to use bridge
-        echo bridge > /etc/xensource/network.conf
-    else
-        # Get rid of network.conf entirely, to make the system pristine.
-        rm -f /etc/xensource/network.conf
-    fi
+    # Configure system to use bridge
+    echo bridge > /etc/xensource/network.conf
 
     printf "\nYou MUST reboot the server now to complete the change to\n"
     printf "standard Xen networking.  Attempts to modify networking on the\n"
@@ -360,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
@@ -369,7 +293,6 @@ fi
 /etc/logrotate.d/openvswitch
 /etc/profile.d/openvswitch.sh
 /lib/modules/%{xen_version}/kernel/extra/openvswitch/openvswitch_mod.ko
-/lib/modules/%{xen_version}/kernel/extra/openvswitch/brcompat_mod.ko
 /usr/share/openvswitch/python/ovs/__init__.py
 /usr/share/openvswitch/python/ovs/daemon.py
 /usr/share/openvswitch/python/ovs/db/__init__.py
@@ -392,18 +315,16 @@ fi
 /usr/share/openvswitch/python/ovs/timeval.py
 /usr/share/openvswitch/python/ovs/util.py
 /usr/share/openvswitch/python/uuid.py
-/usr/share/openvswitch/scripts/ovs-external-ids
-/usr/share/openvswitch/scripts/refresh-xs-network-uuids
+/usr/share/openvswitch/scripts/ovs-xapi-sync
 /usr/share/openvswitch/scripts/interface-reconfigure
 /usr/share/openvswitch/scripts/InterfaceReconfigure.py
 /usr/share/openvswitch/scripts/InterfaceReconfigureBridge.py
 /usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
 /usr/share/openvswitch/scripts/vif
 /usr/share/openvswitch/scripts/xen-bugtool
-/usr/share/openvswitch/scripts/brctl
 /usr/share/openvswitch/scripts/sysconfig.template
+/usr/share/openvswitch/scripts/ovs-save
 /usr/share/openvswitch/vswitch.ovsschema
-/usr/sbin/ovs-brcompatd
 /usr/sbin/ovs-vswitchd
 /usr/sbin/ovsdb-server
 /usr/bin/ovs-appctl
@@ -421,7 +342,6 @@ fi
 /usr/share/man/man1/ovsdb-tool.1.gz
 /usr/share/man/man5/ovs-vswitchd.conf.db.5.gz
 /usr/share/man/man8/ovs-appctl.8.gz
-/usr/share/man/man8/ovs-brcompatd.8.gz
 /usr/share/man/man8/ovs-dpctl.8.gz
 /usr/share/man/man8/ovs-ofctl.8.gz
 /usr/share/man/man8/ovs-parse-leaks.8.gz
@@ -431,7 +351,10 @@ fi
 /usr/share/man/man8/ovs-vsctl.8.gz
 /usr/share/man/man8/ovs-vswitchd.8.gz
 /var/lib/openvswitch
+%exclude /lib/modules/%{xen_version}/kernel/extra/openvswitch/brcompat_mod.ko
 %exclude /usr/lib/xsconsole/plugins-base/*.py[co]
+%exclude /usr/sbin/ovs-brcompatd
+%exclude /usr/share/man/man8/ovs-brcompatd.8.gz
 %exclude /usr/share/openvswitch/scripts/*.py[co]
 %exclude /usr/share/openvswitch/python/*.py[co]
 %exclude /usr/share/openvswitch/python/ovs/*.py[co]