Cleanup default file locations and XenServer packaging
authorJustin Pettit <jpettit@nicira.com>
Fri, 26 Mar 2010 05:38:13 +0000 (22:38 -0700)
committerJustin Pettit <jpettit@nicira.com>
Fri, 26 Mar 2010 21:40:31 +0000 (14:40 -0700)
This commit cleans up the locations of a number of files and directories
used.  These include:

    - Config file lives in /etc/openvswitch/conf.db
    - Logs go into /var/log/openvswitch
    - ovsdb-server socket is /var/run/openvswitch/db.sock
    - Schema goes into /usr/share/openvswitch/vswitch.ovsschema
    - PID files go in /var/run/openvswitch

For XenServer, these additional changes are made:

    - Cores go in /var/xen/openvswitch
    - OVS binaries run in /var/xen/openvswitch

In addition, it attempts to cleanup the XenServer packaging.  This
includes referring to the project as "openvswitch" as opposed to the
somewhat presumptuous "vswitch".

Note: Changes to the Debian packaging will be forthcoming.

32 files changed:
INSTALL.Linux
INSTALL.SSL
INSTALL.XenServer
INSTALL.bridge
debian/openvswitch-switch.init
lib/dirs.h
lib/unixctl.c
m4/openvswitch.m4
utilities/ovs-vsctl.8.in
utilities/ovs-vsctl.c
xenserver/README
xenserver/automake.mk
xenserver/etc_init.d_openvswitch [new file with mode: 0755]
xenserver/etc_init.d_openvswitch-xapi-update [new file with mode: 0755]
xenserver/etc_init.d_vswitch [deleted file]
xenserver/etc_init.d_vswitch-xapi-update [deleted file]
xenserver/etc_logrotate.d_openvswitch [new file with mode: 0644]
xenserver/etc_logrotate.d_vswitch [deleted file]
xenserver/etc_profile.d_openvswitch.sh [new file with mode: 0644]
xenserver/etc_profile.d_vswitch.sh [deleted file]
xenserver/etc_xapi.d_plugins_openvswitch-cfg-update [new file with mode: 0755]
xenserver/etc_xapi.d_plugins_vswitch-cfg-update [deleted file]
xenserver/etc_xensource_scripts_vif
xenserver/openvswitch-xen.spec [new file with mode: 0644]
xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py
xenserver/usr_sbin_brctl
xenserver/usr_sbin_xen-bugtool
xenserver/usr_share_openvswitch_scripts_refresh-network-uuids [new file with mode: 0755]
xenserver/usr_share_openvswitch_scripts_sysconfig.template [new file with mode: 0644]
xenserver/usr_share_vswitch_scripts_refresh-network-uuids [deleted file]
xenserver/usr_share_vswitch_scripts_sysconfig.template [deleted file]
xenserver/vswitch-xen.spec [deleted file]

index 263e2618506b8bbcb658f1b7b6dee6c6201cb87b..177a9cd13b7d2eb4df426a2f41be5e13949543d7 100644 (file)
@@ -167,7 +167,7 @@ configuration database, ovsdb-server.  Configure it to use the
 database you created during step 7 of installation, above, and to
 listen on a Unix domain socket, e.g.:
 
-      % ovsdb-server /usr/local/etc/ovs-vswitchd.conf.db --remote=punix:/usr/local/var/run/ovsdb-server
+      % ovsdb-server /usr/local/etc/ovs-vswitchd.conf.db --remote=punix:/usr/local/var/run/openvswitch/db.sock
 
 Then initialize the database with "ovs-vsctl init".  This is only
 necessary the first time after you create the database with
@@ -178,7 +178,7 @@ ovsdb-tool (but running it at any time is harmless):
 Then start the main Open vSwitch daemon, telling it to connect to the
 same Unix domain socket:
 
-      % ovs-vswitchd unix:/usr/local/var/run/ovsdb-server
+      % ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock
 
 Now you may use ovs-vsctl to set up bridges and other Open vSwitch
 features.  For example, to create a bridge named br0 and add ports
index 4ba092548021c1f3c757daab338e83e3420ab71a..3b625fbd949bfb745ae8bad39266a7c709056fd3 100644 (file)
@@ -290,7 +290,7 @@ cacert.pem:
 Once you have these files, configure ovs-vswitchd to use them using
 the ovs-vsctl "set-ssl" command, e.g.:
 
