xenserver: Don't install xsconsole plugin as symlink
authorJustin Pettit <jpettit@nicira.com>
Tue, 6 Apr 2010 01:13:26 +0000 (18:13 -0700)
committerJustin Pettit <jpettit@nicira.com>
Tue, 6 Apr 2010 04:26:55 +0000 (21:26 -0700)
The OVS xsconsole plugin used to be installed in
/usr/share/openvswitch/scripts directory and then a symlink was created
to the /usr/lib/xsconsole/plugins-base directory.  The Citrix packaging of
OVS just placed it directly into the xsconsole plugin directory.  This
worked fine until we renamed our package "openvswitch", which is the
same as Citrix uses.

On an upgrade, the default package handler would attempt to clean up files
that were in the Cirix packaging, but not in the upgraded package.  Since
it didn't know that we had replaced their plugin with our symlink, it would
destroy our symlink.

This commit just places the plugin directly into the
/usr/lib/xsconsole/plugins-base directory, which allows us to seamlessly
upgrade to newer Open vSwitch versions.

Bug #2608

xenserver/openvswitch-xen.spec

index 7b5e0228e7515a8fd69a39000e1fc08f78a9382d..1d0c905df82fd7b6b1bcf5ec1ad216b67d6d0d50 100644 (file)
@@ -81,9 +81,10 @@ 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 -d -m 755 $RPM_BUILD_ROOT/usr/lib/xsconsole/plugins-base
 install -m 644 \
         xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
-               $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/XSFeatureVSwitch.py
+               $RPM_BUILD_ROOT/usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py
 
 install -d -m 755 $RPM_BUILD_ROOT/lib/modules/%{xen_version}/kernel/net/openvswitch
 find datapath/linux-2.6 -name *.ko -exec install -m 755  \{\} $RPM_BUILD_ROOT/lib/modules/%{xen_version}/kernel/net/openvswitch \;
@@ -246,13 +247,6 @@ do
     fi
 done
 
-# Install xsconsole plugin
-plugin=$(readlink /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py)
-if [ "$plugin" != "/usr/share/openvswitch/scripts/XSFeatureVSwitch.py" ]; then
-    rm -f /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py
-    ln -s /usr/share/openvswitch/scripts/XSFeatureVSwitch.py /usr/lib/xsconsole/plugins-base/ || printf "Could not link to Open vSwitch xsconsole plugin.\n"
-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
@@ -287,10 +281,8 @@ fi
 %postun
 if [ "$1" = "0" ]; then     # $1 = 1 for upgrade
 
-    rm -f /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py \
-        /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyc \
-        /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.pyo \
-        || printf "Could not remove Open vSwitch xsconsole plugin.\n"
+    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 \
@@ -352,7 +344,6 @@ fi
 /usr/share/openvswitch/scripts/InterfaceReconfigureVswitch.py
 /usr/share/openvswitch/scripts/vif
 /usr/share/openvswitch/scripts/xen-bugtool
-/usr/share/openvswitch/scripts/XSFeatureVSwitch.py
 /usr/share/openvswitch/scripts/brctl
 /usr/share/openvswitch/scripts/sysconfig.template
 /usr/share/openvswitch/vswitch.ovsschema
@@ -365,6 +356,7 @@ fi
 /usr/bin/ovs-vsctl
 /usr/bin/ovsdb-client
 /usr/bin/ovsdb-tool
+/usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py
 /usr/share/man/man1/ovsdb-client.1.gz
 /usr/share/man/man1/ovsdb-server.1.gz
 /usr/share/man/man1/ovsdb-tool.1.gz
@@ -376,5 +368,7 @@ fi
 /usr/share/man/man8/ovs-vsctl.8.gz
 /usr/share/man/man8/ovs-vswitchd.8.gz
 /var/lib/openvswitch
+%exclude /usr/lib/xsconsole/plugins-base/*.pyc
+%exclude /usr/lib/xsconsole/plugins-base/*.pyo
 %exclude /usr/share/openvswitch/scripts/*.pyc
 %exclude /usr/share/openvswitch/scripts/*.pyo