X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=xenserver%2Fetc_init.d_openvswitch;h=2cfaacdb0707a6a4c2d7d5d59d0ba10904bb16f0;hb=refs%2Fheads%2Flts-1.0a;hp=c6cc66b5218f269198c42551f960e0374cb840a5;hpb=2158888d8d8f3b4c00dcf979390a19fa7fcf7942;p=sliver-openvswitch.git diff --git a/xenserver/etc_init.d_openvswitch b/xenserver/etc_init.d_openvswitch index c6cc66b52..2cfaacdb0 100755 --- a/xenserver/etc_init.d_openvswitch +++ b/xenserver/etc_init.d_openvswitch @@ -25,10 +25,17 @@ test -e /etc/sysconfig/openvswitch && . /etc/sysconfig/openvswitch NETWORK_MODE=$(cat /etc/xensource/network.conf) -if test "$NETWORK_MODE" = bridge; then - echo "Open vSwitch disabled (/etc/xensource/network.conf is 'bridge')" >&2 - exit 0 -fi +case $NETWORK_MODE in + vswitch|openvswitch) + ;; + bridge) + exit 0 + ;; + *) + echo "Open vSwitch disabled (/etc/xensource/network.conf is invalid)" >&2 + exit 0 + ;; +esac # General config variables in /etc/sysconfig/openvswitch if test "$PRODUCT_VERSION" = "5.5.0"; then @@ -87,25 +94,11 @@ fi : ${BRCOMPATD_VALGRIND_LOG:=} : ${BRCOMPATD_VALGRIND_OPT:=} -# Config variables specific to ovs-xenserverd -: ${XENSERVERD_PIDFILE:=/var/run/openvswitch/ovs-xenserverd.pid} -: ${XENSERVERD_RUN_DIR:=/var/xen/openvswitch} -: ${XENSERVERD_PRIORITY:=} -: ${XENSERVERD_LOGFILE:=} -: ${XENSERVERD_FILE_LOGLEVEL:=} -: ${XENSERVERD_SYSLOG_LOGLEVEL:=} -: ${XENSERVERD_MEMLEAK_LOGFILE:=} -: ${XENSERVERD_STRACE_LOG:=} -: ${XENSERVERD_STRACE_OPT:=} -: ${XENSERVERD_VALGRIND_LOG:=} -: ${XENSERVERD_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" -xenserverd="/usr/sbin/ovs-xenserverd" dpctl="/usr/bin/ovs-dpctl" appctl="/usr/bin/ovs-appctl" ofctl="/usr/bin/ovs-ofctl" @@ -254,10 +247,6 @@ function start_brcompatd { "$VSWITCHD_OVSDB_SERVER" } -function start_xenserverd { - start_daemon XENSERVERD "$xenserverd" -} - function stop_daemon { local DAEMON=$1 local BINARY=$2 @@ -265,6 +254,13 @@ function stop_daemon { if test -f "$pidfile"; then local pid=$(cat "$pidfile") action "Killing `basename $BINARY` ($pid)" kill $pid + for delay in .1 .25 .65 1 1 1 1; do + if kill -0 $pid >/dev/null 2>&1; then + sleep $delay + else + break + fi + done rm -f "$pidfile" fi } @@ -294,12 +290,16 @@ EOF esac } -function set_system_uuid { - if test -n "$INSTALLATION_UUID"; then - action "Configuring Open vSwitch system UUID" true - $vsctl --no-wait set Open_vSwitch . external-ids:system-uuid="$INSTALLATION_UUID" +function set_system_ids { + if [ -f /etc/xensource-inventory ]; then + action "Configuring Open vSwitch system IDs" true + $vsctl --no-wait --timeout=5 set Open_vSwitch . \ + external-ids:system-type="$PRODUCT_BRAND" \ + external-ids:system-version="$PRODUCT_VERSION-$BUILD_NUMBER" \ + external-ids:system-id="$INSTALLATION_UUID" \ + external-ids:xs-system-uuid="$INSTALLATION_UUID" else - action "Configuring Open vSwitch system UUID" false + action "Configuring Open vSwitch system IDs" false fi } @@ -329,29 +329,36 @@ function start { fi start_ovsdb_server - $vsctl --no-wait init + $vsctl --no-wait --timeout=5 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 + $vsctl --no-wait --timeout=5 del-br $bridge done fi - set_system_uuid + set_system_ids start_vswitchd if [ "${ENABLE_BRCOMPAT}" = "y" ] ; then start_brcompatd fi - start_xenserverd + + # Start daemon to monitor external ids + PYTHONPATH=/usr/share/openvswitch/python \ + /usr/share/openvswitch/scripts/ovs-external-ids \ + --pidfile --detach $monitor_opt "$VSWITCHD_OVSDB_SERVER" + touch /var/lock/subsys/openvswitch } function stop { - stop_daemon XENSERVERD "$xenserverd" stop_daemon BRCOMPATD "$brcompatd" stop_daemon VSWITCHD "$vswitchd" stop_daemon OVSDB_SERVER "$ovsdb_server" + if [ -e /var/run/openvswitch/ovs-external-ids.pid ]; then + kill `cat /var/run/openvswitch/ovs-external-ids.pid` + fi rm -f /var/lock/subsys/openvswitch } @@ -372,6 +379,10 @@ case "$1" in restart) restart ;; + reload|force-reload) + # Nothing to do--ovs-vswitchd and ovsdb-server keep their configuration + # up-to-date all the time. + ;; strace-vswitchd) shift strace -p $(cat "$VSWITCHD_PIDFILE") "$@" @@ -384,17 +395,15 @@ case "$1" in status -p "$OVSDB_SERVER_PIDFILE" ovsdb-server && status -p "$VSWITCHD_PIDFILE" ovs-vswitchd && (test "$ENABLE_BRCOMPAT" != "y" || - status -p "$BRCOMPATD_PIDFILE" ovs-brcompatd) && - status -p "$XENSERVERD_PIDFILE" ovs-xenserverd + status -p "$BRCOMPATD_PIDFILE" ovs-brcompatd) ;; version) /usr/sbin/ovsdb-server -V /usr/sbin/ovs-vswitchd -V /usr/sbin/ovs-brcompatd -V - /usr/sbin/ovs-xenserverd -V ;; help) - printf "openvswitch [start|stop|restart|unload|status|version]\n" + printf "openvswitch [start|stop|restart|reload|force-reload|status|version]\n" ;; *) printf "Unknown command: $1\n"