-    ovs-vsctl set-ssl /etc/vswitch/sc-privkey.pem /etc/vswitch/sc-cert.pem /etc/vswitch/cacert.pem
+    ovs-vsctl set-ssl /etc/openvswitch/sc-privkey.pem /etc/openvswitch/sc-cert.pem /etc/openvswitch/cacert.pem
 
 Substitute the correct file names, of course, if they differ from the
 ones used above.  You should use absolute file names (ones that begin
@@ -301,7 +301,7 @@ If you are using self-signed certificates (see "SSL Concepts for
 OpenFlow") and you did not copy controllerca/cacert.pem from the PKI
 machine to the Open vSwitch, then add the --bootstrap option, e.g.:
 
-    ovs-vsctl -- --bootstrap set-ssl /etc/vswitch/sc-privkey.pem /etc/vswitch/sc-cert.pem /etc/vswitch/cacert.pem
+    ovs-vsctl -- --bootstrap set-ssl /etc/openvswitch/sc-privkey.pem /etc/openvswitch/sc-cert.pem /etc/openvswitch/cacert.pem
 
 After you have added all of these configuration keys, you may specify
 "ssl:" connection methods elsewhere in the configuration database.
index 54766332bd5f5d567a15f0e91e5106a70dd317f9..2f41d8f5b5c1a777d79d28da01b5ee5ef67ce403 100644 (file)
@@ -28,9 +28,9 @@ Once you have a distribution tarball, copy it into
    cd /tmp
    tar xfz /usr/src/redhat/SOURCES/openvswitch-$VERSION.tar.gz
    rpmbuild \
-        -D "vswitch_version $VERSION" \
+        -D "openvswitch_version $VERSION" \
         -D "xen_version $XENKERNEL" \
-        -bb openvswitch-$VERSION/xenserver/vswitch-xen.spec
+        -bb openvswitch-$VERSION/xenserver/openvswitch-xen.spec
 
 where:
 
@@ -43,26 +43,26 @@ where:
     It always ends in "xen".
 
 Two RPMs will be output into /usr/src/redhat/RPMS, whose names begin
-with "vswitch" and "vswitch-debuginfo".
+with "openvswitch" and "openvswitch-debuginfo".
 
 Installing Open vSwitch for XenServer
 -------------------------------------
 
 To install Open vSwitch on a XenServer host, or to upgrade to a newer
-version, copy the "vswitch" RPM to that host with "scp", then install
+version, copy the "openvswitch" RPM to that host with "scp", then install
 it with "rpm -U", e.g.:
 
-     scp vswitch-$VERSION-1.i386.rpm root@<host>:
+     scp openvswitch-$VERSION-1.i386.rpm root@<host>:
 (At this point you will have to enter <host>'s root password.) 
      ssh root@<host>
 (At this point you will have to enter <host>'s root password again.) 
-     rpm -U vswitch-$VERSION-1.i386.rpm
+     rpm -U openvswitch-$VERSION-1.i386.rpm
 
 To uninstall Open vSwitch from a XenServer host, remove the package:
 
      ssh root@<host>
 (At this point you will have to enter <host>'s root password again.) 
-     rpm -e vswitch
+     rpm -e openvswitch
 
 After installing or uninstalling Open vSwitch, the XenServer should be
 rebooted as soon as possible.
index fc04a87e0a85978ea6a0713be7cd9c87ca5fae4c..8e65021b67e89ba8bbad55930906cf3814471543 100644 (file)
@@ -41,7 +41,7 @@ kernel bridge module.
 3. Start ovs-brcompatd:
 
       % ovs-brcompatd --pidfile --detach -vANY:console:EMER \
-                unix:/usr/local/var/run/ovsdb-server
+                unix:/usr/local/var/run/openvswitch/db.sock
 
    (ovsdb-server and ovs-vswitchd should already have been loaded.)
 
index 3db7ace79a9e44f1aa90dda58338c361b26996eb..08f961adca9d80273da6f81620dc50e33f2cf5bd 100755 (executable)
@@ -205,7 +205,7 @@ case "$1" in
         fi
 
         # Create an empty configuration database if it doesn't exist.
-        if test ! -e /etc/openvswitch-switch/conf; then
+        if test ! -e /etc/openvswitch/conf.db; then
             # Create configuration database.
             ovsdb-tool -vANY:console:emer \
                 create /etc/openvswitch-switch/conf \
index 5e2610590814c539c6680a202681d9f92ab3a97d..ea5e3b5daa43e1a35cd1d22d1f3db4a383087f48 100644 (file)
@@ -18,8 +18,8 @@
 #define DIRS_H 1
 
 extern const char ovs_pkgdatadir[]; /* /usr/local/share/openvswitch */
-extern const char ovs_rundir[];     /* /usr/local/var/run */
-extern const char ovs_logdir[];     /* /usr/local/var/log */
+extern const char ovs_rundir[];     /* /usr/local/var/run/openvswitch */
+extern const char ovs_logdir[];     /* /usr/local/var/log/openvswitch */
 extern const char ovs_bindir[];     /* /usr/local/bin */
 
 #endif /* dirs.h */
index 88fe60352453dc4b9531302b13628e5a14f6e9a0..b52d3d1ece15e5c955d0bffda4b1437812738438 100644 (file)
@@ -443,7 +443,7 @@ unixctl_server_destroy(struct unixctl_server *server)
 \f
 /* Connects to a Vlog server socket.  'path' should be the name of a Vlog
  * server socket.  If it does not start with '/', it will be prefixed with
- * ovs_rundir (e.g. /var/run).
+ * ovs_rundir (e.g. /var/run/openvswitch).
  *
  * Returns 0 if successful, otherwise a positive errno value.  If successful,
  * sets '*clientp' to the new unixctl_client, otherwise to NULL. */
index ccb3a0143f705b8c28d715e2d9ccde555562c979..58e4b64e0255c8f4f61df4f4b592d70bc2fa7483 100644 (file)
@@ -113,9 +113,10 @@ AC_DEFUN([OVS_CHECK_RUNDIR],
   [AC_ARG_WITH(
      [rundir], 
      AC_HELP_STRING([--with-rundir=DIR], 
-                    [directory used for pidfiles [[LOCALSTATEDIR/run]]]),
+                    [directory used for pidfiles
+                    [[LOCALSTATEDIR/run/openvswitch]]]),
      [RUNDIR=$withval],
-     [RUNDIR='${localstatedir}/run'])
+     [RUNDIR='${localstatedir}/run/openvswitch'])
    AC_SUBST([RUNDIR])])
 
 dnl Checks for the directory in which to store logs.
index 19ef5584df24518ab3c6b580bbc27e1c8acfda73..ee1eadf3788843d6ccd6edcccb2f2de81316af2d 100644 (file)
@@ -79,7 +79,7 @@ the global options by \fB\-\-\fR.
 .IP "\fB\-\-db=\fIserver\fR"
 Sets \fIserver\fR as the database server that \fBovs\-vsctl\fR
 contacts to query or modify configuration.  The default is
-\fBunix:@RUNDIR@/ovsdb\-server\fR.  \fIserver\fR must take one of the
+\fBunix:@RUNDIR@/db.sock\fR.  \fIserver\fR must take one of the
 following forms:
 .RS
 .so ovsdb/remote-active.man
index 4ca737edc1478fa4adf4b29ad0792903e2191ad0..0bf87c2be57db0ad9f95f6a65b7bb16527df55e5 100644 (file)
@@ -449,7 +449,7 @@ default_db(void)
 {
     static char *def;
     if (!def) {
-        def = xasprintf("unix:%s/ovsdb-server", ovs_rundir);
+        def = xasprintf("unix:%s/db.sock", ovs_rundir);
     }
     return def;
 }
index 6dafdb4028eb28e8118b5fce937eb4c982754e38..255e5e602109f9720c197a70978dc9b8d6da7d8a 100644 (file)
@@ -1,4 +1,4 @@
-This directory contains files for seamless integration of vswitch on
+This directory contains files for seamless integration of Open vSwitch on
 Citrix XenServer hosts managed by the Citrix management tools.
 
 Some of these files are modifications of Citrix's proprietary code.
@@ -11,55 +11,60 @@ Most of the files in this directory is installed on a XenServer system
 under the same name, if underscores are replaced by slashes.  The
 files are:
 
-    etc_init.d_vswitch
+    etc_init.d_openvswitch
 
-        Initializes the vswitch at boot and shuts it down at shutdown.
+        Initializes Open vSwitch at boot and shuts it down at shutdown.
 
-    etc_init.d_vswitch-xapi-update
+    etc_init.d_openvswitch-xapi-update
 
-        Init script to ensure vswitch-cfg-update is called for the
+        Init script to ensure openvswitch-cfg-update is called for the
         current host at boot.
 
-    etc_logrotate.d_vswitch
+    etc_logrotate.d_openvswitch
 
-        Ensures that /var/log/ovs-vswitchd.log is rotated periodically
-        and that ovs-vswitchd reopens its log file at that point.
+        Ensures that logs in /var/log/openvswitch are rotated
+        periodically and that appropriate daemons reopen their log
+        files at that point.
 
-    etc_profile.d_vswitch.sh
+    etc_profile.d_openvswitch.sh
 
-        vswitch-related shell functions for the administrator's
+        Open vSwitch-related shell functions for the administrator's
         convenience.
 
-    etc_xapi.d_plugins_vswitch-cfg-update
+    etc_xapi.d_plugins_openvswitch-cfg-update
 
         xapi plugin script to update the cache of configuration items
-        in the ovs-vswitchd configuration file that are managed in the
+        in the ovs-vswitchd configuration that are managed in the
         xapi database when integrated with Citrix management tools.
 
     etc_xensource_scripts_vif
 
-        vswitch-aware replacement for Citrix script of the same name.
+        Open vSwitch-aware replacement for Citrix script of the same name.
+
+    openvswitch-xen.spec
+
+        spec file for building RPMs to install on a XenServer host.
 
     opt_xensource_libexec_interface-reconfigure
 
-        vswitch-aware replacement for Citrix script of the same name.
+        Open vSwitch-aware replacement for Citrix script of the same name.
 
-    usr_share_vswitch_scripts_refresh-network-uuids
+    usr_share_openvswitch_scripts_refresh-network-uuids
 
         Script to refresh bridge.<bridge>.network-uuids keys, which
         can get out-of-sync following a pool join.  Running this script
         is an alternative to rebooting the host.
 
-    root_vswitch_scripts_sysconfig.template
+    usr_share_openvswitch_scripts_sysconfig.template
 
-        Template for vswitch's /etc/sysconfig/vswitch configuration
-        file.
+        Template for Open vSwitch's /etc/sysconfig/openvswitch 
+        configuration file.
 
     usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py
 
         xsconsole plugin to configure the pool-wide configuration keys
-        used to control vswitch when integrated with Citrix management
-        tools.
+        used to control Open vSwitch when integrated with Citrix 
+        management tools.
 
     usr_sbin_brctl
 
@@ -68,25 +73,21 @@ files are:
 
     usr_sbin_xen-bugtool
 
-        vswitch-aware replacement for Citrix script of the same name.
-
-    vswitch-xen.spec
-
-        spec file for building RPMs to install on a XenServer host.
+        Open vSwitch-aware replacement for Citrix script of the same name.
 
-To install, build the vswitch RPM with a command like this:
+To install, build the Open vSwitch RPM with a command like this:
 
-        rpmbuild -D "vswitch_version $full_version" \
+        rpmbuild -D "openvswitch_version $full_version" \
                 -D "xen_version $XENKERNEL" \
                 -D "build_number --with-build-number=$buildnr" \
-                -bb vswitch-xen.spec
+                -bb openvswitch-xen.spec
 
-Then, "rpm -U" the resulting vswitch package on the XenServer hosts in
-question and reboot them.  (The vswitch-dbg package that is also
+Then, "rpm -U" the resulting Open vSwitch package on the XenServer hosts in
+question and reboot them.  (The openvswitch-dbg package that is also
 produced need not be installed, but it is harmless to do so.)
 
 ----------------------------------------------------------------------
-Copyright (C) 2009 Nicira Networks, Inc.
+Copyright (C) 2009, 2010 Nicira Networks, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
index dde4105e663afdc1fedad604b54fa75057ebd532..b451bbb877c7421c8574da7aadc994f6c9c71f73 100644 (file)
@@ -9,12 +9,13 @@ EXTRA_DIST += \
        xenserver/LICENSE \
        xenserver/README \
        xenserver/automake.mk \
-       xenserver/etc_init.d_vswitch \
-       xenserver/etc_init.d_vswitch-xapi-update \
-       xenserver/etc_logrotate.d_vswitch \
-       xenserver/etc_profile.d_vswitch.sh \
-       xenserver/etc_xapi.d_plugins_vswitch-cfg-update \
+       xenserver/etc_init.d_openvswitch \
+       xenserver/etc_init.d_openvswitch-xapi-update \
+       xenserver/etc_logrotate.d_openvswitch \
+       xenserver/etc_profile.d_openvswitch.sh \
+       xenserver/etc_xapi.d_plugins_openvswitch-cfg-update \
        xenserver/etc_xensource_scripts_vif \
+       xenserver/openvswitch-xen.spec \
        xenserver/opt_xensource_libexec_InterfaceReconfigure.py \
        xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py \
        xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py \
@@ -22,6 +23,5 @@ EXTRA_DIST += \
        xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
        xenserver/usr_sbin_brctl \
        xenserver/usr_sbin_xen-bugtool \
-       xenserver/usr_share_vswitch_scripts_refresh-network-uuids \
-       xenserver/usr_share_vswitch_scripts_sysconfig.template \
-       xenserver/vswitch-xen.spec
+       xenserver/usr_share_openvswitch_scripts_refresh-network-uuids \
+       xenserver/usr_share_openvswitch_scripts_sysconfig.template
diff --git a/xenserver/etc_init.d_openvswitch b/xenserver/etc_init.d_openvswitch
new file mode 100755 (executable)
index 0000000..f531d45
--- /dev/null
@@ -0,0 +1,440 @@
+#!/bin/bash
+#
+# openvswitch
+#
+# chkconfig: 2345 09 91
+# description: Manage Open vSwitch kernel modules and user-space daemons
+
+# Copyright (C) 2009, 2010 Nicira Networks, 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.
+
+. /etc/init.d/functions
+
+test -e /etc/sysconfig/openvswitch && . /etc/sysconfig/openvswitch
+
+# General config variables in /etc/sysconfig/openvswitch
+: ${ENABLE_BRCOMPAT:=y}
+: ${ENABLE_FAKE_PROC_NET:=y}
+: ${ENABLE_MONITOR:=y}
+: ${FORCE_COREFILES:=y}
+
+# Config variables specific to ovsdb-server
+: ${OVSDB_SERVER_REMOTES:=punix:/var/run/openvswitch/db.sock db:Open_vSwitch,managers}
+: ${OVSDB_SERVER_DB:=/etc/openvswitch/conf.db}
+: ${OVSDB_SERVER_PIDFILE:=/var/run/openvswitch/ovsdb-server.pid}
+: ${OVSDB_SERVER_RUN_DIR:=/var/xen/openvswitch}
+: ${OVSDB_SERVER_PRIORITY:=-10}
+: ${OVSDB_SERVER_LOGFILE:=/var/log/openvswitch/ovsdb-server.log}
+: ${OVSDB_SERVER_FILE_LOGLEVEL:=INFO}
+: ${OVSDB_SERVER_SYSLOG_LOGLEVEL:=ERR}
+: ${OVSDB_SERVER_MEMLEAK_LOGFILE:=}
+: ${OVSDB_SERVER_STRACE_LOG:=}
+: ${OVSDB_SERVER_STRACE_OPT:=}
+: ${OVSDB_SERVER_VALGRIND_LOG:=}
+: ${OVSDB_SERVER_VALGRIND_OPT:=}
+
+# Config variables specific to ovs-vswitchd
+: ${VSWITCHD_OVSDB_SERVER:=unix:/var/run/openvswitch/db.sock}
+: ${VSWITCHD_OVSDB_SCHEMA:=/usr/share/openvswitch/vswitch.ovsschema}
+: ${VSWITCHD_PIDFILE:=/var/run/openvswitch/ovs-vswitchd.pid}
+: ${VSWITCHD_RUN_DIR:=/var/xen/openvswitch}
+: ${VSWITCHD_PRIORITY:=-10}
+: ${VSWITCHD_MLOCKALL:=yes}
+: ${VSWITCHD_LOGFILE:=/var/log/openvswitch/ovs-vswitchd.log}
+: ${VSWITCHD_FILE_LOGLEVEL:=INFO}
+: ${VSWITCHD_SYSLOG_LOGLEVEL:=ERR}
+: ${VSWITCHD_MEMLEAK_LOGFILE:=}
+: ${VSWITCHD_STRACE_LOG:=}
+: ${VSWITCHD_STRACE_OPT:=}
+: ${VSWITCHD_VALGRIND_LOG:=}
+: ${VSWITCHD_VALGRIND_OPT:=}
+
+# Config variables specific to ovs-brcompatd
+: ${BRCOMPATD_PIDFILE:=/var/run/openvswitch/ovs-brcompatd.pid}
+: ${BRCOMPATD_RUN_DIR:=/var/xen/openvswitch}
+: ${BRCOMPATD_PRIORITY:=-10}
+: ${BRCOMPATD_LOGFILE:=/var/log/openvswitch/ovs-brcompatd.log}
+: ${BRCOMPATD_FILE_LOGLEVEL:=INFO}
+: ${BRCOMPATD_SYSLOG_LOGLEVEL:=ERR}
+: ${BRCOMPATD_MEMLEAK_LOGFILE:=}
+: ${BRCOMPATD_STRACE_LOG:=}
+: ${BRCOMPATD_STRACE_OPT:=}
+: ${BRCOMPATD_VALGRIND_LOG:=}
+: ${BRCOMPATD_VALGRIND_OPT:=}
+
+# Full paths to executables & modules
+ovsdb_server="/usr/sbin/ovsdb-server"
+ovsdb_tool="/usr/bin/ovsdb-tool"
+vswitchd="/usr/sbin/ovs-vswitchd"
+brcompatd="/usr/sbin/ovs-brcompatd"
+dpctl="/usr/bin/ovs-dpctl"
+appctl="/usr/bin/ovs-appctl"
+ofctl="/usr/bin/ovs-ofctl"
+vsctl="/usr/bin/ovs-vsctl"
+
+if [ "$ENABLE_FAKE_PROC_NET" = "y" ]; then
+    if [ "$ENABLE_BRCOMPAT" != "y" ]; then
+        warning "FAKE_PROC_NET required BRCOMPAT which was disabled.  Force enabling."
+        ENABLE_BRCOMPAT="y"
+    fi
+fi
+
+if test "$ENABLE_MONITOR" = "y"; then
+    monitor_opt="--monitor"
+else
+    monitor_opt=
+fi
+
+function dp_list {
+    "$dpctl" show | grep '^dp[0-9]\+:' | cut -d':' -f 1
+}
+
+function turn_on_corefiles {
+    ulimit -Sc 67108864
+}
+
+function remove_all_dp {
+    for dp in $(dp_list); do
+        action "Removing datapath: $dp" "$dpctl" del-dp "$dp"
+    done
+}
+
+function insert_modules_if_required {
+    if ! lsmod | grep -q "openvswitch_mod"; then
+        action "Inserting llc module" modprobe llc
+        action "Inserting openvswitch module" modprobe openvswitch_mod
+    fi
+    if [ -n "$BRCOMPATD_PIDFILE" ] && ! lsmod | grep -q "brcompat_mod"; then
+        action "Inserting brcompat module" modprobe brcompat_mod
+    fi
+    if [ -f "/lib/modules/`uname -r`/kernel/net/openvswitch/ip_gre_mod.ko" ] && ! lsmod | grep -q "ip_gre_mod"; then
+        action "Inserting ip_gre module" modprobe ip_gre_mod
+    fi
+}
+
+function remove_modules {
+    if lsmod | grep -q "brcompat_mod"; then
+        action "Removing brcompat module" rmmod brcompat_mod.ko
+    fi
+    if lsmod | grep -q "openvswitch_mod"; then
+        action "Removing openvswitch module" rmmod openvswitch_mod.ko
+    fi
+    if lsmod | grep -q "ip_gre_mod"; then
+        action "Removing ip_gre module" rmmod ip_gre_mod.ko
+    fi
+}
+
+function start_ovsdb_server {
+    local syslog_opt="-vANY:SYSLOG:${OVSDB_SERVER_SYSLOG_LOGLEVEL}"
+    local logfile_file_opt=""
+    local logfile_level_opt=""
+    if [ ! -d "$OVSDB_SERVER_RUN_DIR" ]; then
+        install -d -m 755 -o root -g root "$OVSDB_SERVER_RUN_DIR"
+    fi
+    cd "$OVSDB_SERVER_RUN_DIR"
+    local remotes=
+    for remote in $OVSDB_SERVER_REMOTES; do
+        remotes="$remotes --remote=$remote"
+    done
+
+    install -d -m 755 -o root -g root `dirname $OVSDB_SERVER_LOGFILE`
+    if [ -n "$OVSDB_SERVER_FILE_LOGLEVEL" ]; then
+        logfile_level_opt="-vANY:FILE:${OVSDB_SERVER_FILE_LOGLEVEL}"
+        logfile_file_opt="--log-file=$OVSDB_SERVER_LOGFILE"
+    fi
+
+    local leak_opt=""
+    if [ -n "$OVSDB_SERVER_MEMLEAK_LOGFILE" ]; then
+        leak_opt="--check-leaks=$OVSDB_SERVER_MEMLEAK_LOGFILE"
+        if [ -e "$OVSDB_SERVER_MEMLEAK_LOGFILE" ]; then
+            mv "$OVSDB_SERVER_MEMLEAK_LOGFILE" "$OVSDB_SERVER_MEMLEAK_LOGFILE.prev"
+        fi
+    fi
+    local strace_opt=""
+    local daemonize="y"
+    if [ -n "$OVSDB_SERVER_STRACE_LOG" ] && [ -n "$OVSDB_SERVER_VALGRIND_LOG" ]; then
+        printf "Can not start with both VALGRIND and STRACE\n"
+        exit 1
+    fi
+    if [ -n "$OVSDB_SERVER_STRACE_LOG" ]; then
+        strace_opt="strace -o $OVSDB_SERVER_STRACE_LOG $OVSDB_SERVER_STRACE_OPT"
+        daemonize="n"
+    fi
+    if [ -n "$OVSDB_SERVER_VALGRIND_LOG" ]; then
+        valgrind_opt="valgrind --log-file=$OVSDB_SERVER_VALGRIND_LOG $OVSDB_SERVER_VALGRIND_OPT"
+        daemonize="n"
+    fi
+    ssl_opts="--private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert"
+    install -d -m 755 -o root -g root `dirname $OVSDB_SERVER_PIDFILE`
+    if [ "$daemonize" != "y" ]; then
+        # Start in background and force a "success" message
+        action "Starting ovsdb_server ($strace_opt$valgrind_opt)" true
+        (nice -n "$OVSDB_SERVER_PRIORITY" $strace_opt $valgrind_opt "$ovsdb_server" "$OVSDB_SERVER_DB" --pidfile="$OVSDB_SERVER_PIDFILE" --detach $monitor_opt --no-chdir -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $remotes $ssl_opts) &
+    else
+        action "Starting ovsdb-server" nice -n "$OVSDB_SERVER_PRIORITY" "$ovsdb_server" "$OVSDB_SERVER_DB" --pidfile="$OVSDB_SERVER_PIDFILE" --detach $monitor_opt --no-chdir -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $remotes $ssl_opts
+    fi
+}
+
+function start_vswitchd {
+    local syslog_opt="-vANY:SYSLOG:${VSWITCHD_SYSLOG_LOGLEVEL}"
+    local logfile_file_opt=""
+    local logfile_level_opt=""
+    if [ ! -d "$VSWITCHD_RUN_DIR" ]; then
+        install -d -m 755 -o root -g root "$VSWITCHD_RUN_DIR"
+    fi
+    cd "$VSWITCHD_RUN_DIR"
+
+    install -d -m 755 -o root -g root `dirname $VSWITCHD_LOGFILE`
+    if [ -n "$VSWITCHD_FILE_LOGLEVEL" ]; then
+        logfile_level_opt="-vANY:FILE:${VSWITCHD_FILE_LOGLEVEL}"
+        logfile_file_opt="--log-file=$VSWITCHD_LOGFILE"
+    fi
+
+    local leak_opt=""
+    if [ -n "$VSWITCHD_MEMLEAK_LOGFILE" ]; then
+        leak_opt="--check-leaks=$VSWITCHD_MEMLEAK_LOGFILE"
+        if [ -e "$VSWITCHD_MEMLEAK_LOGFILE" ]; then
+            mv "$VSWITCHD_MEMLEAK_LOGFILE" "$VSWITCHD_MEMLEAK_LOGFILE.prev"
+        fi
+    fi
+    local strace_opt=""
+    local daemonize="y"
+    if [ -n "$VSWITCHD_STRACE_LOG" ] && [ -n "$VSWITCHD_VALGRIND_LOG" ]; then
+        printf "Can not start with both VALGRIND and STRACE\n"
+        exit 1
+    fi
+    if [ -n "$VSWITCHD_STRACE_LOG" ]; then
+        strace_opt="strace -o $VSWITCHD_STRACE_LOG $VSWITCHD_STRACE_OPT"
+        daemonize="n"
+    fi
+    if [ -n "$VSWITCHD_VALGRIND_LOG" ]; then
+        valgrind_opt="valgrind --log-file=$VSWITCHD_VALGRIND_LOG $VSWITCHD_VALGRIND_OPT"
+        daemonize="n"
+    fi
+    local fake_proc_net_opt=""
+    if [ "$ENABLE_FAKE_PROC_NET" = "y" ]; then
+        fake_proc_net_opt="--fake-proc-net"
+    fi
+    if [ "$VSWITCHD_MLOCKALL" != "no" ]; then
+        mlockall_opt="--mlockall"
+    fi
+
+    install -d -m 755 -o root -g root `dirname $VSWITCHD_PIDFILE`
+    if [ "$daemonize" != "y" ]; then
+        # Start in background and force a "success" message
+        action "Starting ovs-vswitchd ($strace_opt$valgrind_opt)" true
+        (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_OVSDB_SERVER") &
+    else
+        action "Starting ovs-vswitchd" nice -n "$VSWITCHD_PRIORITY" "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_OVSDB_SERVER"
+    fi
+}
+
+function start_brcompatd {
+    local syslog_opt="-vANY:SYSLOG:${BRCOMPATD_SYSLOG_LOGLEVEL}"
+    local logfile_file_opt=""
+    local logfile_level_opt=""
+    if [ -d "$BRCOMPATD_RUN_DIR" ]; then
+        install -d -m 755 -o root -g root "$BRCOMPATD_RUN_DIR"
+    fi
+    cd "$BRCOMPATD_RUN_DIR"
+
+    install -d -m 755 -o root -g root `dirname $BRCOMPATD_LOGFILE`
+    if [ -n "$BRCOMPATD_FILE_LOGLEVEL" ]; then
+        logfile_level_opt="-vANY:FILE:${BRCOMPATD_FILE_LOGLEVEL}"
+        logfile_file_opt="--log-file=$BRCOMPATD_LOGFILE"
+    fi
+
+    local leak_opt=""
+    if [ -n "$BRCOMPATD_MEMLEAK_LOGFILE" ]; then
+        leak_opt="--check-leaks=$BRCOMPATD_MEMLEAK_LOGFILE"
+        if [ -e "$BRCOMPATD_MEMLEAK_LOGFILE" ]; then
+            mv "$BRCOMPATD_MEMLEAK_LOGFILE" "$BRCOMPATD_MEMLEAK_LOGFILE.prev"
+        fi
+    fi
+    local strace_opt=""
+    local daemonize="y"
+    if [ -n "$BRCOMPATD_STRACE_LOG" ] && [ -n "$BRCOMPATD_VALGRIND_LOG" ]; then
+        printf "Can not start with both VALGRIND and STRACE\n"
+        exit 1
+    fi
+    if [ -n "$BRCOMPATD_STRACE_LOG" ]; then
+        strace_opt="strace -o $BRCOMPATD_STRACE_LOG $BRCOMPATD_STRACE_OPT"
+        daemonize="n"
+    fi
+    if [ -n "$VALGRIND_LOG" ]; then
+        valgrind_opt="valgrind --log-file=$BRCOMPATD_VALGRIND_LOG $BRCOMPATD_VALGRIND_OPT"
+        daemonize="n"
+    fi
+    appctl_cmd="$appctl --target=/var/run/openvswitch/ovs-vswitchd.\`cat $VSWITCHD_PIDFILE\`.ctl %s"
+
+    install -d -m 755 -o root -g root `dirname $BRCOMPATD_PIDFILE`
+    if [ "$daemonize" != "y" ]; then
+        # Start in background and force a "success" message
+        action "Starting ovs-brcompatd ($strace_opt$valgrind_opt)" true
+        (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$brcompatd"--no-chdir --appctl-command="$appctl_cmd" --pidfile=$BRCOMPATD_PIDFILE -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt "$VSWITCHD_OVSDB_SERVER") &
+    else
+        action "Starting ovs-brcompatd" nice -n "$BRCOMPATD_PRIORITY" $strace_opt $valgrind_opt "$brcompatd" --no-chdir --appctl-command="$appctl_cmd" --pidfile=$BRCOMPATD_PIDFILE --detach $monitor_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt "$VSWITCHD_OVSDB_SERVER"
+    fi
+}
+
+function stop_ovsdb_server {
+    if [ -f "$OVSDB_SERVER_PIDFILE" ]; then
+        local pid=$(cat "$OVSDB_SERVER_PIDFILE")
+        action "Killing ovsdb-server ($pid)" kill -TERM $pid
+        rm -f "$OVSDB_SERVER_PIDFILE"
+    fi
+}
+
+function stop_vswitchd {
+    if [ -f "$VSWITCHD_PIDFILE" ]; then
+        local pid=$(cat "$VSWITCHD_PIDFILE")
+        action "Killing ovs-vswitchd ($pid)" kill -TERM $pid
+        rm -f "$VSWITCHD_PIDFILE"
+    fi
+}
+
+function stop_brcompatd {
+    if [ -f "$BRCOMPATD_PIDFILE" ]; then
+        local pid=$(cat "$BRCOMPATD_PIDFILE")
+        action "Killing ovs-brcompatd ($pid)" kill -TERM $pid
+        rm -f "$BRCOMPATD_PIDFILE"
+    fi
+}
+
+function restart_approval {
+    if test ! -t 0; then
+        # Don't prompt if invoked non-interactively.
+        return 0
+    fi
+    cat <<EOF
+
+WARNING!!!
+
+Restarting Open vSwitch on a live server is not guaranteed to work.  It is
+provided as a convenience for those situations in which it does work.
+
+EOF
+    read -s -r -n 1 -p "Countinue with restart (y/N): " response
+    printf "\n"
+    case "$response" in
+        y|Y)
+            return 0
+            ;;
+        *)
+            return 1
+            ;;
+    esac
+}
+
+function set_system_uuid {
+    system_uuid=$(. /etc/xensource-inventory && echo $INSTALLATION_UUID)
+    if test -n "$system_uuid"; then
+        action "Configuring Open vSwitch system UUID" true
+        $vsctl --no-wait set Open_vSwitch . external-ids:system-uuid="$system_uuid"
+    else
+        action "Configuring Open vSwitch system UUID" false
+    fi
+}
+
+function start {
+    if [ "$FORCE_COREFILES" = "y" ]; then
+        turn_on_corefiles
+    fi
+
+    insert_modules_if_required
+
+    # Increase the limit on the number of open file descriptors since
+    # ovs-vswitchd needs a few per bridge
+    ulimit -n 4096
+
+    # Allow GRE traffic.
+    iptables -I INPUT -p gre -j ACCEPT
+
+    if [ ! -e "$OVSDB_SERVER_DB" ]; then
+        warning "$OVSDB_SERVER_DB does not exist"
+        install -d -m 755 -o root -g root `dirname $OVSDB_SERVER_DB`
+
+        action "Creating empty database $OVSDB_SERVER_DB" true
+        $ovsdb_tool -vANY:console:emer create "$OVSDB_SERVER_DB" "$VSWITCHD_OVSDB_SCHEMA"
+    else
+        # Upgrade or downgrade schema and compact database.
+        $ovsdb_tool -vANY:console:emer convert "$OVSDB_SERVER_DB" "$VSWITCHD_OVSDB_SCHEMA"
+    fi
+
+    start_ovsdb_server
+    $vsctl --no-wait init
+    if [ ! -e /var/run/openvswitch.booted ]; then
+        touch /var/run/openvswitch.booted
+        for bridge in $($vsctl list-br); do
+            $vsctl --no-wait del-br $bridge
+        done
+    fi
+
+    set_system_uuid
+
+    start_vswitchd
+    start_brcompatd
+    touch /var/lock/subsys/openvswitch
+}
+
+function stop {
+    stop_brcompatd
+    stop_vswitchd
+    stop_ovsdb_server
+    rm -f /var/lock/subsys/openvswitch
+}
+
+function restart {
+    if restart_approval; then
+        stop
+        start
+    fi
+}
+
+case "$1" in
+    start)
+        start
+        ;;
+    stop)
+        stop
+        ;;
+    restart)
+        restart
+        ;;
+    strace-vswitchd)
+        shift
+        strace -p $(cat "$VSWITCHD_PIDFILE") "$@"
+        ;;
+    strace-brcompatd)
+        shift
+        strace -p $(cat "$BRCOMPATD_PIDFILE") "$@"
+        ;;
+    status)
+        status -p "$OVSDB_SERVER_PIDFILE" ovsdb-server
+        status -p "$VSWITCHD_PIDFILE" ovs-vswitchd
+        status -p "$BRCOMPATD_PIDFILE" ovs-brcompatd
+        ;;
+    version)
+        /usr/sbin/ovsdb-server -V
+        /usr/sbin/ovs-vswitchd -V
+        /usr/sbin/ovs-brcompatd -V
+        ;;
+    help)
+        printf "openvswitch [start|stop|restart|unload|status|version]\n"
+        ;;
+    *)
+        printf "Unknown command: $1\n"
+        exit 1
+        ;;
+esac
diff --git a/xenserver/etc_init.d_openvswitch-xapi-update b/xenserver/etc_init.d_openvswitch-xapi-update
new file mode 100755 (executable)
index 0000000..1c5f079
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/bash
+#
+# vswitch-xapi-update
+#
+# chkconfig: 2345 95 01
+# description: Update vswitch configuration from XAPI database at boot
+
+# Copyright (C) 2009 Nicira Networks, 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.
+
+. /etc/init.d/functions
+
+function do_host_call {
+    xe host-call-plugin host-uuid="$INSTALLATION_UUID" plugin="vswitch-cfg-update" fn="update" >/dev/null
+}
+
+function start {
+    if [ ! -f /etc/xensource-inventory ]; then
+        printf "vswitch-xapi-update ERROR: XenSource inventory not present in /etc/xensource-inventory\n"
+        exit 1
+    fi
+    source /etc/xensource-inventory
+    action "Updating configuration" do_host_call
+}
+
+case "$1" in
+    start)
+        start
+        ;;
+    stop)
+        # Nothing to do here.
+        ;;
+    restart)
+        start
+        ;;
+    help)
+        printf "vswitch-xapi-update [start|stop|restart]\n"
+        ;;
+    *)
+        printf "Unknown command: $1\n"
+        exit 1
+        ;;
+esac
diff --git a/xenserver/etc_init.d_vswitch b/xenserver/etc_init.d_vswitch
deleted file mode 100755 (executable)
index 9b05879..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-#!/bin/bash
-#
-# vswitch
-#
-# chkconfig: 2345 09 91
-# description: Manage vswitch kernel modules and user-space daemon
-
-# Copyright (C) 2009, 2010 Nicira Networks, 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.
-
-. /etc/init.d/functions
-
-test -e /etc/sysconfig/vswitch && . /etc/sysconfig/vswitch
-
-# General config variables in /etc/sysconfig/vswitch
-: ${ENABLE_BRCOMPAT:=y}
-: ${ENABLE_FAKE_PROC_NET:=y}
-: ${ENABLE_MONITOR:=y}
-: ${FORCE_COREFILES:=y}
-
-# Config variables specific to ovsdb-server
-: ${OVSDB_SERVER_REMOTES:=punix:/var/run/ovsdb-server db:Open_vSwitch,managers}
-: ${OVSDB_SERVER_DB:=/etc/ovs-vswitchd.conf.db}
-: ${OVSDB_SERVER_PIDFILE:=/var/run/ovsdb-server.pid}
-: ${OVSDB_SERVER_RUN_DIR:=/var/xen/vswitch}
-: ${OVSDB_SERVER_PRIORITY:=-10}
-: ${OVSDB_SERVER_LOGFILE:=/var/log/ovsdb-server.log}
-: ${OVSDB_SERVER_FILE_LOGLEVEL:=INFO}
-: ${OVSDB_SERVER_SYSLOG_LOGLEVEL:=ERR}
-: ${OVSDB_SERVER_MEMLEAK_LOGFILE:=}
-: ${OVSDB_SERVER_STRACE_LOG:=}
-: ${OVSDB_SERVER_STRACE_OPT:=}
-: ${OVSDB_SERVER_VALGRIND_LOG:=}
-: ${OVSDB_SERVER_VALGRIND_OPT:=}
-
-# Config variables specific to ovs-vswitchd
-: ${VSWITCHD_OVSDB_SERVER:=unix:/var/run/ovsdb-server}
-: ${VSWITCHD_OVSDB_SCHEMA:=/usr/share/vswitch/vswitch.ovsschema}
-: ${VSWITCHD_PIDFILE:=/var/run/ovs-vswitchd.pid}
-: ${VSWITCHD_RUN_DIR:=/var/xen/vswitch}
-: ${VSWITCHD_PRIORITY:=-10}
-: ${VSWITCHD_MLOCKALL:=yes}
-: ${VSWITCHD_LOGFILE:=/var/log/ovs-vswitchd.log}
-: ${VSWITCHD_FILE_LOGLEVEL:=INFO}
-: ${VSWITCHD_SYSLOG_LOGLEVEL:=ERR}
-: ${VSWITCHD_MEMLEAK_LOGFILE:=}
-: ${VSWITCHD_STRACE_LOG:=}
-: ${VSWITCHD_STRACE_OPT:=}
-: ${VSWITCHD_VALGRIND_LOG:=}
-: ${VSWITCHD_VALGRIND_OPT:=}
-
-# Config variables specific to ovs-brcompatd
-: ${BRCOMPATD_PIDFILE:=/var/run/ovs-brcompatd.pid}
-: ${BRCOMPATD_RUN_DIR:=/var/xen/vswitch}
-: ${BRCOMPATD_PRIORITY:=-10}
-: ${BRCOMPATD_LOGFILE:=/var/log/ovs-brcompatd.log}
-: ${BRCOMPATD_FILE_LOGLEVEL:=INFO}
-: ${BRCOMPATD_SYSLOG_LOGLEVEL:=ERR}
-: ${BRCOMPATD_MEMLEAK_LOGFILE:=}
-: ${BRCOMPATD_STRACE_LOG:=}
-: ${BRCOMPATD_STRACE_OPT:=}
-: ${BRCOMPATD_VALGRIND_LOG:=}
-: ${BRCOMPATD_VALGRIND_OPT:=}
-
-# Full paths to executables & modules
-ovsdb_server="/usr/sbin/ovsdb-server"
-ovsdb_tool="/usr/bin/ovsdb-tool"
-vswitchd="/usr/sbin/ovs-vswitchd"
-brcompatd="/usr/sbin/ovs-brcompatd"
-dpctl="/usr/bin/ovs-dpctl"
-appctl="/usr/bin/ovs-appctl"
-ofctl="/usr/bin/ovs-ofctl"
-vsctl="/usr/bin/ovs-vsctl"
-
-if [ "$ENABLE_FAKE_PROC_NET" = "y" ]; then
-    if [ "$ENABLE_BRCOMPAT" != "y" ]; then
-        warning "FAKE_PROC_NET required BRCOMPAT which was disabled.  Force enabling."
-        ENABLE_BRCOMPAT="y"
-    fi
-fi
-
-if test "$ENABLE_MONITOR" = "y"; then
-    monitor_opt="--monitor"
-else
-    monitor_opt=
-fi
-
-function dp_list {
-    "$dpctl" show | grep '^dp[0-9]\+:' | cut -d':' -f 1
-}
-
-function turn_on_corefiles {
-    ulimit -Sc 67108864
-}
-
-function remove_all_dp {
-    for dp in $(dp_list); do
-        action "Removing datapath: $dp" "$dpctl" del-dp "$dp"
-    done
-}
-
-function insert_modules_if_required {
-    if ! lsmod | grep -q "openvswitch_mod"; then
-        action "Inserting llc module" modprobe llc
-        action "Inserting openvswitch module" modprobe openvswitch_mod
-    fi
-    if [ -n "$BRCOMPATD_PIDFILE" ] && ! lsmod | grep -q "brcompat_mod"; then
-        action "Inserting brcompat module" modprobe brcompat_mod
-    fi
-    if [ -f "/lib/modules/`uname -r`/kernel/net/vswitch/ip_gre_mod.ko" ] && ! lsmod | grep -q "ip_gre_mod"; then
-        action "Inserting ip_gre module" modprobe ip_gre_mod
-    fi
-}
-
-function remove_modules {
-    if lsmod | grep -q "brcompat_mod"; then
-        action "Removing brcompat module" rmmod brcompat_mod.ko
-    fi
-    if lsmod | grep -q "openvswitch_mod"; then
-        action "Removing openvswitch module" rmmod openvswitch_mod.ko
-    fi
-    if lsmod | grep -q "ip_gre_mod"; then
-        action "Removing ip_gre module" rmmod ip_gre_mod.ko
-    fi
-}
-
-function start_ovsdb_server {
-    local syslog_opt="-vANY:SYSLOG:${OVSDB_SERVER_SYSLOG_LOGLEVEL}"
-    local logfile_file_opt=""
-    local logfile_level_opt=""
-    if [ ! -d "$OVSDB_SERVER_RUN_DIR" ]; then
-        mkdir -p "$OVSDB_SERVER_RUN_DIR"
-    fi
-    cd "$OVSDB_SERVER_RUN_DIR"
-    local remotes=
-    for remote in $OVSDB_SERVER_REMOTES; do
-        remotes="$remotes --remote=$remote"
-    done
-    if [ -n "$OVSDB_SERVER_FILE_LOGLEVEL" ]; then
-        logfile_level_opt="-vANY:FILE:${OVSDB_SERVER_FILE_LOGLEVEL}"
-        logfile_file_opt="--log-file=$OVSDB_SERVER_LOGFILE"
-    fi
-    local leak_opt=""
-    if [ -n "$OVSDB_SERVER_MEMLEAK_LOGFILE" ]; then
-        leak_opt="--check-leaks=$OVSDB_SERVER_MEMLEAK_LOGFILE"
-        if [ -e "$OVSDB_SERVER_MEMLEAK_LOGFILE" ]; then
-            mv "$OVSDB_SERVER_MEMLEAK_LOGFILE" "$OVSDB_SERVER_MEMLEAK_LOGFILE.prev"
-        fi
-    fi
-    local strace_opt=""
-    local daemonize="y"
-    if [ -n "$OVSDB_SERVER_STRACE_LOG" ] && [ -n "$OVSDB_SERVER_VALGRIND_LOG" ]; then
-        printf "Can not start with both VALGRIND and STRACE\n"
-        exit 1
-    fi
-    if [ -n "$OVSDB_SERVER_STRACE_LOG" ]; then
-        strace_opt="strace -o $OVSDB_SERVER_STRACE_LOG $OVSDB_SERVER_STRACE_OPT"
-        daemonize="n"
-    fi
-    if [ -n "$OVSDB_SERVER_VALGRIND_LOG" ]; then
-        valgrind_opt="valgrind --log-file=$OVSDB_SERVER_VALGRIND_LOG $OVSDB_SERVER_VALGRIND_OPT"
-        daemonize="n"
-    fi
-    ssl_opts="--private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert"
-    if [ "$daemonize" != "y" ]; then
-        # Start in background and force a "success" message
-        action "Starting ovsdb_server ($strace_opt$valgrind_opt)" true
-        (nice -n "$OVSDB_SERVER_PRIORITY" $strace_opt $valgrind_opt "$ovsdb_server" "$OVSDB_SERVER_DB" --pidfile="$OVSDB_SERVER_PIDFILE" --detach $monitor_opt --no-chdir -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $remotes $ssl_opts) &
-    else
-        action "Starting ovsdb-server" nice -n "$OVSDB_SERVER_PRIORITY" "$ovsdb_server" "$OVSDB_SERVER_DB" --pidfile="$OVSDB_SERVER_PIDFILE" --detach $monitor_opt --no-chdir -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $remotes $ssl_opts
-    fi
-}
-
-function start_vswitchd {
-    local syslog_opt="-vANY:SYSLOG:${VSWITCHD_SYSLOG_LOGLEVEL}"
-    local logfile_file_opt=""
-    local logfile_level_opt=""
-    if [ ! -d "$VSWITCHD_RUN_DIR" ]; then
-        mkdir -p "$VSWITCHD_RUN_DIR"
-    fi
-    cd "$VSWITCHD_RUN_DIR"
-    if [ -n "$VSWITCHD_FILE_LOGLEVEL" ]; then
-        logfile_level_opt="-vANY:FILE:${VSWITCHD_FILE_LOGLEVEL}"
-        logfile_file_opt="--log-file=$VSWITCHD_LOGFILE"
-    fi
-    local leak_opt=""
-    if [ -n "$VSWITCHD_MEMLEAK_LOGFILE" ]; then
-        leak_opt="--check-leaks=$VSWITCHD_MEMLEAK_LOGFILE"
-        if [ -e "$VSWITCHD_MEMLEAK_LOGFILE" ]; then
-            mv "$VSWITCHD_MEMLEAK_LOGFILE" "$VSWITCHD_MEMLEAK_LOGFILE.prev"
-        fi
-    fi
-    local strace_opt=""
-    local daemonize="y"
-    if [ -n "$VSWITCHD_STRACE_LOG" ] && [ -n "$VSWITCHD_VALGRIND_LOG" ]; then
-        printf "Can not start with both VALGRIND and STRACE\n"
-        exit 1
-    fi
-    if [ -n "$VSWITCHD_STRACE_LOG" ]; then
-        strace_opt="strace -o $VSWITCHD_STRACE_LOG $VSWITCHD_STRACE_OPT"
-        daemonize="n"
-    fi
-    if [ -n "$VSWITCHD_VALGRIND_LOG" ]; then
-        valgrind_opt="valgrind --log-file=$VSWITCHD_VALGRIND_LOG $VSWITCHD_VALGRIND_OPT"
-        daemonize="n"
-    fi
-    local fake_proc_net_opt=""
-    if [ "$ENABLE_FAKE_PROC_NET" = "y" ]; then
-        fake_proc_net_opt="--fake-proc-net"
-    fi
-    if [ "$VSWITCHD_MLOCKALL" != "no" ]; then
-        mlockall_opt="--mlockall"
-    fi
-    if [ "$daemonize" != "y" ]; then
-        # Start in background and force a "success" message
-        action "Starting ovs-vswitchd ($strace_opt$valgrind_opt)" true
-        (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_OVSDB_SERVER") &
-    else
-        action "Starting ovs-vswitchd" nice -n "$VSWITCHD_PRIORITY" "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_OVSDB_SERVER"
-    fi
-}
-
-function start_brcompatd {
-    local syslog_opt="-vANY:SYSLOG:${BRCOMPATD_SYSLOG_LOGLEVEL}"
-    local logfile_file_opt=""
-    local logfile_level_opt=""
-    if [ -d "$BRCOMPATD_RUN_DIR" ]; then
-        mkdir -p "$BRCOMPATD_RUN_DIR"
-    fi
-    cd "$BRCOMPATD_RUN_DIR"
-    if [ -n "$BRCOMPATD_FILE_LOGLEVEL" ]; then
-        logfile_level_opt="-vANY:FILE:${BRCOMPATD_FILE_LOGLEVEL}"
-        logfile_file_opt="--log-file=$BRCOMPATD_LOGFILE"
-    fi
-    local leak_opt=""
-    if [ -n "$BRCOMPATD_MEMLEAK_LOGFILE" ]; then
-        leak_opt="--check-leaks=$BRCOMPATD_MEMLEAK_LOGFILE"
-        if [ -e "$BRCOMPATD_MEMLEAK_LOGFILE" ]; then
-            mv "$BRCOMPATD_MEMLEAK_LOGFILE" "$BRCOMPATD_MEMLEAK_LOGFILE.prev"
-        fi
-    fi
-    local strace_opt=""
-    local daemonize="y"
-    if [ -n "$BRCOMPATD_STRACE_LOG" ] && [ -n "$BRCOMPATD_VALGRIND_LOG" ]; then
-        printf "Can not start with both VALGRIND and STRACE\n"
-        exit 1
-    fi
-    if [ -n "$BRCOMPATD_STRACE_LOG" ]; then
-        strace_opt="strace -o $BRCOMPATD_STRACE_LOG $BRCOMPATD_STRACE_OPT"
-        daemonize="n"
-    fi
-    if [ -n "$VALGRIND_LOG" ]; then
-        valgrind_opt="valgrind --log-file=$BRCOMPATD_VALGRIND_LOG $BRCOMPATD_VALGRIND_OPT"
-        daemonize="n"
-    fi
-    appctl_cmd="$appctl --target=/var/run/ovs-vswitchd.\`cat $VSWITCHD_PIDFILE\`.ctl %s"
-    if [ "$daemonize" != "y" ]; then
-        # Start in background and force a "success" message
-        action "Starting ovs-brcompatd ($strace_opt$valgrind_opt)" true
-        (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$brcompatd"--no-chdir --appctl-command="$appctl_cmd" --pidfile=$BRCOMPATD_PIDFILE -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt "$VSWITCHD_OVSDB_SERVER") &
-    else
-        action "Starting ovs-brcompatd" nice -n "$BRCOMPATD_PRIORITY" $strace_opt $valgrind_opt "$brcompatd" --no-chdir --appctl-command="$appctl_cmd" --pidfile=$BRCOMPATD_PIDFILE --detach $monitor_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt "$VSWITCHD_OVSDB_SERVER"
-    fi
-}
-
-function stop_ovsdb_server {
-    if [ -f "$OVSDB_SERVER_PIDFILE" ]; then
-        local pid=$(cat "$OVSDB_SERVER_PIDFILE")
-        action "Killing ovsdb-server ($pid)" kill -TERM $pid
-        rm -f "$OVSDB_SERVER_PIDFILE"
-    fi
-}
-
-function stop_vswitchd {
-    if [ -f "$VSWITCHD_PIDFILE" ]; then
-        local pid=$(cat "$VSWITCHD_PIDFILE")
-        action "Killing ovs-vswitchd ($pid)" kill -TERM $pid
-        rm -f "$VSWITCHD_PIDFILE"
-    fi
-}
-
-function stop_brcompatd {
-    if [ -f "$BRCOMPATD_PIDFILE" ]; then
-        local pid=$(cat "$BRCOMPATD_PIDFILE")
-        action "Killing ovs-brcompatd ($pid)" kill -TERM $pid
-        rm -f "$BRCOMPATD_PIDFILE"
-    fi
-}
-
-function restart_approval {
-    if test ! -t 0; then
-        # Don't prompt if invoked non-interactively.
-        return 0
-    fi
-    cat <<EOF
-
-WARNING!!!
-
-Restarting vswitch on a live server is not guaranteed to work.  It is
-provided as a convenience for those situations in which it does work.
-
-EOF
-    read -s -r -n 1 -p "Countinue with restart (y/N): " response
-    printf "\n"
-    case "$response" in
-        y|Y)
-            return 0
-            ;;
-        *)
-            return 1
-            ;;
-    esac
-}
-
-function set_system_uuid {
-    system_uuid=$(. /etc/xensource-inventory && echo $INSTALLATION_UUID)
-    if test -n "$system_uuid"; then
-        action "Configuring Open vSwitch system UUID" true
-        $vsctl --no-wait set Open_vSwitch . external-ids:system-uuid="$system_uuid"
-    else
-        action "Configuring Open vSwitch system UUID" false
-    fi
-}
-
-function start {
-    if [ "$FORCE_COREFILES" = "y" ]; then
-        turn_on_corefiles
-    fi
-
-    insert_modules_if_required
-
-    # Increase the limit on the number of open file descriptors since
-    # ovs-vswitchd needs a few per bridge
-    ulimit -n 4096
-
-    # Allow GRE traffic.
-    iptables -I INPUT -p gre -j ACCEPT
-
-    if [ ! -e "$OVSDB_SERVER_DB" ]; then
-        warning "$OVSDB_SERVER_DB does not exist"
-
-        action "Creating empty database $OVSDB_SERVER_DB" true
-        $ovsdb_tool -vANY:console:emer create "$OVSDB_SERVER_DB" "$VSWITCHD_OVSDB_SCHEMA"
-    else
-        # Upgrade or downgrade schema and compact database.
-        $ovsdb_tool -vANY:console:emer convert "$OVSDB_SERVER_DB" "$VSWITCHD_OVSDB_SCHEMA"
-    fi
-
-    start_ovsdb_server
-    $vsctl --no-wait init
-    if [ ! -e /var/run/vswitch.booted ]; then
-        touch /var/run/vswitch.booted
-        for bridge in $($vsctl list-br); do
-            $vsctl --no-wait del-br $bridge
-        done
-    fi
-
-    set_system_uuid
-
-    start_vswitchd
-    start_brcompatd
-    touch /var/lock/subsys/vswitch
-}
-
-function stop {
-    stop_brcompatd
-    stop_vswitchd
-    stop_ovsdb_server
-    rm -f /var/lock/subsys/vswitch
-}
-
-function restart {
-    if restart_approval; then
-        stop
-        start
-    fi
-}
-
-case "$1" in
-    start)
-        start
-        ;;
-    stop)
-        stop
-        ;;
-    restart)
-        restart
-        ;;
-    strace-vswitchd)
-        shift
-        strace -p $(cat "$VSWITCHD_PIDFILE") "$@"
-        ;;
-    strace-brcompatd)
-        shift
-        strace -p $(cat "$BRCOMPATD_PIDFILE") "$@"
-        ;;
-    status)
-        status -p "$OVSDB_SERVER_PIDFILE" ovsdb-server
-        status -p "$VSWITCHD_PIDFILE" ovs-vswitchd
-        status -p "$BRCOMPATD_PIDFILE" ovs-brcompatd
-        ;;
-    version)
-        /usr/sbin/ovsdb-server -V
-        /usr/sbin/ovs-vswitchd -V
-        /usr/sbin/ovs-brcompatd -V
-        ;;
-    help)
-        printf "vswitch [start|stop|restart|unload|status|version]\n"
-        ;;
-    *)
-        printf "Unknown command: $1\n"
-        exit 1
-        ;;
-esac
diff --git a/xenserver/etc_init.d_vswitch-xapi-update b/xenserver/etc_init.d_vswitch-xapi-update
deleted file mode 100755 (executable)
index 1c5f079..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-#
-# vswitch-xapi-update
-#
-# chkconfig: 2345 95 01
-# description: Update vswitch configuration from XAPI database at boot
-
-# Copyright (C) 2009 Nicira Networks, 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.
-
-. /etc/init.d/functions
-
-function do_host_call {
-    xe host-call-plugin host-uuid="$INSTALLATION_UUID" plugin="vswitch-cfg-update" fn="update" >/dev/null
-}
-
-function start {
-    if [ ! -f /etc/xensource-inventory ]; then
-        printf "vswitch-xapi-update ERROR: XenSource inventory not present in /etc/xensource-inventory\n"
-        exit 1
-    fi
-    source /etc/xensource-inventory
-    action "Updating configuration" do_host_call
-}
-
-case "$1" in
-    start)
-        start
-        ;;
-    stop)
-        # Nothing to do here.
-        ;;
-    restart)
-        start
-        ;;
-    help)
-        printf "vswitch-xapi-update [start|stop|restart]\n"
-        ;;
-    *)
-        printf "Unknown command: $1\n"
-        exit 1
-        ;;
-esac
diff --git a/xenserver/etc_logrotate.d_openvswitch b/xenserver/etc_logrotate.d_openvswitch
new file mode 100644 (file)
index 0000000..22aab36
--- /dev/null
@@ -0,0 +1,16 @@
+# Copyright (C) 2009, 2010 Nicira Networks, Inc.
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.  This file is offered as-is,
+# without warranty of any kind.
+
+/var/log/openvswitch/* {
+       sharedscripts
+       postrotate
+       # Tell Open vSwitch daemons to reopen their log files
+       /usr/bin/ovs-appctl -t ovs-vswitchd vlog/reopen
+       /usr/bin/ovs-appctl -t ovs-brcompatd vlog/reopen
+       /usr/bin/ovs-appctl -t ovsdb-server vlog/reopen
+       endscript
+}
diff --git a/xenserver/etc_logrotate.d_vswitch b/xenserver/etc_logrotate.d_vswitch
deleted file mode 100644 (file)
index d6f71af..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2009 Nicira Networks, Inc.
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.  This file is offered as-is,
-# without warranty of any kind.
-
-/var/log/ovs-vswitchd.log /var/log/ovs-brcompatd.log {
-       sharedscripts
-       postrotate
-       # Tell ovs-vswitchd and ovs-brcompatd to reopen their log files
-       /usr/bin/ovs-appctl -t ovs-vswitchd vlog/reopen
-       /usr/bin/ovs-appctl -t ovs-brcompatd vlog/reopen
-       /usr/bin/ovs-appctl -t ovsdb-server vlog/reopen
-       endscript
-}
diff --git a/xenserver/etc_profile.d_openvswitch.sh b/xenserver/etc_profile.d_openvswitch.sh
new file mode 100644 (file)
index 0000000..a7e1a0c
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright (C) 2009, 2010 Nicira Networks, Inc.
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.  This file is offered as-is,
+# without warranty of any kind.
+
+alias vswitch='service openvswitch'
+alias openvswitch='service openvswitch'
+
+function watchdp {
+       watch ovs-dpctl show "$@"
+}
+
+function watchdpflows {
+       local grep=""
+       local dp=$1
+       shift
+       if [ $# -gt 0 ]; then
+               grep="| grep $@"
+       fi
+       watch "ovs-dpctl dump-flows $dp $grep"
+}
+
+function watchflows {
+       local grep=""
+       local dp=$1
+       shift
+       bridge=$(ovs-dpctl show $dp | grep 'port 0:' | cut -d' ' -f 3)
+       if [ $# -gt 0 ]; then
+               grep="| grep $@"
+       fi
+       watch "ovs-ofctl dump-flows unix:/var/run/$bridge.mgmt $grep"
+}
+
+function monitorlogs {
+    local grep=""
+    if [ $# -gt 0 ]; then
+        grep="| grep --line-buffered '^==> .* <==$"
+        for i in "$@"; do
+            grep="$grep\|$i"
+        done
+        grep="$grep'"
+    fi
+    cmd="tail -F /var/log/messages /var/log/openvswitch/ovs-vswitchd.log /var/log/openvswitch/ovs-brcompatd.log /var/log/openvswitch/ovsdb-server /var/log/xensource.log $grep | tee /var/log/monitorlogs.out"
+    printf "cmd: $cmd\n"
+    eval "$cmd"
+}
diff --git a/xenserver/etc_profile.d_vswitch.sh b/xenserver/etc_profile.d_vswitch.sh
deleted file mode 100644 (file)
index a001e21..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2009, 2010 Nicira Networks, Inc.
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.  This file is offered as-is,
-# without warranty of any kind.
-
-alias vswitch='service vswitch'
-
-function watchdp {
-       watch ovs-dpctl show "$@"
-}
-
-function watchdpflows {
-       local grep=""
-       local dp=$1
-       shift
-       if [ $# -gt 0 ]; then
-               grep="| grep $@"
-       fi
-       watch "ovs-dpctl dump-flows $dp $grep"
-}
-
-function watchflows {
-       local grep=""
-       local dp=$1
-       shift
-       bridge=$(ovs-dpctl show $dp | grep 'port 0:' | cut -d' ' -f 3)
-       if [ $# -gt 0 ]; then
-               grep="| grep $@"
-       fi
-       watch "ovs-ofctl dump-flows unix:/var/run/$bridge.mgmt $grep"
-}
-
-function monitorlogs {
-    local grep=""
-    if [ $# -gt 0 ]; then
-        grep="| grep --line-buffered '^==> .* <==$"
-        for i in "$@"; do
-            grep="$grep\|$i"
-        done
-        grep="$grep'"
-    fi
-    cmd="tail -F /var/log/messages /var/log/ovs-vswitchd.log /var/log/xensource.log $grep | tee /var/log/monitorlogs.out"
-    printf "cmd: $cmd\n"
-    eval "$cmd"
-}
diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
new file mode 100755 (executable)
index 0000000..8314a1b
--- /dev/null
@@ -0,0 +1,104 @@
+#!/usr/bin/env python
+#
+# xapi plugin script to update the cache of configuration items in the
+# ovs-vswitchd configuration that are managed in the xapi database when 
+# integrated with Citrix management tools.
+
+# Copyright (C) 2009, 2010 Nicira Networks, 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.
+
+# TBD: - error handling needs to be improved.  Currently this can leave
+# TBD:   the system in a bad state if anything goes wrong.
+
+import XenAPIPlugin
+import XenAPI
+import os
+import subprocess
+
+vsctl="/usr/bin/ovs-vsctl"
+cacert_filename="/etc/openvswitch/vswitchd.cacert"
+
+# Delete the CA certificate, so that we go back to boot-strapping mode
+def delete_cacert():
+    try:
+        os.remove(cacert_filename)
+    except OSError:
+        # Ignore error if file doesn't exist
+        pass
+
+def update(session, args):
+    pools = session.xenapi.pool.get_all()
+    # We assume there is only ever one pool...
+    if len(pools) == 0:
+        raise XenAPIPlugin.Failure("NO_POOL_FOR_HOST", [])
+    if len(pools) > 1:
+        raise XenAPIPlugin.Failure("MORE_THAN_ONE_POOL_FOR_HOST", [])
+    pool = session.xenapi.pool.get_record(pools[0])
+    try:
+        controller = pool["other_config"]["vSwitchController"]
+    except KeyError, e:
+        controller = ""
+    currentController = vswitchCurrentController()
+    if controller == "" and currentController != "":
+        delete_cacert()
+        removeControllerCfg()
+        return "Successfully removed controller config"
+    elif controller != currentController:
+        delete_cacert()
+        setControllerCfg(controller)
+        return "Successfully set controller to " + controller
+    else:
+        return "No change to configuration"
+
+def vswitchCurrentController():
+    controller = vswitchCfgQuery(["get", "Open_vSwitch", 
+                                  ".", "managers"]).strip('[]"')
+    if controller == "":
+        return controller
+    if len(controller) < 4 or controller[0:4] != "ssl:":
+        return controller
+    else:
+        return controller.split(':')[1]
+
+def removeControllerCfg():
+    vswitchCfgMod(["--", "clear", "Open_vSwitch", ".", "managers",
+                   "--", "del-ssl"])
+
+def setControllerCfg(controller):
+    vswitchCfgMod(["--", "clear", "Open_vSwitch", ".", "managers",
+                   "--", "del-ssl",
+                   "--", "--bootstrap", "set-ssl",
+                   "/etc/xensource/xapi-ssl.pem",
+                   cacert_filename,
+                   "--", "set", "Open_vSwitch", ".",
+                   'managers="ssl:' + controller + ':6632"'])
+
+def vswitchCfgQuery(action_args):
+    cmd = [vsctl, "-vANY:console:emer"] + action_args
+    output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()
+    if len(output) == 0 or output[0] == None:
+        output = ""
+    else:
+        output = output[0].strip()
+    return output
+
+def vswitchCfgMod(action_args):
+    cmd = [vsctl, "-vANY:console:emer"] + action_args
+    exitcode = subprocess.call(cmd)
+    if exitcode != 0:
+        raise XenAPIPlugin.Failure("VSWITCH_CONFIG_MOD_FAILURE",
+                                   [ str(exitcode) , str(action_args) ])
+    
+if __name__ == "__main__":
+    XenAPIPlugin.dispatch({"update": update})
diff --git a/xenserver/etc_xapi.d_plugins_vswitch-cfg-update b/xenserver/etc_xapi.d_plugins_vswitch-cfg-update
deleted file mode 100755 (executable)
index 4cf2d88..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/env python
-#
-# xapi plugin script to update the cache of configuration items in the
-# ovs-vswitchd configuration file that are managed in the xapi database
-# when integrated with Citrix management tools.
-
-# Copyright (C) 2009, 2010 Nicira Networks, 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.
-
-# TBD: - error handling needs to be improved.  Currently this can leave
-# TBD:   the system in a bad state if anything goes wrong.
-
-import XenAPIPlugin
-import XenAPI
-import os
-import subprocess
-
-vsctl="/usr/bin/ovs-vsctl"
-cacert_filename="/etc/ovs-vswitchd.cacert"
-
-# Delete the CA certificate, so that we go back to boot-strapping mode
-def delete_cacert():
-    try:
-        os.remove(cacert_filename)
-    except OSError:
-        # Ignore error if file doesn't exist
-        pass
-
-def update(session, args):
-    pools = session.xenapi.pool.get_all()
-    # We assume there is only ever one pool...
-    if len(pools) == 0:
-        raise XenAPIPlugin.Failure("NO_POOL_FOR_HOST", [])
-    if len(pools) > 1:
-        raise XenAPIPlugin.Failure("MORE_THAN_ONE_POOL_FOR_HOST", [])
-    pool = session.xenapi.pool.get_record(pools[0])
-    try:
-        controller = pool["other_config"]["vSwitchController"]
-    except KeyError, e:
-        controller = ""
-    currentController = vswitchCurrentController()
-    if controller == "" and currentController != "":
-        delete_cacert()
-        removeControllerCfg()
-        return "Successfully removed controller config"
-    elif controller != currentController:
-        delete_cacert()
-        setControllerCfg(controller)
-        return "Successfully set controller to " + controller
-    else:
-        return "No change to configuration"
-
-def vswitchCurrentController():
-    controller = vswitchCfgQuery(["get", "Open_vSwitch", 
-                                  ".", "managers"]).strip('[]"')
-    if controller == "":
-        return controller
-    if len(controller) < 4 or controller[0:4] != "ssl:":
-        return controller
-    else:
-        return controller.split(':')[1]
-
-def removeControllerCfg():
-    vswitchCfgMod(["--", "clear", "Open_vSwitch", ".", "managers",
-                   "--", "del-ssl"])
-
-def setControllerCfg(controller):
-    vswitchCfgMod(["--", "clear", "Open_vSwitch", ".", "managers",
-                   "--", "del-ssl",
-                   "--", "--bootstrap", "set-ssl",
-                   "/etc/xensource/xapi-ssl.pem",
-                   "/etc/xensource/xapi-ssl.pem",
-                   "/etc/ovs-vswitchd.cacert",
-                   "--", "set", "Open_vSwitch", ".",
-                   'managers="ssl:' + controller + ':6632"'])
-
-def vswitchCfgQuery(action_args):
-    cmd = [vsctl, "-vANY:console:emer"] + action_args
-    output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()
-    if len(output) == 0 or output[0] == None:
-        output = ""
-    else:
-        output = output[0].strip()
-    return output
-
-def vswitchCfgMod(action_args):
-    cmd = [vsctl, "-vANY:console:emer"] + action_args
-    exitcode = subprocess.call(cmd)
-    if exitcode != 0:
-        raise XenAPIPlugin.Failure("VSWITCH_CONFIG_MOD_FAILURE",
-                                   [ str(exitcode) , str(action_args) ])
-    
-if __name__ == "__main__":
-    XenAPIPlugin.dispatch({"update": update})
index 56c710d814cfbd679b5ca23ddb171fa8384c6f6b..1a38dc4c990df06bdd1b9bc3ca5cb8cc239b32d0 100755 (executable)
@@ -47,7 +47,7 @@ handle_promiscuous()
                esac
                ;;
            vswitch)
-               logger -t script-vif "${dev}: Promiscuous ports are not supported via vSwitch."
+               logger -t script-vif "${dev}: Promiscuous ports are not supported via Open vSwitch."
                ;;
        esac
     fi
diff --git a/xenserver/openvswitch-xen.spec b/xenserver/openvswitch-xen.spec
new file mode 100644 (file)
index 0000000..9e6f799
--- /dev/null
@@ -0,0 +1,370 @@
+# Spec file for Open vSwitch.
+
+# Copyright (C) 2009, 2010 Nicira Networks, Inc.
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.  This file is offered as-is,
+# without warranty of any kind.
+
+# When building, the rpmbuild command line should define
+# openvswitch_version, xen_version, and build_number using -D arguments.
+# for example:
+#
+#    rpmbuild -D "openvswitch_version 0.8.9~1+build123" -D "xen_version 2.6.18-128.1.1.el5.xs5.1.0.483.1000xen" -D "build_number --with-build-number=123" -bb /usr/src/redhat/SPECS/openvswitch-xen.spec
+#
+%define version %{openvswitch_version}-%{xen_version}
+
+Name: openvswitch
+Summary: Virtual switch
+Group: System Environment/Daemons
+URL: http://www.openvswitch.org/
+Vendor: Nicira Networks, Inc.
+Version: %{openvswitch_version}
+
+# The entire source code is ASL 2.0 except datapath/ which is GPLv2
+License: ASL 2.0 and GPLv2
+Release: 1
+Source: openvswitch-%{openvswitch_version}.tar.gz
+Buildroot: /tmp/openvswitch-xen-rpm
+Requires: kernel-xen = %(echo '%{xen_version}' | sed 's/xen$//')
+
+%description
+Open vSwitch provides standard network bridging functions augmented with
+support for the OpenFlow protocol for remote per-flow control of
+traffic.
+
+%prep
+%setup -q -n openvswitch-%{openvswitch_version}
+
+%build
+./configure --prefix=/usr --sysconfdir=/etc --localstatedir=%{_localstatedir} --with-l26=/lib/modules/%{xen_version}/build --enable-ssl %{build_number}
+make %{_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make install DESTDIR=$RPM_BUILD_ROOT
+install -d -m 755 $RPM_BUILD_ROOT/etc
+install -d -m 755 $RPM_BUILD_ROOT/etc/init.d
+install -m 755 xenserver/etc_init.d_openvswitch \
+         $RPM_BUILD_ROOT/etc/init.d/openvswitch
+install -m 755 xenserver/etc_init.d_openvswitch-xapi-update \
+         $RPM_BUILD_ROOT/etc/init.d/openvswitch-xapi-update
+install -d -m 755 $RPM_BUILD_ROOT/etc/sysconfig
+install -d -m 755 $RPM_BUILD_ROOT/etc/logrotate.d
+install -m 755 xenserver/etc_logrotate.d_openvswitch \
+         $RPM_BUILD_ROOT/etc/logrotate.d/openvswitch
+install -d -m 755 $RPM_BUILD_ROOT/etc/profile.d
+install -m 755 xenserver/etc_profile.d_openvswitch.sh \
+         $RPM_BUILD_ROOT/etc/profile.d/openvswitch.sh
+install -d -m 755 $RPM_BUILD_ROOT/etc/xapi.d/plugins
+install -m 755 xenserver/etc_xapi.d_plugins_openvswitch-cfg-update \
+         $RPM_BUILD_ROOT/etc/xapi.d/plugins/openvswitch-cfg-update
+install -d -m 755 $RPM_BUILD_ROOT/usr/share/openvswitch/scripts
+install -m 644 vswitchd/vswitch.ovsschema \
+         $RPM_BUILD_ROOT/usr/share/openvswitch/vswitch.ovsschema
+install -m 755 xenserver/opt_xensource_libexec_interface-reconfigure \
+             $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/interface-reconfigure
+install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigure.py \
+             $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigure.py
+install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py \
+             $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/InterfaceReconfigureBridge.py
+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_refresh-network-uuids \
+               $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/refresh-network-uuids
+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 644 \
+        xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
+               $RPM_BUILD_ROOT/usr/share/openvswitch/scripts/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 \;
+
+# Get rid of stuff we don't want to make RPM happy.
+rm \
+    $RPM_BUILD_ROOT/usr/bin/ovs-controller \
+    $RPM_BUILD_ROOT/usr/bin/ovs-discover \
+    $RPM_BUILD_ROOT/usr/bin/ovs-kill \
+    $RPM_BUILD_ROOT/usr/bin/ovs-openflowd \
+    $RPM_BUILD_ROOT/usr/bin/ovs-pki \
+    $RPM_BUILD_ROOT/usr/bin/ovs-wdt \
+    $RPM_BUILD_ROOT/usr/sbin/ovs-monitor \
+    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-controller.8 \
+    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-discover.8 \
+    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-kill.8 \
+    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-openflowd.8 \
+    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-pki.8
+rm -f $RPM_BUILD_ROOT/lib/modules/%{xen_version}/kernel/net/openvswitch/veth_mod.ko
+
+install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+if [ ! -f /etc/xensource-inventory ]; then
+    printf "XenSource inventory not present in /etc/xensource-inventory"
+    exit 1
+fi
+
+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
+b8e9835862ef1a9cec2a3f477d26c989  /etc/xensource/scripts/vif
+ce451d3c985fd1db6497a363f0d9dedb  /opt/xensource/libexec/interface-reconfigure
+2b53f500431fcba5276c896e9e4281b9  /usr/sbin/xen-bugtool
+EOF
+    then
+        printf "\nVerified host scripts from XenServer 5.5.900.\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
+
+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
+    fi
+fi
+
+# Ensure that modprobe will find our modules.
+depmod %{xen_version}
+
+if grep -F net.ipv4.conf.all.arp_filter /etc/sysctl.conf >/dev/null 2>&1; then :; else
+    cat >>/etc/sysctl.conf <<EOF
+# This works around an issue in xhad, which binds to a particular
+# Ethernet device, which in turn causes ICMP port unreachable messages
+# if packets are received are on the wrong interface, which in turn
+# can happen if we send out ARP replies on every interface (as Linux
+# does by default) instead of just on the interface that has the IP
+# address being ARPed for, which this sysctl setting in turn works
+# around.
+#
+# Bug #1378.
+net.ipv4.conf.all.arp_filter = 1
+EOF
+fi
+
+if test ! -e /etc/openvswitch/conf.db; then
+    install -d -m 755 -o root -g root /etc/openvswitch
+
+    # Create ovs-vswitchd config database
+    ovsdb-tool -vANY:console:emer create /etc/openvswitch/conf.db \
+            /usr/share/openvswitch/vswitch.ovsschema \
+
+    # Create initial table in config database
+    ovsdb-tool -vANY:console:emer transact /etc/openvswitch/conf.db \
+            '[{"op": "insert", "table": "Open_vSwitch", "row": {}}]' \
+            > /dev/null
+fi
+
+# Create default or update existing /etc/sysconfig/openvswitch.
+SYSCONFIG=/etc/sysconfig/openvswitch
+TEMPLATE=/usr/share/openvswitch/scripts/sysconfig.template
+if [ ! -e $SYSCONFIG ]; then
+    cp $TEMPLATE $SYSCONFIG
+else
+    for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
+    do
+        if ! grep $var $SYSCONFIG >/dev/null 2>&1; then
+            echo >> $SYSCONFIG
+            sed -n "/$var:/,/$var=/p" $TEMPLATE >> $SYSCONFIG
+        fi
+    done
+fi
+
+# Replace XenServer files by our versions.
+mkdir -p /usr/lib/openvswitch/xs-original \
+    || printf "Could not create script backup directory.\n"
+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")
+    t=$(readlink "$f")
+    if [ -f "$f" ] && [ "$t" != "/usr/share/openvswitch/scripts/$s" ]; then
+        mv "$f" /usr/lib/openvswitch/xs-original/ \
+            || printf "Could not save original XenServer $s script\n"
+        ln -s "/usr/share/openvswitch/scripts/$s" "$f" \
+            || printf "Could not link to Open vSwitch $s script\n"
+    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 vSswitch 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
+        chkconfig --del $s || printf "Could not remove $s init script."
+    fi
+    chkconfig --add $s || printf "Could not add $s init script."
+    chkconfig $s on || printf "Could not enable $s init script."
+done
+
+# Configure system to use Open vSwitch
+echo vswitch > /etc/xensource/network.conf
+
+if [ "$1" = "1" ]; then    # $1 = 2 for upgrade
+    printf "\nYou MUST reboot the server NOW to complete the change to\n"
+    printf "Open vSwitch.  Attempts to modify networking on the server\n"
+    printf "or any hosted VM will fail until after the reboot and could\n"
+    printf "leave the server in an state requiring manual recovery.\n\n"
+else
+    printf "\nTo use the new Open vSwitch install, you should reboot the\n" 
+    printf "server now.  Failure to do so may result in incorrect operation."
+    printf "\n\n"
+fi
+
+%preun
+if [ "$1" = "0" ]; then     # $1 = 1 for upgrade
+    for s in openvswitch openvswitch-xapi-update; do
+        chkconfig --del $s || printf "Could not remove $s init script."
+    done
+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"
+
+    # Restore original XenServer scripts
+    for f in \
+        /opt/xensource/libexec/interface-reconfigure \
+        /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
+
+    # 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
+
+    # 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"
+    printf "server or any hosted VM will fail until after the reboot and\n"
+    printf "could leave the server in a state requiring manual recovery.\n\n"
+fi
+
+
+%files
+%defattr(-,root,root)
+/etc/init.d/openvswitch
+/etc/init.d/openvswitch-xapi-update
+/etc/xapi.d/plugins/openvswitch-cfg-update
+/etc/logrotate.d/openvswitch
+/etc/profile.d/openvswitch.sh
+/lib/modules/%{xen_version}/kernel/net/openvswitch/openvswitch_mod.ko
+/lib/modules/%{xen_version}/kernel/net/openvswitch/brcompat_mod.ko
+%if %(echo '%{xen_version}'|awk -F"." '{if ($3>=18) print 1; else print 0;}')
+/lib/modules/%{xen_version}/kernel/net/openvswitch/ip_gre_mod.ko
+%endif
+/usr/share/openvswitch/scripts/refresh-network-uuids
+/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/XSFeatureVSwitch.py
+/usr/share/openvswitch/scripts/brctl
+/usr/share/openvswitch/scripts/sysconfig.template
+/usr/share/openvswitch/vswitch.ovsschema
+/usr/sbin/ovs-brcompatd
+/usr/sbin/ovs-vswitchd
+/usr/sbin/ovsdb-server
+/usr/bin/ovs-appctl
+/usr/bin/ovs-dpctl
+/usr/bin/ovs-ofctl
+/usr/bin/ovs-vsctl
+/usr/bin/ovsdb-client
+/usr/bin/ovsdb-tool
+/usr/share/man/man1/ovsdb-client.1.gz
+/usr/share/man/man1/ovsdb-server.1.gz
+/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-vsctl.8.gz
+/usr/share/man/man8/ovs-vswitchd.8.gz
+/var/lib/openvswitch
+%exclude /usr/share/openvswitch/scripts/*.pyc
+%exclude /usr/share/openvswitch/scripts/*.pyo
index fba89bed0f53e6f6d46d75b528be6834db89b23f..e75a17d6319c7948a677ecf9e9eaf7e1b7f6c910 100644 (file)
@@ -117,13 +117,13 @@ class VSwitchControllerDialogue(Dialogue):
 #             ChoiceDef(Lang("Restart ovs-brcompatd"),
 #                       lambda: self.restartService("vswitch-brcompatd"))
             ]
-        self.menu = Menu(self, None, Lang("Configure vSwitch"), choiceDefs)
+        self.menu = Menu(self, None, Lang("Configure Open vSwitch"), choiceDefs)
 
         self.ChangeState("INITIAL")
 
     def BuildPane(self):
         pane = self.NewPane(DialoguePane(self.parent))
-        pane.TitleSet(Lang("Configure vSwitch"))
+        pane.TitleSet(Lang("Configure Open vSwitch"))
         pane.AddBox()
 
     def ChangeState(self, inState):
@@ -251,13 +251,13 @@ class VSwitchControllerDialogue(Dialogue):
         for host in hosts:
             Layout.Inst().TransientBanner("Updating host %d out of %d" 
                     % (self.hostsUpdated + 1, self.hostsInPool))
-            session.xenapi.host.call_plugin(host, "vswitch-cfg-update", "update", {})
+            session.xenapi.host.call_plugin(host, "openvswitch-cfg-update", "update", {})
             self.hostsUpdated = self.hostsUpdated + 1
 
     def _updateThisServer(self, session):
         data = Data.Inst()
         host = data.host.opaqueref()
-        session.xenapi.host.call_plugin(host, "vswitch-cfg-update", "update", {})
+        session.xenapi.host.call_plugin(host, "openvswitch-cfg-update", "update", {})
 
 
 class XSFeatureVSwitch:
@@ -266,12 +266,12 @@ class XSFeatureVSwitch:
     def StatusUpdateHandler(cls, inPane):
         data = Data.Inst()
 
-        inPane.AddTitleField(Lang("vSwitch"))
+        inPane.AddTitleField(Lang("Open vSwitch"))
 
         inPane.NewLine()
 
         inPane.AddStatusField(Lang("Version", 20),
-                              VSwitchService.Inst("vswitch", "ovs-vswitchd").version())
+                              VSwitchService.Inst("openvswitch", "ovs-vswitchd").version())
 
         inPane.NewLine()
 
@@ -295,11 +295,11 @@ class XSFeatureVSwitch:
 
         inPane.NewLine()
         inPane.AddStatusField(Lang("ovs-vswitchd status", 20),
-                              VSwitchService.Inst("vswitch", "ovs-vswitchd").status())
+                              VSwitchService.Inst("openvswitch", "ovs-vswitchd").status())
         inPane.AddStatusField(Lang("ovsdb-server status", 20),
-                              VSwitchService.Inst("vswitch", "ovsdb-server").status())
+                              VSwitchService.Inst("openvswitch", "ovsdb-server").status())
         inPane.AddStatusField(Lang("ovs-brcompatd status", 20),
-                              VSwitchService.Inst("vswitch", "ovs-brcompatd").status())
+                              VSwitchService.Inst("openvswitch", "ovs-brcompatd").status())
 
         inPane.AddKeyHelpField( {
             Lang("<Enter>") : Lang("Reconfigure"),
@@ -317,7 +317,7 @@ class XSFeatureVSwitch:
             {
                 'menuname' : 'MENU_NETWORK',
                 'menupriority' : 800,
-                'menutext' : Lang('vSwitch') ,
+                'menutext' : Lang('Open vSwitch') ,
                 'statusupdatehandler' : self.StatusUpdateHandler,
                 'activatehandler' : self.ActivateHandler
             }
index fbaa6ad7278296ddd1b2855e25373428a877223c..2035a4f622302042e5946e238a70069955c8ebc4 100755 (executable)
@@ -22,9 +22,9 @@ import sys
 
 argv0 = sys.argv[0]
 
-BRCTL = "/usr/lib/vswitch/xs-original/brctl"
+BRCTL = "/usr/lib/openvswitch/xs-original/brctl"
 VSCTL = "/usr/bin/ovs-vsctl"
-OVSDB_SERVER = "unix:/var/run/ovsdb-server"
+OVSDB_SERVER = "unix:/var/run/openvswitch/db.sock"
 
 # Execute the real brctl program, passing the same arguments that were passed
 # to us.
index 92fd27fcb6b518998e144bddd4b3ba2d93175b57..539ab028cf05de0e7152d8a160f68f98e2598d6f 100755 (executable)
@@ -119,9 +119,10 @@ HP_CMA_LOG = '/var/spool/compaq/cma.log'
 HP_HPASMD_LOG = '/var/spool/compaq/hpasmd.log'
 VAR_LOG_DIR = '/var/log/'
 VNCTERM_CORE_DIR = '/var/xen/vncterm'
-VSWITCH_CORE_DIR = '/var/xen/vswitch'
-OVS_VSWITCH_CONF = '/etc/ovs-vswitchd.conf.db'
-OVS_VSWITCH_DBCACHE = '/var/xapi/network.dbcache'
+OPENVSWITCH_CORE_DIR = '/var/xen/openvswitch'
+OPENVSWITCH_CONF = '/etc/openvswitch/conf.db'
+OPENVSWITCH_DBCACHE = '/var/xapi/network.dbcache'
+OPENVSWITCH_LOG_DIR = '/var/log/openvswitch'
 XENSOURCE_INVENTORY = '/etc/xensource-inventory'
 OEM_CONFIG_DIR = '/var/xsconfig'
 OEM_CONFIG_FILES_RE = re.compile(r'^.*xensource-inventory$')
@@ -278,9 +279,9 @@ CAP_SYSTEM_LOGS          = 'system-logs'
 CAP_SYSTEM_SERVICES      = 'system-services'
 CAP_TAPDISK_LOGS         = 'tapdisk-logs'
 CAP_VNCTERM              = 'vncterm'
-CAP_VSWITCH_CONFIG       = 'vswitch-config'
-CAP_VSWITCH_LOGS         = 'vswitch-logs'
-CAP_VSWITCH_STATUS       = 'vswitch-status'
+CAP_OPENVSWITCH_CONFIG   = 'openvswitch-config'
+CAP_OPENVSWITCH_LOGS     = 'openvswitch-logs'
+CAP_OPENVSWITCH_STATUS   = 'openvswitch-status'
 CAP_WLB                  = 'wlb'
 CAP_X11_LOGS             = 'X11'
 CAP_X11_AUTH             = 'X11-auth'
@@ -345,10 +346,10 @@ cap(CAP_SYSTEM_SERVICES,     PII_NO,                    max_size=5*KB,
     max_time=20)
 cap(CAP_TAPDISK_LOGS,        PII_NO,                    max_size=64*KB)
 cap(CAP_VNCTERM,             PII_MAYBE, checked = False)
-cap(CAP_VSWITCH_CONFIG,      PII_YES,
+cap(CAP_OPENVSWITCH_CONFIG,  PII_YES,
                                         min_size=0,     max_size=20*MB)
-cap(CAP_VSWITCH_LOGS,        PII_YES,                   max_size=20*MB)
-cap(CAP_VSWITCH_STATUS,      PII_YES,                   max_size=19*KB,
+cap(CAP_OPENVSWITCH_LOGS,    PII_YES,                   max_size=20*MB)
+cap(CAP_OPENVSWITCH_STATUS,  PII_YES,                   max_size=19*KB,
     max_time=30)
 cap(CAP_WLB,                 PII_NO,                    max_size=3*MB,
     max_time=20)
@@ -497,7 +498,8 @@ def main(argv = None):
                    CAP_NETWORK_CONFIG, CAP_NETWORK_STATUS, CAP_PROCESS_LIST, CAP_HIGH_AVAILABILITY,
                    CAP_PAM, CAP_PERSISTENT_STATS, CAP_MULTIPATH,
                    CAP_SYSTEM_LOGS, CAP_SYSTEM_SERVICES, CAP_TAPDISK_LOGS,
-                   CAP_VNCTERM, CAP_VSWITCH_CONFIG, CAP_VSWITCH_LOGS, CAP_VSWITCH_STATUS, CAP_WLB, 
+                   CAP_VNCTERM, CAP_OPENVSWITCH_CONFIG,
+                   CAP_OPENVSWITCH_LOGS, CAP_OPENVSWITCH_STATUS, CAP_WLB, 
                    CAP_X11_LOGS, CAP_X11_AUTH, CAP_XAPI_DEBUG, CAP_XAPI_SUBPROCESS, 
                    CAP_XENSERVER_CONFIG, CAP_XENSERVER_DOMAINS, CAP_XENSERVER_DATABASES, 
                    CAP_XENSERVER_INSTALL, CAP_XENSERVER_LOGS, CAP_XEN_INFO, CAP_XHA_LIVESET, CAP_YUM]
@@ -710,24 +712,25 @@ exclude those logs from the archive.
 
     tree_output(CAP_VNCTERM, VNCTERM_CORE_DIR)
 
-    file_output(CAP_VSWITCH_CONFIG, [OVS_VSWITCH_CONF])
-    file_output(CAP_VSWITCH_CONFIG, [OVS_VSWITCH_DBCACHE])
+    file_output(CAP_OPENVSWITCH_CONFIG, [OPENVSWITCH_CONF])
+    file_output(CAP_OPENVSWITCH_CONFIG, [OPENVSWITCH_DBCACHE])
 
-    file_output(CAP_VSWITCH_LOGS, 
-         [ VAR_LOG_DIR + x for x in
-           [ 'ovs-brcompatd.log', 'ovs-vswitchd.log', 'ovsdb-server.log', 'vswitch-cfg-update.log', 'vswitch-xsplugin.log' ] +
+    file_output(CAP_OPENVSWITCH_LOGS, 
+         [ OPENVSWITCH_LOG_DIR + x for x in
+           [ 'ovs-brcompatd.log', 'ovs-vswitchd.log', 'ovsdb-server.log', 
+             'openvswitch-cfg-update.log', 'openvswitch-xsplugin.log' ] +
            [ f % n for n in range(1, 20) \
                  for f in ['ovs-brcompatd.log.%d', 'ovs-brcompatd.log.%d.gz', 
                            'ovs-vswitchd.log.%d', 'ovs-vswitchd.log.%d.gz',
                            'ovsdb-server.log.%d', 'ovsdb-server.log.%d.gz']]])
 
-    cmd_output(CAP_VSWITCH_STATUS, [OVS_DPCTL, 'show'])
-    tree_output(CAP_VSWITCH_STATUS, VSWITCH_CORE_DIR)
+    cmd_output(CAP_OPENVSWITCH_STATUS, [OVS_DPCTL, 'show'])
+    tree_output(CAP_OPENVSWITCH_STATUS, OPENVSWITCH_CORE_DIR)
     for d in dp_list():
-        cmd_output(CAP_VSWITCH_STATUS, [OVS_OFCTL, 'show', d])
-        cmd_output(CAP_VSWITCH_STATUS, [OVS_OFCTL, 'status', d])
-        cmd_output(CAP_VSWITCH_STATUS, [OVS_OFCTL, 'dump-flows', d])
-        cmd_output(CAP_VSWITCH_STATUS, [OVS_DPCTL, 'dump-flows', d])
+        cmd_output(CAP_OPENVSWITCH_STATUS, [OVS_OFCTL, 'show', d])
+        cmd_output(CAP_OPENVSWITCH_STATUS, [OVS_OFCTL, 'status', d])
+        cmd_output(CAP_OPENVSWITCH_STATUS, [OVS_OFCTL, 'dump-flows', d])
+        cmd_output(CAP_OPENVSWITCH_STATUS, [OVS_DPCTL, 'dump-flows', d])
 
     cmd_output(CAP_WLB, [XE, 'pool-retrieve-wlb-diagnostics'])
 
diff --git a/xenserver/usr_share_openvswitch_scripts_refresh-network-uuids b/xenserver/usr_share_openvswitch_scripts_refresh-network-uuids
new file mode 100755 (executable)
index 0000000..34fe1e7
--- /dev/null
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+. /etc/xensource-inventory
+
+for pif in $(xe pif-list --minimal host-uuid=${INSTALLATION_UUID} currently-attached=true VLAN=-1 | sed 's/,/ /g'); do
+    printf "Refreshing PIF %s...  " $pif
+    if /opt/xensource/libexec/interface-reconfigure --pif-uuid=$pif up; then
+        printf "done\n"
+    else
+        printf "error!\n"
+    fi
+done
diff --git a/xenserver/usr_share_openvswitch_scripts_sysconfig.template b/xenserver/usr_share_openvswitch_scripts_sysconfig.template
new file mode 100644 (file)
index 0000000..9bd51bc
--- /dev/null
@@ -0,0 +1,234 @@
+### Configuration options for openvswitch
+
+# Copyright (C) 2009, 2010 Nicira Networks, Inc.
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.  This file is offered as-is,
+# without warranty of any kind.
+
+# ENABLE_BRCOMPAT: If 'y' than emulate linux bridging interfaces
+#    using the brcompat kernel module and ovs-brcompatd daemon
+# ENABLE_BRCOMPAT=y
+
+# ENABLE_FAKE_PROC_NET: If 'y' then emulate linux bonding and vlan
+#    files in /proc as if the bonding and vlan demultiplexing done in
+#    ovs-vswitchd were being implemented using existing Linux mechanisms.
+#    This is useful in some cases when replacing existing solutions.
+# ENABLE_FAKE_PROC_NET=y
+
+# ENABLE_MONITOR: If 'y' then monitor daemon processes and restart them
+#    if they die due to an error signal.
+# ENABLE_MONITOR=y
+
+# FORCE_COREFILES: If 'y' then core files will be enabled.
+# FORCE_COREFILES=y
+
+# COREFILE_PATTERN: Pattern used to determine path and filename for
+#     core files when FORCE_COREFILES is 'y'.  This is Linux specific.
+#     See the manpage for "core".
+# COREFILE_PATTERN="/var/xen/openvswitch/%e-%t"
+
+# OVSDB_SERVER_REMOTES: Space-separated list of methods on which to have
+#     ovsdb-server listen or connect for a JSON-RPC connection.
+# OVSDB_SERVER_REMOTES="punix:/var/run/openvswitch/db.sock db:Open_vSwitch,managers"
+
+# OVSDB_SERVER_DB: File for which ovsdb-server uses for storage.
+# OVSDB_SERVER_DB=/etc/openvswitch/conf.db
+
+# OVSDB_SERVER_PIDFILE: File in which to store the pid of the running
+#     ovsdb-server.
+# OVSDB_SERVER_PIDFILE=/var/run/openvswitch/ovsdb-server.pid
+
+# OVSDB_SERVER_RUN_DIR: Set the directory in which ovsdb-server should be
+#     run.  This mainly affects where core files will be placed.
+# OVSDB_SERVER_RUN_DIR=/var/xen/openvswitch
+
+# OVSDB_SERVER_PRIORITY: "nice" priority at which to run ovsdb-server and 
+#     related processes.
+# OVSDB_SERVER_PRIORITY=-10
+
+# OVSDB_SERVER_LOGFILE: File to send the FILE_LOGLEVEL log messages to.
+# OVSDB_SERVER_LOGFILE=/var/log/openvswitch/ovsdb-server.log
+
+# OVSDB_SERVER_FILE_LOGLEVEL: Log level at which to log into the
+#     OVSDB_SERVER_LOG file.  If this is null or not set the logfile will
+#     not be created and nothing will be sent to it.  This is the
+#     default.  The available options are: EMER, WARN, INFO and DBG.
+# OVSDB_SERVER_FILE_LOGLEVEL=""
+
+# OVSDB_SERVER_SYSLOG_LOGLEVEL: Log level at which to log into syslog.  If
+#     this is null or not set the default is to log to syslog
+#     emergency and warning level messages only.
+# OVSDB_SERVER_SYSLOG_LOGLEVEL="WARN"
+
+# OVSDB_SERVER_MEMLEAK_LOGFILE: File for logging memory leak data.
+#     Enabling this option will slow ovsdb-server significantly.  Do not
+#     enable it except to debug a suspected memory leak.  Use the
+#     ovs-parse-leaks utility included with Open vSwitch to parse the
+#     log file.  For best results, you also need debug symbols.
+# OVSDB_SERVER_MEMLEAK_LOGFILE=""
+
+# OVSDB_SERVER_STRACE_LOG: File for logging strace output.
+#     If this is set to a nonempty string, then ovsdb-server will run
+#     under strace, whose output will be logged to the specified file.
+#     Enabling this option will slow ovsdb-server significantly.
+#     OVSDB_SERVER_STRACE_LOG and OVSDB_SERVER_VALGRIND_LOG are mutually 
+#     exclusive.
+# OVSDB_SERVER_STRACE_LOG=""
+
+# OVSDB_SERVER_STRACE_OPT: Options to pass to strace.
+#     This option's value is honored only when OVSDB_SERVER_STRACE_LOG is
+#     set to a nonempty string.
+# OVSDB_SERVER_STRACE_OPT=""
+
+# OVSDB_SERVER_VALGRIND_LOG: File for logging valgrind output.
+#     If this is set to a nonempty string, then ovsdb-server will run
+#     under valgrind, whose output will be logged to the specified file.
+#     Enabling this option will slow ovsdb-server by 100X or more.
+#     valgrind is not installed by default on XenServer systems; you must
+#     install it by hand to usefully enable this option.
+#     OVSDB_SERVER_STRACE_LOG and OVSDB_SERVER_VALGRIND_LOG are mutually 
+#     exclusive.
+# OVSDB_SERVER_VALGRIND_LOG=""
+
+# OVSDB_SERVER_VALGRIND_OPT: Options to pass to valgrind.
+#     This option's value is honored only when OVSDB_SERVER_VALGRIND_LOG is
+#     set to a nonempty string.
+# OVSDB_SERVER_VALGRIND_OPT=""
+
+# VSWITCHD_OVSDB_SERVER: Method to have ovs-vswitchd initiate a JSON-RPC
+#     connection to an ovsdb-server instance.
+# VSWITCHD_OVSDB_SERVER=unix:/var/run/openvswitch/db.sock
+
+# VSWITCHD_OVSDB_SCHEMA: Schema file to use for generating a new OVSDB
+#     ovs-vswitchd database.
+# VSWITCHD_OVSDB_SCHEMA=/usr/share/openvswitch/vswitch.ovsschema
+
+# VSWITCHD_PIDFILE: File in which to store the pid of the running
+#     ovs-vswitchd.
+# VSWITCHD_PIDFILE=/var/run/openvswitch/ovs-vswitchd.pid
+
+# VSWITCHD_RUN_DIR: Set the directory in which ovs-vswitchd should be
+#     run.  This mainly affects where core files will be placed.
+# VSWITCHD_RUN_DIR=/var/xen/openvswitch
+
+# VSWITCHD_PRIORITY: "nice" priority at which to run ovs-vswitchd and related
+#     processes.
+# VSWITCHD_PRIORITY=-10
+
+# VSWITCHD_MLOCKALL: Whether to pass ovs-vswitchd the --mlockall option.
+#     This option should be set to "yes" or "no".  The default is "yes".
+#     Enabling this option can avoid networking interruptions due to
+#     system memory pressure in extraordinary situations, such as multiple
+#     concurrent VM import operations.
+# VSWITCHD_MLOCKALL=yes
+
+# VSWITCHD_LOGFILE: File to send the FILE_LOGLEVEL log messages to.
+# VSWITCHD_LOGFILE=/var/log/openvswitch/ovs-vswitchd.log
+
+# VSWITCHD_FILE_LOGLEVEL: Log level at which to log into the
+#     VSWITCHD_LOG file.  If this is null or not set the logfile will
+#     not be created and nothing will be sent to it.  This is the
+#     default.  The available options are: EMER, WARN, INFO and DBG.
+# VSWITCHD_FILE_LOGLEVEL=""
+
+# VSWITCHD_SYSLOG_LOGLEVEL: Log level at which to log into syslog.  If
+#     this is null or not set the default is to log to syslog
+#     emergency and warning level messages only.
+# VSWITCHD_SYSLOG_LOGLEVEL="WARN"
+
+# VSWITCHD_MEMLEAK_LOGFILE: File for logging memory leak data.
+#     Enabling this option will slow ovs-vswitchd significantly.  Do not
+#     enable it except to debug a suspected memory leak.  Use the
+#     ovs-parse-leaks utility included with Open vSwitch to parse the
+#     log file.  For best results, you also need debug symbols.
+# VSWITCHD_MEMLEAK_LOGFILE=""
+
+# VSWITCHD_STRACE_LOG: File for logging strace output.
+#     If this is set to a nonempty string, then ovs-vswitchd will run
+#     under strace, whose output will be logged to the specified file.
+#     Enabling this option will slow ovs-vswitchd significantly.
+#     VSWITCHD_STRACE_LOG and VSWITCHD_VALGRIND_LOG are mutually exclusive.
+# VSWITCHD_STRACE_LOG=""
+
+# VSWITCHD_STRACE_OPT: Options to pass to strace.
+#     This option's value is honored only when VSWITCHD_STRACE_LOG is
+#     set to a nonempty string.
+# VSWITCHD_STRACE_OPT=""
+
+# VSWITCHD_VALGRIND_LOG: File for logging valgrind output.
+#     If this is set to a nonempty string, then ovs-vswitchd will run
+#     under valgrind, whose output will be logged to the specified file.
+#     Enabling this option will slow ovs-vswitchd by 100X or more.
+#     valgrind is not installed by default on XenServer systems; you must
+#     install it by hand to usefully enable this option.
+#     VSWITCHD_STRACE_LOG and VSWITCHD_VALGRIND_LOG are mutually exclusive.
+# VSWITCHD_VALGRIND_LOG=""
+
+# VSWITCHD_VALGRIND_OPT: Options to pass to valgrind.
+#     This option's value is honored only when VSWITCHD_VALGRIND_LOG is
+#     set to a nonempty string.
+# VSWITCHD_VALGRIND_OPT=""
+
+# BRCOMPATD_PIDFILE: File in which to store the pid of the running
+#     ovs-brcompatd (the Linux bridge compatibility daemon for ovs-vswitchd).
+#     If this is the empty string, ovs-brcompatd will not be started and
+#     the brcompat_mod kernel module will not be inserted.  Note that
+#     the default is to use brcompat!
+# BRCOMPATD_PIDFILE=/var/run/openvswitch/ovs-brcompatd.pid
+
+# BRCOMPATD_RUN_DIR: Set the directory in which ovs-brcompatd should be
+#     run.  This mainly affects where core files will be placed.
+# BRCOMPATD_RUN_DIR=/var/xen/openvswitch
+
+# BRCOMPATD_PRIORITY: "nice" priority at which to run ovs-vswitchd and related
+#     processes.
+# BRCOMPATD_PRIORITY=-10
+
+# BRCOMPATD_LOGFILE: File to send the FILE_LOGLEVEL log messages to.
+# BRCOMPATD_LOGFILE=/var/log/openvswitch/ovs-brcompatd.log
+
+# BRCOMPATD_FILE_LOGLEVEL: Log level at which to log into the
+#     BRCOMPATD_LOG file.  If this is null or not set the logfile will
+#     not be created and nothing will be sent to it.  This is the
+#     default.  The available options are: EMER, WARN, INFO and DBG.
+# BRCOMPATD_FILE_LOGLEVEL=""
+
+# BRCOMPATD_SYSLOG_LOGLEVEL: Log level at which to log into syslog.  If
+#     this is null or not set the default is to log to syslog
+#     emergency and warning level messages only.
+# BRCOMPATD_SYSLOG_LOGLEVEL="WARN"
+
+# BRCOMPATD_MEMLEAK_LOGFILE: File for logging memory leak data.
+#     Enabling this option will slow ovs-brcompatd significantly.  Do not
+#     enable it except to debug a suspected memory leak.  Use the
+#     ovs-parse-leaks utility included with Open vSwitch to parse the
+#     log file.  For best results, you also need debug symbols.
+# BRCOMPATD_MEMLEAK_LOGFILE=""
+
+# BRCOMPATD_STRACE_LOG: File for logging strace output.
+#     If this is set to a nonempty string, then ovs-brcompatd will run
+#     under strace, whose output will be logged to the specified file.
+#     Enabling this option will slow brcompatd significantly.
+#     BRCOMPATD_STRACE_LOG and BRCOMPATD_VALGRIND_LOG are mutually exclusive.
+# BRCOMPATD_STRACE_LOG=""
+
+# BRCOMPATD_STRACE_OPT: Options to pass to strace.
+#     This option's value is honored only when BRCOMPATD_STRACE_LOG is
+#     set to a nonempty string.
+# BRCOMPATD_STRACE_OPT=""
+
+# BRCOMPATD_VALGRIND_LOG: File for logging valgrind output.
+#     If this is set to a nonempty string, then ovs-brcompatd will run
+#     under valgrind, whose output will be logged to the specified file.
+#     Enabling this option will slow brcompatd by 100X or more.
+#     valgrind is not installed by default on XenServer systems; you must
+#     install it by hand to usefully enable this option.
+#     BRCOMPATD_STRACE_LOG and BRCOMPATD_VALGRIND_LOG are mutually exclusive.
+# BRCOMPATD_VALGRIND_LOG=""
+
+# BRCOMPATD_VALGRIND_OPT: Options to pass to valgrind.
+#     This option's value is honored only when BRCOMPATD_VALGRIND_LOG is
+#     set to a nonempty string.
+# BRCOMPATD_VALGRIND_OPT=""
diff --git a/xenserver/usr_share_vswitch_scripts_refresh-network-uuids b/xenserver/usr_share_vswitch_scripts_refresh-network-uuids
deleted file mode 100755 (executable)
index 34fe1e7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/sh
-
-. /etc/xensource-inventory
-
-for pif in $(xe pif-list --minimal host-uuid=${INSTALLATION_UUID} currently-attached=true VLAN=-1 | sed 's/,/ /g'); do
-    printf "Refreshing PIF %s...  " $pif
-    if /opt/xensource/libexec/interface-reconfigure --pif-uuid=$pif up; then
-        printf "done\n"
-    else
-        printf "error!\n"
-    fi
-done
diff --git a/xenserver/usr_share_vswitch_scripts_sysconfig.template b/xenserver/usr_share_vswitch_scripts_sysconfig.template
deleted file mode 100644 (file)
index 4d5efca..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-### Configuration options for vswitch
-
-# Copyright (C) 2009, 2010 Nicira Networks, Inc.
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.  This file is offered as-is,
-# without warranty of any kind.
-
-# ENABLE_BRCOMPAT: If 'y' than emulate linux bridging interfaces
-#    using the brcompat kernel module and ovs-brcompatd daemon
-# ENABLE_BRCOMPAT=y
-
-# ENABLE_FAKE_PROC_NET: If 'y' then emulate linux bonding and vlan
-#    files in /proc as if the bonding and vlan demultiplexing done in
-#    ovs-vswitchd were being implemented using existing Linux mechanisms.
-#    This is useful in some cases when replacing existing solutions.
-# ENABLE_FAKE_PROC_NET=y
-
-# ENABLE_MONITOR: If 'y' then monitor daemon processes and restart them
-#    if they die due to an error signal.
-# ENABLE_MONITOR=y
-
-# FORCE_COREFILES: If 'y' then core files will be enabled.
-# FORCE_COREFILES=y
-
-# COREFILE_PATTERN: Pattern used to determine path and filename for
-#     core files when FORCE_COREFILES is 'y'.  This is Linux specific.
-#     See the manpage for "core".
-# COREFILE_PATTERN="/var/log/%e-%t"
-
-# OVSDB_SERVER_REMOTES: Space-separated list of methods on which to have
-#     ovsdb-server listen or connect for a JSON-RPC connection.
-# OVSDB_SERVER_REMOTES="punix:/var/run/ovsdb-server db:Open_vSwitch,managers"
-
-# OVSDB_SERVER_DB: File for which ovsdb-server uses for storage.
-# OVSDB_SERVER_DB=/etc/ovs-vswitchd.conf.db
-
-# OVSDB_SERVER_PIDFILE: File in which to store the pid of the running
-#     ovsdb-server.
-# OVSDB_SERVER_PIDFILE=/var/run/ovsdb-server.pid
-
-# OVSDB_SERVER_RUN_DIR: Set the directory in which ovsdb-server should be
-#     run.  This mainly affects where core files will be placed.
-# OVSDB_SERVER_RUN_DIR=/var/xen/vswitch
-
-# OVSDB_SERVER_PRIORITY: "nice" priority at which to run ovsdb-server and 
-#     related processes.
-# OVSDB_SERVER_PRIORITY=-10
-
-# OVSDB_SERVER_LOGFILE: File to send the FILE_LOGLEVEL log messages to.
-# OVSDB_SERVER_LOGFILE=/var/log/ovsdb-server.log
-
-# OVSDB_SERVER_FILE_LOGLEVEL: Log level at which to log into the
-#     OVSDB_SERVER_LOG file.  If this is null or not set the logfile will
-#     not be created and nothing will be sent to it.  This is the
-#     default.  The available options are: EMER, WARN, INFO and DBG.
-# OVSDB_SERVER_FILE_LOGLEVEL=""
-
-# OVSDB_SERVER_SYSLOG_LOGLEVEL: Log level at which to log into syslog.  If
-#     this is null or not set the default is to log to syslog
-#     emergency and warning level messages only.
-# OVSDB_SERVER_SYSLOG_LOGLEVEL="WARN"
-
-# OVSDB_SERVER_MEMLEAK_LOGFILE: File for logging memory leak data.
-#     Enabling this option will slow ovsdb-server significantly.  Do not
-#     enable it except to debug a suspected memory leak.  Use the
-#     ovs-parse-leaks utility included with Open vSwitch to parse the
-#     log file.  For best results, you also need debug symbols.
-# OVSDB_SERVER_MEMLEAK_LOGFILE=""
-
-# OVSDB_SERVER_STRACE_LOG: File for logging strace output.
-#     If this is set to a nonempty string, then ovsdb-server will run
-#     under strace, whose output will be logged to the specified file.
-#     Enabling this option will slow ovsdb-server significantly.
-#     OVSDB_SERVER_STRACE_LOG and OVSDB_SERVER_VALGRIND_LOG are mutually 
-#     exclusive.
-# OVSDB_SERVER_STRACE_LOG=""
-
-# OVSDB_SERVER_STRACE_OPT: Options to pass to strace.
-#     This option's value is honored only when OVSDB_SERVER_STRACE_LOG is
-#     set to a nonempty string.
-# OVSDB_SERVER_STRACE_OPT=""
-
-# OVSDB_SERVER_VALGRIND_LOG: File for logging valgrind output.
-#     If this is set to a nonempty string, then ovsdb-server will run
-#     under valgrind, whose output will be logged to the specified file.
-#     Enabling this option will slow ovsdb-server by 100X or more.
-#     valgrind is not installed by default on XenServer systems; you must
-#     install it by hand to usefully enable this option.
-#     OVSDB_SERVER_STRACE_LOG and OVSDB_SERVER_VALGRIND_LOG are mutually 
-#     exclusive.
-# OVSDB_SERVER_VALGRIND_LOG=""
-
-# OVSDB_SERVER_VALGRIND_OPT: Options to pass to valgrind.
-#     This option's value is honored only when OVSDB_SERVER_VALGRIND_LOG is
-#     set to a nonempty string.
-# OVSDB_SERVER_VALGRIND_OPT=""
-
-# VSWITCHD_OVSDB_SERVER: Method to have ovs-vswitchd initiate a JSON-RPC
-#     connection to an ovsdb-server instance.
-# VSWITCHD_OVSDB_SERVER=unix:/var/run/ovsdb-server
-
-# VSWITCHD_OVSDB_SCHEMA: Schema file to use for generating a new OVSDB
-#     ovs-vswitchd database.
-# VSWITCHD_OVSDB_SCHEMA=/usr/share/vswitch/vswitch.ovsschema
-
-# VSWITCHD_PIDFILE: File in which to store the pid of the running
-#     ovs-vswitchd.
-# VSWITCHD_PIDFILE=/var/run/ovs-vswitchd.pid
-
-# VSWITCHD_RUN_DIR: Set the directory in which ovs-vswitchd should be
-#     run.  This mainly affects where core files will be placed.
-# VSWITCHD_RUN_DIR=/var/xen/vswitch
-
-# VSWITCHD_PRIORITY: "nice" priority at which to run ovs-vswitchd and related
-#     processes.
-# VSWITCHD_PRIORITY=-10
-
-# VSWITCHD_MLOCKALL: Whether to pass ovs-vswitchd the --mlockall option.
-#     This option should be set to "yes" or "no".  The default is "yes".
-#     Enabling this option can avoid networking interruptions due to
-#     system memory pressure in extraordinary situations, such as multiple
-#     concurrent VM import operations.
-# VSWITCHD_MLOCKALL=yes
-
-# VSWITCHD_LOGFILE: File to send the FILE_LOGLEVEL log messages to.
-# VSWITCHD_LOGFILE=/var/log/ovs-vswitchd.log
-
-# VSWITCHD_FILE_LOGLEVEL: Log level at which to log into the
-#     VSWITCHD_LOG file.  If this is null or not set the logfile will
-#     not be created and nothing will be sent to it.  This is the
-#     default.  The available options are: EMER, WARN, INFO and DBG.
-# VSWITCHD_FILE_LOGLEVEL=""
-
-# VSWITCHD_SYSLOG_LOGLEVEL: Log level at which to log into syslog.  If
-#     this is null or not set the default is to log to syslog
-#     emergency and warning level messages only.
-# VSWITCHD_SYSLOG_LOGLEVEL="WARN"
-
-# VSWITCHD_MEMLEAK_LOGFILE: File for logging memory leak data.
-#     Enabling this option will slow ovs-vswitchd significantly.  Do not
-#     enable it except to debug a suspected memory leak.  Use the
-#     ovs-parse-leaks utility included with Open vSwitch to parse the
-#     log file.  For best results, you also need debug symbols.
-# VSWITCHD_MEMLEAK_LOGFILE=""
-
-# VSWITCHD_STRACE_LOG: File for logging strace output.
-#     If this is set to a nonempty string, then ovs-vswitchd will run
-#     under strace, whose output will be logged to the specified file.
-#     Enabling this option will slow ovs-vswitchd significantly.
-#     VSWITCHD_STRACE_LOG and VSWITCHD_VALGRIND_LOG are mutually exclusive.
-# VSWITCHD_STRACE_LOG=""
-
-# VSWITCHD_STRACE_OPT: Options to pass to strace.
-#     This option's value is honored only when VSWITCHD_STRACE_LOG is
-#     set to a nonempty string.
-# VSWITCHD_STRACE_OPT=""
-
-# VSWITCHD_VALGRIND_LOG: File for logging valgrind output.
-#     If this is set to a nonempty string, then ovs-vswitchd will run
-#     under valgrind, whose output will be logged to the specified file.
-#     Enabling this option will slow ovs-vswitchd by 100X or more.
-#     valgrind is not installed by default on XenServer systems; you must
-#     install it by hand to usefully enable this option.
-#     VSWITCHD_STRACE_LOG and VSWITCHD_VALGRIND_LOG are mutually exclusive.
-# VSWITCHD_VALGRIND_LOG=""
-
-# VSWITCHD_VALGRIND_OPT: Options to pass to valgrind.
-#     This option's value is honored only when VSWITCHD_VALGRIND_LOG is
-#     set to a nonempty string.
-# VSWITCHD_VALGRIND_OPT=""
-
-# BRCOMPATD_PIDFILE: File in which to store the pid of the running
-#     ovs-brcompatd (the Linux bridge compatibility daemon for ovs-vswitchd).
-#     If this is the empty string, ovs-brcompatd will not be started and
-#     the brcompat_mod kernel module will not be inserted.  Note that
-#     the default is to use brcompat!
-# BRCOMPATD_PIDFILE=/var/run/ovs-brcompatd.pid
-
-# BRCOMPATD_RUN_DIR: Set the directory in which ovs-brcompatd should be
-#     run.  This mainly affects where core files will be placed.
-# BRCOMPATD_RUN_DIR=/var/xen/vswitch
-
-# BRCOMPATD_PRIORITY: "nice" priority at which to run ovs-vswitchd and related
-#     processes.
-# BRCOMPATD_PRIORITY=-10
-
-# BRCOMPATD_LOGFILE: File to send the FILE_LOGLEVEL log messages to.
-# BRCOMPATD_LOGFILE=/var/log/ovs-brcompatd.log
-
-# BRCOMPATD_FILE_LOGLEVEL: Log level at which to log into the
-#     BRCOMPATD_LOG file.  If this is null or not set the logfile will
-#     not be created and nothing will be sent to it.  This is the
-#     default.  The available options are: EMER, WARN, INFO and DBG.
-# BRCOMPATD_FILE_LOGLEVEL=""
-
-# BRCOMPATD_SYSLOG_LOGLEVEL: Log level at which to log into syslog.  If
-#     this is null or not set the default is to log to syslog
-#     emergency and warning level messages only.
-# BRCOMPATD_SYSLOG_LOGLEVEL="WARN"
-
-# BRCOMPATD_MEMLEAK_LOGFILE: File for logging memory leak data.
-#     Enabling this option will slow ovs-brcompatd significantly.  Do not
-#     enable it except to debug a suspected memory leak.  Use the
-#     ovs-parse-leaks utility included with Open vSwitch to parse the
-#     log file.  For best results, you also need debug symbols.
-# BRCOMPATD_MEMLEAK_LOGFILE=""
-
-# BRCOMPATD_STRACE_LOG: File for logging strace output.
-#     If this is set to a nonempty string, then ovs-brcompatd will run
-#     under strace, whose output will be logged to the specified file.
-#     Enabling this option will slow brcompatd significantly.
-#     BRCOMPATD_STRACE_LOG and BRCOMPATD_VALGRIND_LOG are mutually exclusive.
-# BRCOMPATD_STRACE_LOG=""
-
-# BRCOMPATD_STRACE_OPT: Options to pass to strace.
-#     This option's value is honored only when BRCOMPATD_STRACE_LOG is
-#     set to a nonempty string.
-# BRCOMPATD_STRACE_OPT=""
-
-# BRCOMPATD_VALGRIND_LOG: File for logging valgrind output.
-#     If this is set to a nonempty string, then ovs-brcompatd will run
-#     under valgrind, whose output will be logged to the specified file.
-#     Enabling this option will slow brcompatd by 100X or more.
-#     valgrind is not installed by default on XenServer systems; you must
-#     install it by hand to usefully enable this option.
-#     BRCOMPATD_STRACE_LOG and BRCOMPATD_VALGRIND_LOG are mutually exclusive.
-# BRCOMPATD_VALGRIND_LOG=""
-
-# BRCOMPATD_VALGRIND_OPT: Options to pass to valgrind.
-#     This option's value is honored only when BRCOMPATD_VALGRIND_LOG is
-#     set to a nonempty string.
-# BRCOMPATD_VALGRIND_OPT=""
diff --git a/xenserver/vswitch-xen.spec b/xenserver/vswitch-xen.spec
deleted file mode 100644 (file)
index ad0fba4..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-# Spec file for vswitch and related programs.
-
-# Copyright (C) 2009, 2010 Nicira Networks, Inc.
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.  This file is offered as-is,
-# without warranty of any kind.
-
-# When building, the rpmbuild command line should define
-# vswitch_version, xen_version, and build_number using -D arguments.
-# for example:
-#
-#    rpmbuild -D "vswitch_version 0.8.9~1+build123" -D "xen_version 2.6.18-128.1.1.el5.xs5.1.0.483.1000xen" -D "build_number --with-build-number=123" -bb /usr/src/redhat/SPECS/vswitch-xen.spec
-#
-%define version %{vswitch_version}-%{xen_version}
-
-Name: vswitch
-Summary: Virtual switch
-Group: System Environment/Daemons
-URL: http://www.openvswitch.org/
-Vendor: Nicira Networks, Inc.
-Version: %{vswitch_version}
-
-# The entire source code is ASL 2.0 except datapath/ which is GPLv2
-License: ASL 2.0 and GPLv2
-Release: 1
-Source: openvswitch-%{vswitch_version}.tar.gz
-Buildroot: /tmp/vswitch-xen-rpm
-Requires: kernel-xen = %(echo '%{xen_version}' | sed 's/xen$//')
-# The following Conflicts prevents the "vswitch" package generated by
-# this spec file from installing at the same time as the "openvswitch"
-# package shipped with XenServer 5.5.900.  In fact, the packages
-# contain some files with identical names anyhow, so they will not
-# coexist, but adding an explicit Conflicts makes this conflict more
-# obvious.
-Conflicts: openvswitch
-
-%description
-The vswitch provides standard network bridging functions augmented with
-support for the OpenFlow protocol for remote per-flow control of
-traffic.
-
-%prep
-%setup -q -n openvswitch-%{vswitch_version}
-
-%build
-./configure --prefix=/usr --sysconfdir=/etc --localstatedir=%{_localstatedir} --with-l26=/lib/modules/%{xen_version}/build --enable-ssl %{build_number}
-make %{_smp_mflags}
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make install DESTDIR=$RPM_BUILD_ROOT
-install -d -m 755 $RPM_BUILD_ROOT/etc
-install -d -m 755 $RPM_BUILD_ROOT/etc/init.d
-install -m 755 xenserver/etc_init.d_vswitch \
-         $RPM_BUILD_ROOT/etc/init.d/vswitch
-install -m 755 xenserver/etc_init.d_vswitch-xapi-update \
-         $RPM_BUILD_ROOT/etc/init.d/vswitch-xapi-update
-install -d -m 755 $RPM_BUILD_ROOT/etc/sysconfig
-install -d -m 755 $RPM_BUILD_ROOT/etc/logrotate.d
-install -m 755 xenserver/etc_logrotate.d_vswitch \
-         $RPM_BUILD_ROOT/etc/logrotate.d/vswitch
-install -d -m 755 $RPM_BUILD_ROOT/etc/profile.d
-install -m 755 xenserver/etc_profile.d_vswitch.sh \
-         $RPM_BUILD_ROOT/etc/profile.d/vswitch.sh
-install -d -m 755 $RPM_BUILD_ROOT/etc/xapi.d/plugins
-install -m 755 xenserver/etc_xapi.d_plugins_vswitch-cfg-update \
-         $RPM_BUILD_ROOT/etc/xapi.d/plugins/vswitch-cfg-update
-install -d -m 755 $RPM_BUILD_ROOT/usr/share/vswitch/scripts
-install -m 644 vswitchd/vswitch.ovsschema \
-         $RPM_BUILD_ROOT/usr/share/vswitch/vswitch.ovsschema
-install -m 755 xenserver/opt_xensource_libexec_interface-reconfigure \
-             $RPM_BUILD_ROOT/usr/share/vswitch/scripts/interface-reconfigure
-install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigure.py \
-             $RPM_BUILD_ROOT/usr/share/vswitch/scripts/InterfaceReconfigure.py
-install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py \
-             $RPM_BUILD_ROOT/usr/share/vswitch/scripts/InterfaceReconfigureBridge.py
-install -m 644 xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py \
-             $RPM_BUILD_ROOT/usr/share/vswitch/scripts/InterfaceReconfigureVswitch.py
-install -m 755 xenserver/etc_xensource_scripts_vif \
-             $RPM_BUILD_ROOT/usr/share/vswitch/scripts/vif
-install -m 755 xenserver/usr_share_vswitch_scripts_refresh-network-uuids \
-               $RPM_BUILD_ROOT/usr/share/vswitch/scripts/refresh-network-uuids
-install -m 755 xenserver/usr_sbin_xen-bugtool \
-             $RPM_BUILD_ROOT/usr/share/vswitch/scripts/xen-bugtool
-install -m 755 xenserver/usr_sbin_brctl \
-             $RPM_BUILD_ROOT/usr/share/vswitch/scripts/brctl
-install -m 755 xenserver/usr_share_vswitch_scripts_sysconfig.template \
-         $RPM_BUILD_ROOT/usr/share/vswitch/scripts/sysconfig.template
-install -m 644 \
-        xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py \
-               $RPM_BUILD_ROOT/usr/share/vswitch/scripts/XSFeatureVSwitch.py
-
-install -d -m 755 $RPM_BUILD_ROOT/lib/modules/%{xen_version}/kernel/net/vswitch
-find datapath/linux-2.6 -name *.ko -exec install -m 755  \{\} $RPM_BUILD_ROOT/lib/modules/%{xen_version}/kernel/net/vswitch \;
-
-# Get rid of stuff we don't want to make RPM happy.
-rm \
-    $RPM_BUILD_ROOT/usr/bin/ovs-controller \
-    $RPM_BUILD_ROOT/usr/bin/ovs-discover \
-    $RPM_BUILD_ROOT/usr/bin/ovs-kill \
-    $RPM_BUILD_ROOT/usr/bin/ovs-openflowd \
-    $RPM_BUILD_ROOT/usr/bin/ovs-pki \
-    $RPM_BUILD_ROOT/usr/bin/ovs-wdt \
-    $RPM_BUILD_ROOT/usr/sbin/ovs-monitor \
-    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-controller.8 \
-    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-discover.8 \
-    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-kill.8 \
-    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-openflowd.8 \
-    $RPM_BUILD_ROOT/usr/share/man/man8/ovs-pki.8
-rm -f $RPM_BUILD_ROOT/lib/modules/%{xen_version}/kernel/net/vswitch/veth_mod.ko
-
-install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post
-if [ ! -f /etc/xensource-inventory ]; then
-    printf "XenSource inventory not present in /etc/xensource-inventory"
-    exit 1
-fi
-
-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
-b8e9835862ef1a9cec2a3f477d26c989  /etc/xensource/scripts/vif
-ce451d3c985fd1db6497a363f0d9dedb  /opt/xensource/libexec/interface-reconfigure
-2b53f500431fcba5276c896e9e4281b9  /usr/sbin/xen-bugtool
-EOF
-    then
-        printf "\nVerified host scripts from XenServer 5.5.900.\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
-
-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/vswitch/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
-
-# Ensure that modprobe will find our modules.
-depmod %{xen_version}
-
-if grep -F net.ipv4.conf.all.arp_filter /etc/sysctl.conf >/dev/null 2>&1; then :; else
-    cat >>/etc/sysctl.conf <<EOF
-# This works around an issue in xhad, which binds to a particular
-# Ethernet device, which in turn causes ICMP port unreachable messages
-# if packets are received are on the wrong interface, which in turn
-# can happen if we send out ARP replies on every interface (as Linux
-# does by default) instead of just on the interface that has the IP
-# address being ARPed for, which this sysctl setting in turn works
-# around.
-#
-# Bug #1378.
-net.ipv4.conf.all.arp_filter = 1
-EOF
-fi
-
-if test ! -e /etc/ovs-vswitchd.conf.db; then
-    # Create ovs-vswitchd config database
-    ovsdb-tool -vANY:console:emer create /etc/ovs-vswitchd.conf.db \
-            /usr/share/vswitch/vswitch.ovsschema \
-
-    # Create initial table in config database
-    ovsdb-tool -vANY:console:emer transact /etc/ovs-vswitchd.conf.db \
-            '[{"op": "insert", "table": "Open_vSwitch", "row": {}}]' \
-            > /dev/null
-fi
-
-# Create default or update existing /etc/sysconfig/vswitch.
-SYSCONFIG=/etc/sysconfig/vswitch
-TEMPLATE=/usr/share/vswitch/scripts/sysconfig.template
-if [ ! -e $SYSCONFIG ]; then
-    cp $TEMPLATE $SYSCONFIG
-else
-    for var in $(awk -F'[ :]' '/^# [_A-Z0-9]+:/{print $2}' $TEMPLATE)
-    do
-        if ! grep $var $SYSCONFIG >/dev/null 2>&1; then
-            echo >> $SYSCONFIG
-            sed -n "/$var:/,/$var=/p" $TEMPLATE >> $SYSCONFIG
-        fi
-    done
-fi
-
-# Replace XenServer files by our versions.
-mkdir -p /usr/lib/vswitch/xs-original \
-    || printf "Could not create script backup directory.\n"
-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")
-    t=$(readlink "$f")
-    if [ -f "$f" ] && [ "$t" != "/usr/share/vswitch/scripts/$s" ]; then
-        mv "$f" /usr/lib/vswitch/xs-original/ \
-            || printf "Could not save original XenServer $s script\n"
-        ln -s "/usr/share/vswitch/scripts/$s" "$f" \
-            || printf "Could not link to vSwitch $s script\n"
-    fi
-done
-
-# Install xsconsole plugin
-plugin=$(readlink /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py)
-if [ "$plugin" != "/usr/share/vswitch/scripts/XSFeatureVSwitch.py" ]; then
-    rm -f /usr/lib/xsconsole/plugins-base/XSFeatureVSwitch.py
-    ln -s /usr/share/vswitch/scripts/XSFeatureVSwitch.py /usr/lib/xsconsole/plugins-base/ || printf "Could not link to vSswitch xsconsole plugin.\n"
-fi
-
-# Ensure all required services are set to run
-for s in vswitch vswitch-xapi-update; do
-    if chkconfig --list $s >/dev/null 2>&1; then
-        chkconfig --del $s || printf "Could not remove $s init script."
-    fi
-    chkconfig --add $s || printf "Could not add $s init script."
-    chkconfig $s on || printf "Could not enable $s init script."
-done
-
-# Configure system to use vswitch
-echo vswitch > /etc/xensource/network.conf
-
-if [ "$1" = "1" ]; then    # $1 = 2 for upgrade
-    printf "\nYou MUST reboot the server NOW to complete the change to the\n"
-    printf "the vSwitch.  Attempts to modify networking on the server\n"
-    printf "or any hosted VM will fail until after the reboot and could\n"
-    printf "leave the server in an state requiring manual recovery.\n\n"
-else
-    printf "\nTo use the new vSwitch, you should reboot the server\n"
-    printf "now.  Failure to do so may result in incorrect operation.\n\n"
-fi
-
-%preun
-if [ "$1" = "0" ]; then     # $1 = 1 for upgrade
-    for s in vswitch vswitch-xapi-update; do
-        chkconfig --del $s || printf "Could not remove $s init script."
-    done
-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 vSwitch xsconsole plugin.\n"
-
-    # Restore original XenServer scripts
-    for f in \
-        /opt/xensource/libexec/interface-reconfigure \
-        /etc/xensource/scripts/vif \
-        /usr/sbin/xen-bugtool \
-        /usr/sbin/brctl
-    do
-        s=$(basename "$f")
-        if [ ! -f "/usr/lib/vswitch/xs-original/$s" ]; then
-            printf "Original XenServer $s script not present in /usr/lib/vswitch/xs-original\n"
-            printf "Could not restore original XenServer script.\n"
-        else
-            (rm -f "$f" \
-                && mv "/usr/lib/vswitch/xs-original/$s" "$f") \
-                || printf "Could not restore original XenServer $s script.\n"
-        fi
-    done
-
-    # Remove all configuration files
-    rm -f /etc/ovs-vswitchd.conf.db
-    rm -f /etc/sysconfig/vswitch
-    rm -f /etc/ovs-vswitchd.cacert
-    rm -f /var/xapi/network.dbcache
-
-    # 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"
-    printf "server or any hosted VM will fail until after the reboot and\n"
-    printf "could leave the server in a state requiring manual recovery.\n\n"
-fi
-
-
-%files
-%defattr(-,root,root)
-/etc/init.d/vswitch
-/etc/init.d/vswitch-xapi-update
-/etc/xapi.d/plugins/vswitch-cfg-update
-/etc/logrotate.d/vswitch
-/etc/profile.d/vswitch.sh
-/lib/modules/%{xen_version}/kernel/net/vswitch/openvswitch_mod.ko
-/lib/modules/%{xen_version}/kernel/net/vswitch/brcompat_mod.ko
-%if %(echo '%{xen_version}'|awk -F"." '{if ($3>=18) print 1; else print 0;}')
-/lib/modules/%{xen_version}/kernel/net/vswitch/ip_gre_mod.ko
-%endif
-/usr/share/vswitch/scripts/refresh-network-uuids
-/usr/share/vswitch/scripts/interface-reconfigure
-/usr/share/vswitch/scripts/InterfaceReconfigure.py
-/usr/share/vswitch/scripts/InterfaceReconfigureBridge.py
-/usr/share/vswitch/scripts/InterfaceReconfigureVswitch.py
-/usr/share/vswitch/scripts/vif
-/usr/share/vswitch/scripts/xen-bugtool
-/usr/share/vswitch/scripts/XSFeatureVSwitch.py
-/usr/share/vswitch/scripts/brctl
-/usr/share/vswitch/scripts/sysconfig.template
-/usr/share/vswitch/vswitch.ovsschema
-/usr/sbin/ovs-brcompatd
-/usr/sbin/ovs-vswitchd
-/usr/sbin/ovsdb-server
-/usr/bin/ovs-appctl
-/usr/bin/ovs-dpctl
-/usr/bin/ovs-ofctl
-/usr/bin/ovs-vsctl
-/usr/bin/ovsdb-client
-/usr/bin/ovsdb-tool
-/usr/share/man/man1/ovsdb-client.1.gz
-/usr/share/man/man1/ovsdb-server.1.gz
-/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-vsctl.8.gz
-/usr/share/man/man8/ovs-vswitchd.8.gz
-/var/lib/openvswitch
-%exclude /usr/share/vswitch/scripts/*.pyc
-%exclude /usr/share/vswitch/scripts/*.pyo