ovs-vsctl: Remove default timeout.
[sliver-openvswitch.git] / debian / openvswitch-switch.init
index de8f295..13dea1c 100755 (executable)
@@ -12,7 +12,7 @@
 ### BEGIN INIT INFO
 # Provides:          openvswitch-switch
 # Required-Start:    $network $named $remote_fs $syslog
-# Required-Stop:
+# Required-Stop:     $remote_fs
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Open vSwitch switch
@@ -33,11 +33,14 @@ DODTIME=1                   # Time to wait for the server to die, in seconds
 unset OVSDB_SERVER_OPTS
 unset OVS_VSWITCHD_OPTS
 unset CORE_LIMIT
+unset ENABLE_MONITOR
 default=/etc/default/openvswitch-switch
 if [ -f $default ] ; then
-       . $default
+    . $default
 fi
 
+: ${ENABLE_MONITOR:=y}
+
 set -e
 
 # running_pid pid name
@@ -63,11 +66,11 @@ running_pid()
 # running name
 #
 # Checks for a running process named 'name' by looking for a pidfile
-# named /var/run/${name}.pid
+# named /var/run/openvswitch/${name}.pid
 running()
 {
     local name=$1
-    local pidfile=/var/run/${name}.pid
+    local pidfile=/var/run/openvswitch/${name}.pid
 
     # No pidfile, probably no daemon present
     [ ! -f "$pidfile" ] && return 1
@@ -81,11 +84,11 @@ running()
 # force_stop name
 #
 # Checks for a running process named 'name', by looking for a pidfile
-# named /var/run/${name}.pid, and then kills it and waits for it to
-# die.
+# named /var/run/openvswitch/${name}.pid, and then kills it and waits 
+# for it to die.
 force_stop() {
     local name=$1
-    local pidfile=/var/run/${name}.pid
+    local pidfile=/var/run/openvswitch/${name}.pid
 
     [ ! -f "$pidfile" ] && return
     if running $name; then
@@ -188,67 +191,101 @@ unload_modules() {
         done
     fi
     unload_module openvswitch_mod
-    unload_module ip_gre_mod
 }
 
 case "$1" in
     start)
         load_module openvswitch_mod
-        unload_module ip_gre
-        load_module ip_gre_mod
 
         if test -n "$CORE_LIMIT"; then
             check_op "Setting core limit to $CORE_LIMIT" ulimit -c "$CORE_LIMIT"
         fi
 
+        # Create an empty configuration database if it doesn't exist.
+        if test ! -e /etc/openvswitch/conf.db; then
+            install -d -m 755 -o root -g root /etc/openvswitch
+
+            # Create configuration database.
+            ovsdb-tool -vANY:console:emer \
+                create /etc/openvswitch/conf.db \
+                /usr/share/openvswitch/vswitch.ovsschema
+        else
+            # Upgrade or downgrade schema and compact database.
+            ovsdb-tool -vANY:console:emer \
+                convert /etc/openvswitch/conf.db \
+                /usr/share/openvswitch/vswitch.ovsschema
+        fi
+
+        if test "$ENABLE_MONITOR" = y; then
+            monitor_opt=--monitor
+        else
+            monitor_opt=
+        fi
+
+        if [ ! -d /var/run/openvswitch ]; then
+            install -d -m 755 -o root -g root /var/run/openvswitch
+        fi
+
+        if [ ! -d /var/log/openvswitch ]; then
+            install -d -m 755 -o root -g root /var/log/openvswitch
+        fi
+
         # Start ovsdb-server.
         set --
+        set -- "$@" /etc/openvswitch/conf.db
         set -- "$@" --verbose=ANY:console:emer --verbose=ANY:syslog:err
-        set -- "$@" --log-file
-        set -- "$@" --detach --pidfile
-        set -- "$@" --remote punix:/var/run/ovsdb-server
-        set -- "$@" /etc/openvswitch-switch/conf
+        set -- "$@" --log-file=/var/log/openvswitch/ovsdb-server.log
+        set -- "$@" --detach --pidfile $monitor_opt
+        set -- "$@" --remote punix:/var/run/openvswitch/db.sock
+        set -- "$@" --remote db:Open_vSwitch,managers
+        set -- "$@" --private-key=db:SSL,private_key
+        set -- "$@" --certificate=db:SSL,certificate
+        set -- "$@" --bootstrap-ca-cert=db:SSL,ca_cert
         set -- "$@" $OVSDB_SERVER_OPTS
-       echo -n "Starting ovsdb-server: "
-       start-stop-daemon --start --quiet --pidfile /var/run/ovsdb-server.pid \
-           --exec $ovsdb_server -- "$@"
+        echo -n "Starting ovsdb-server: "
+        start-stop-daemon --start --quiet \
+            --pidfile /var/run/openvswitch/ovsdb-server.pid \
+            --exec $ovsdb_server -- "$@"
         if running ovsdb-server; then
             echo "ovsdb-server."
         else
             echo " ERROR."
         fi
 
+        ovs-vsctl --no-wait --timeout=5 init
+
         # Start ovs-vswitchd.
         set --
         set -- "$@" --verbose=ANY:console:emer --verbose=ANY:syslog:err
-        set -- "$@" --log-file
-        set -- "$@" --detach --pidfile
-        set -- "$@" unix:/var/run/ovsdb-server
+        set -- "$@" --log-file=/var/log/openvswitch/ovs-vswitchd.log
+        set -- "$@" --detach --pidfile $monitor_opt
+        set -- "$@" unix:/var/run/openvswitch/db.sock
         set -- "$@" $OVS_VSWITCHD_OPTS
-       echo -n "Starting ovs-vswitchd: "
-       start-stop-daemon --start --quiet --pidfile /var/run/ovs-vswitchd.pid \
-           --exec $ovs_vswitchd -- "$@"
+        echo -n "Starting ovs-vswitchd: "
+        start-stop-daemon --start --quiet \
+            --pidfile /var/run/openvswitch/ovs-vswitchd.pid \
+            --exec $ovs_vswitchd -- "$@"
         if running ovs-vswitchd; then
             echo "ovs-vswitchd."
         else
             echo " ERROR."
         fi
-       ;;
+        ;;
     stop)
