3 # Copyright (c) 2013, 2015 Nicira, Inc.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at:
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
20 (cd "$sandbox" && "$@") || exit 1
26 run xterm -T "$title" -e "$@" &
32 # Remove the --detach and to put the process under gdb control.
33 # Also remove --vconsole:off to allow error message to show up
35 # Use "DISPLAY" variable to determine out if X is supported
36 if $under_gdb && [ "$DISPLAY" ]; then
37 args=`echo $@ |sed s/--detach//g | sed s/--vconsole:off//g`
39 run_xterm $xterm_title gdb -ex run --args $args
48 gdb_ovn_controller=false
59 # This option-parsing mechanism borrowed from a Autoconf-generated
60 # configure script under the following license:
62 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
63 # 2002, 2003, 2004, 2005, 2006, 2009, 2013 Free Software Foundation, Inc.
64 # This configure script is free software; the Free Software Foundation
65 # gives unlimited permission to copy, distribute and modify it.
67 # If the previous option needs an argument, assign it.
68 if test -n "$prev"; then
74 *=*) optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
78 case $dashdash$option in
83 ovs-sandbox, for starting a sandboxed dummy Open vSwitch environment
86 If you run ovs-sandbox from an OVS build directory, it uses the OVS that
87 you built. Otherwise, if you have an installed Open vSwitch, it uses
88 the installed version.
90 These options force ovs-sandbox to use a particular OVS build:
91 -b, --builddir=DIR specify Open vSwitch build directory
92 -s, --srcdir=DIR specify Open vSwitch source directory
93 These options force ovs-sandbox to use an installed Open vSwitch:
94 -i, --installed use installed Open vSwitch
95 -g, --gdb-vswitchd run ovs-vswitchd under gdb
96 -d, --gdb-ovsdb run ovsdb-server under gdb
97 --gdb-ovn-northd run ovn-northd under gdb
98 --gdb-ovn-controller run ovn-controller under gdb
99 -S, --schema=FILE use FILE as vswitch.ovsschema
103 -h, --help Print this usage message.
144 --gdb-ovn-controller)
145 gdb_ovn_controller=true
151 echo "unrecognized option $option (use --help for help)" >&2
155 echo "$option: non-option arguments not supported (use --help for help)" >&2
162 if $installed && $built; then
163 echo "sorry, conflicting options (use --help for help)" >&2
165 elif $installed || $built; then
167 elif test -e vswitchd/ovs-vswitchd; then
170 elif (ovs-vswitchd --version) >/dev/null 2>&1; then
173 echo "can't find an OVS build or install (use --help for help)" >&2
178 if test ! -e "$builddir"/vswitchd/ovs-vswitchd; then
179 echo "$builddir does not appear to be an OVS build directory" >&2
182 builddir=`cd $builddir && pwd`
188 if test ! -e "$srcdir"/WHY-OVS.md; then
189 srcdir=`cd $builddir/.. && pwd`
193 *) srcdir=`pwd`/$srcdir ;;
195 schema=$srcdir/vswitchd/vswitch.ovsschema
196 if test ! -e "$schema"; then
197 echo >&2 'source directory not found, please use --srcdir'
201 ovnsb_schema=$srcdir/ovn/ovn-sb.ovsschema
202 if test ! -e "$ovnsb_schema"; then
203 echo >&2 'source directory not found, please use --srcdir'
206 ovnnb_schema=$srcdir/ovn/ovn-nb.ovsschema
207 if test ! -e "$ovnnb_schema"; then
208 echo >&2 'source directory not found, please use --srcdir'
213 # Put built tools early in $PATH.
214 if test ! -e $builddir/vswitchd/ovs-vswitchd; then
215 echo >&2 'build not found, please change set $builddir or change directory'
218 PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH
220 PATH=$builddir/ovn:$builddir/ovn/controller:$builddir/ovn/northd:$PATH
227 /usr/local/share/openvswitch/vswitch.ovsschema \
228 /usr/share/openvswitch/vswitch.ovsschema \
230 if test -r $schema; then
236 *) schema=`pwd`/$schema ;;
238 if test ! -r "$schema"; then
239 echo "can't find vswitch.ovsschema, please specify --schema" >&2
243 echo "running with ovn is only supported from the build dir." >&2
251 sandbox=`cd sandbox && pwd`
253 # Set up environment for OVS programs to sandbox themselves.
254 OVS_RUNDIR=$sandbox; export OVS_RUNDIR
255 OVS_LOGDIR=$sandbox; export OVS_LOGDIR
256 OVS_DBDIR=$sandbox; export OVS_DBDIR
257 OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
260 # Easy access to OVS manpages.
261 (cd "$builddir" && ${MAKE} install-man mandir="$sandbox"/man)
262 MANPATH=$sandbox/man:; export MANPATH
266 trap 'kill `cat "$sandbox"/*.pid`' 0 1 2 3 13 14 15
268 # Create database and start ovsdb-server.
269 touch "$sandbox"/.conf.db.~lock~
270 run ovsdb-tool create conf.db "$schema"
273 touch "$sandbox"/.ovnsb.db.~lock~
274 touch "$sandbox"/.ovnnb.db.~lock~
275 run ovsdb-tool create ovnsb.db "$ovnsb_schema"
276 run ovsdb-tool create ovnnb.db "$ovnnb_schema"
277 ovsdb_server_args="ovnsb.db ovnnb.db conf.db"
279 rungdb $gdb_ovsdb ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
280 --remote=punix:"$sandbox"/db.sock $ovsdb_server_args
282 # Initialize database.
283 run ovs-vsctl --no-wait -- init
285 # Start ovs-vswitchd.
286 rungdb $gdb_vswitchd ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
287 --enable-dummy=override -vvconn -vnetdev_dummy
290 ovs-vsctl set open . external-ids:system-id=56b18105-5706-46ef-80c4-ff20979ab068
291 ovs-vsctl set open . external-ids:ovn-remote=unix:"$sandbox"/db.sock
292 ovs-vsctl set open . external-ids:ovn-encap-type=geneve
293 ovs-vsctl set open . external-ids:ovn-encap-ip=127.0.0.1
294 ovs-vsctl add-br br-int \
295 -- set bridge br-int fail-mode=secure other-config:disable-in-band=true
297 rungdb $gdb_ovn_northd ovn-northd --detach --no-chdir --pidfile -vconsole:off --log-file
298 rungdb $gdb_ovn_controller ovn-controller --detach --no-chdir --pidfile -vconsole:off --log-file
305 ----------------------------------------------------------------------
306 You are running in a dummy Open vSwitch environment. You can use
307 ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the
310 Log files, pidfiles, and the configuration database are in the
311 "sandbox" subdirectory.
313 Exit the shell to kill the running daemons.
316 status=0; $SHELL || status=$?
319 ----------------------------------------------------------------------