Refactor initscripts into distro-independent and distro-specific pieces.
[cascardo/ovs.git] / xenserver / etc_init.d_openvswitch
1 #!/bin/sh
2 #
3 # openvswitch
4 #
5 # chkconfig: 2345 09 91
6 # description: Manage Open vSwitch kernel modules and user-space daemons
7
8 # Copyright (C) 2009, 2010, 2011 Nicira Networks, Inc.
9 #
10 # Licensed under the Apache License, Version 2.0 (the "License");
11 # you may not use this file except in compliance with the License.
12 # You may obtain a copy of the License at:
13 #
14 #     http://www.apache.org/licenses/LICENSE-2.0
15 #
16 # Unless required by applicable law or agreed to in writing, software
17 # distributed under the License is distributed on an "AS IS" BASIS,
18 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 # See the License for the specific language governing permissions and
20 # limitations under the License.
21 ### BEGIN INIT INFO
22 # Provides:          openvswitch-switch
23 # Required-Start:
24 # Required-Stop:
25 # Default-Start:     2 3 4 5
26 # Default-Stop:      0 1 6
27 # Short-Description: Open vSwitch switch
28 ### END INIT INFO
29
30 . /usr/share/openvswitch/scripts/ovs-lib.sh || exit 1
31 . /etc/xensource-inventory
32 test -e /etc/sysconfig/openvswitch && . /etc/sysconfig/openvswitch
33
34 case `cat /etc/xensource/network.conf` in
35     vswitch|openvswitch)
36         ;;
37     bridge)
38         exit 0
39         ;;
40     *)
41         echo "Open vSwitch disabled (/etc/xensource/network.conf is invalid)" >&2
42         exit 0
43         ;;
44 esac
45
46 start () {
47     set $ovs_ctl start
48     set "$@" --system-id="$INSTALLATION_UUID"
49     set "$@" --system-type="$PRODUCT_BRAND"
50     set "$@" --system-version="$PRODUCT_VERSION-$BUILD_NUMBER"
51     set "$@" --external-id=xs-system-uuid="$INSTALLATION_UUID"
52     set "$@" --daemon-cwd=/var/xen/openvswitch
53     if test X"$FORCE_COREFILES" != X; then
54         set "$@" --force-oorefiles="$FORCE_COREFILES"
55     fi
56     if test X"$OVSDB_SERVER_PRIORITY" != X; then
57         set "$@" --ovsdb-server-priority="$OVSDB_SERVER_PRIORITY"
58     fi
59     if test X"$VSWITCHD_PRIORITY" != X; then
60         set "$@" --ovs-vswitchd-priority="$VSWITCHD_PRIORITY"
61     fi
62     if test X"$VSWITCHD_MLOCKALL" != X; then
63         set "$@" --mlockall="$VSWITCHD_MLOCKALL"
64     fi
65     if test ! -e /var/run/openvswitch.booted; then
66         touch /var/run/openvswitch.booted
67         set "$@" --delete-bridges
68     fi
69     "$@"
70
71     if daemon_is_running ovs-xapi-sync; then
72         log_success_msg "ovs-xapi-sync is already running"
73     else
74         PYTHONPATH=/usr/share/openvswitch/python \
75             /usr/share/openvswitch/scripts/ovs-xapi-sync \
76             --pidfile --detach --monitor unix:/var/run/openvswitch/db.sock
77     fi
78
79     # Allow GRE traffic.
80     /sbin/iptables -I INPUT -p gre -j ACCEPT
81
82     touch /var/lock/subsys/openvswitch
83 }
84
85 stop () {
86     $ovs_ctl stop
87     stop_daemon ovs-xapi-sync
88     rm -f /var/lock/subsys/openvswitch
89 }
90
91 ovs_ctl=/usr/share/openvswitch/scripts/ovs-ctl
92 case $1 in
93     start)
94         start
95         ;;
96     stop)
97         stop
98         ;;
99     restart)
100         stop
101         start
102         ;;
103     reload|force-reload)
104         # The main OVS daemons keep up-to-date, but ovs-xapi-sync needs help.
105         pidfile=/var/run/openvswitch/ovs-xapi-sync.pid
106         if test -e "$pidfile"; then
107             pid=`cat "$pidfile"`
108             action "Configuring Open vSwitch external IDs" kill -HUP $pid
109         fi
110         ;;
111     status)
112         $ovs_ctl status && daemon_status ovs-xapi-sync
113         ;;
114     version)
115         $ovs_ctl version
116         ;;
117     force-reload-kmod)
118         $ovs_ctl force_reload_kmod
119         ;;
120     help)
121         printf "openvswitch [start|stop|restart|reload|force-reload|status|version]\n"
122         ;;
123     *)
124         printf "Unknown command: $1\n"
125         exit 1
126         ;;
127 esac