-       echo -n "Stopping ovs-vswitchd: "
-       start-stop-daemon --stop --quiet --oknodo \
-            --pidfile /var/run/ovs-vswitchd.pid \
+        echo -n "Stopping ovs-vswitchd: "
+        start-stop-daemon --stop --quiet --oknodo --retry 5 \
+            --pidfile /var/run/openvswitch/ovs-vswitchd.pid \
             --exec $ovs_vswitchd
-       echo "ovs-vswitchd."
+        echo "ovs-vswitchd."
 
-       echo -n "Stopping ovsdb-server: "
-       start-stop-daemon --stop --quiet --oknodo \
-            --pidfile /var/run/ovsdb-server.pid \
+        echo -n "Stopping ovsdb-server: "
+        start-stop-daemon --stop --quiet --oknodo --retry 5 \
+            --pidfile /var/run/openvswitch/ovsdb-server.pid \
             --exec $ovsdb_server
-       echo "ovsdb-server."
-       ;;
+        echo "ovsdb-server."
+        ;;
     force-stop)
-       echo -n "Forcefully stopping ovs-vswitchd: "
+        echo -n "Forcefully stopping ovs-vswitchd: "
         force_stop ovs-vswitchd
         if ! running ovs-vswitchd; then
             echo "ovs-vswitchd."
@@ -256,28 +293,28 @@ case "$1" in
             echo " ERROR."
         fi
 
-       echo -n "Forcefully stopping ovsdb-server: "
+        echo -n "Forcefully stopping ovsdb-server: "
         force_stop ovsdb-server
         if ! running ovsdb-server; then
             echo "ovsdb-server."
         else
             echo " ERROR."
         fi
-       ;;
+        ;;
     unload)
-       unload_modules
-       ;;
+        unload_modules
+        ;;
     reload)
         ;;
     force-reload)
         # Nothing to do, since ovs-vswitchd automatically reloads
         # whenever its configuration changes, and ovsdb-server doesn't
         # have anything to reload.
-       ;;
+        ;;
     restart)
         $0 stop || true
         $0 start
-       ;;
+        ;;
     status)
         for daemon in ovs-vswitchd ovsdb-server; do
             echo -n "$daemon is "
@@ -290,10 +327,10 @@ case "$1" in
         done
         ;;
     *)
-       N=/etc/init.d/$NAME
-       echo "Usage: $N {start|stop|restart|force-reload|status|force-stop|unload}" >&2
-       exit 1
-       ;;
+        N=/etc/init.d/openvswitch-switch
+        echo "Usage: $N {start|stop|restart|force-reload|status|force-stop|unload}" >&2
+        exit 1
+        ;;
 esac
 
 exit 0