summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac1
-rw-r--r--ovn/automake.mk1
-rw-r--r--ovn/utilities/.gitignore1
-rw-r--r--ovn/utilities/automake.mk9
-rwxr-xr-xovn/utilities/ovn-ctl255
-rw-r--r--ovn/utilities/ovn-ctl.8.xml50
6 files changed, 317 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 666ab8fc8..c19c7c431 100644
--- a/configure.ac
+++ b/configure.ac
@@ -186,6 +186,7 @@ AC_CONFIG_COMMANDS([include/openflow/openflow.h.stamp])
AC_CONFIG_COMMANDS([utilities/bugtool/dummy], [:])
AC_CONFIG_COMMANDS([ovn/dummy], [:])
+AC_CONFIG_COMMANDS([ovn/utilities/dummy], [:])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
diff --git a/ovn/automake.mk b/ovn/automake.mk
index 4be538135..1ebaa55f7 100644
--- a/ovn/automake.mk
+++ b/ovn/automake.mk
@@ -86,3 +86,4 @@ ovn_ovn_nbctl_LDADD = ovn/lib/libovn.la ovsdb/libovsdb.la lib/libopenvswitch.la
include ovn/controller/automake.mk
include ovn/lib/automake.mk
include ovn/northd/automake.mk
+include ovn/utilities/automake.mk
diff --git a/ovn/utilities/.gitignore b/ovn/utilities/.gitignore
new file mode 100644
index 000000000..1ddc63ec8
--- /dev/null
+++ b/ovn/utilities/.gitignore
@@ -0,0 +1 @@
+/ovn-ctl.8
diff --git a/ovn/utilities/automake.mk b/ovn/utilities/automake.mk
new file mode 100644
index 000000000..a55c1adc7
--- /dev/null
+++ b/ovn/utilities/automake.mk
@@ -0,0 +1,9 @@
+scripts_SCRIPTS += \
+ ovn/utilities/ovn-ctl
+
+man_MANS += \
+ ovn/utilities/ovn-ctl.8
+
+EXTRA_DIST += \
+ ovn/utilities/ovn-ctl \
+ ovn/utilities/ovn-ctl.8.xml
diff --git a/ovn/utilities/ovn-ctl b/ovn/utilities/ovn-ctl
new file mode 100755
index 000000000..f4fb7edd2
--- /dev/null
+++ b/ovn/utilities/ovn-ctl
@@ -0,0 +1,255 @@
+#!/bin/sh
+#
+# 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.
+
+case $0 in
+ */*) dir0=`echo "$0" | sed 's,/[^/]*$,,'` ;;
+ *) dir0=./ ;;
+esac
+. "$dir0/ovs-lib" || exit 1
+
+for dir in "$sbindir" "$bindir" /sbin /bin /usr/sbin /usr/bin; do
+ case :$PATH: in
+ *:$dir:*) ;;
+ *) PATH=$PATH:$dir ;;
+ esac
+done
+
+
+## ----- ##
+## start ##
+## ----- ##
+
+create_db () {
+ DB_FILE=$1
+ DB_SCHEMA=$2
+ action "Creating empty database $DB_FILE" ovsdb-tool create "$DB_FILE" "$DB_SCHEMA"
+}
+
+check_ovn_dbs () {
+ if test ! -e "$DB_NB_FILE"; then
+ create_db "$DB_NB_FILE" "$DB_NB_SCHEMA"
+ fi
+
+ if test ! -e "$DB_SB_FILE"; then
+ create_db "$DB_SB_FILE" "$DB_SB_SCHEMA"
+ fi
+
+ running_ovn_dbs=$(ovs-appctl -t ovsdb-server ovsdb-server/list-dbs | grep OVN | wc -l)
+ if [ "$running_ovn_dbs" != "2" ] ; then
+ ovs-appctl -t ovsdb-server ovsdb-server/add-db $DB_NB_FILE
+ ovs-appctl -t ovsdb-server ovsdb-server/add-db $DB_SB_FILE
+ running_ovn_dbs=$(ovs-appctl -t ovsdb-server ovsdb-server/list-dbs | grep OVN | wc -l)
+ if [ "$running_ovn_dbs" != "2" ] ; then
+ echo >&2 "$0: Failed to add OVN dbs to ovsdb-server"
+ exit 1
+ fi
+ fi
+}
+
+start_northd () {
+ # We expect ovn-northd to be co-located with ovsdb-server handling both the
+ # OVN_Northbound and OVN_Southbound dbs.
+ check_ovn_dbs
+
+ set ovn-northd
+ set "$@" -vconsole:emer -vsyslog:err -vfile:info
+ OVS_RUNDIR=${OVN_RUNDIR} start_daemon "$OVN_NORTHD_PRIORITY" "$OVN_NORTHD_WRAPPER" "$@"
+}
+
+start_controller () {
+ set ovn-controller "unix:$DB_SOCK"
+ set "$@" -vconsole:emer -vsyslog:err -vfile:info
+ OVS_RUNDIR=${OVN_RUNDIR} start_daemon "$OVN_CONTROLLER_PRIORITY" "$OVN_CONTROLLER_WRAPPER" "$@"
+}
+
+## ---- ##
+## stop ##
+## ---- ##
+
+stop_northd () {
+ OVS_RUNDIR=${OVN_RUNDIR} stop_daemon ovn-northd
+}
+
+stop_controller () {
+ OVS_RUNDIR=${OVN_RUNDIR} stop_daemon ovn-controller
+}
+
+## ------- ##
+## restart ##
+## ------- ##
+
+restart_northd () {
+ stop_northd
+ start_northd
+}
+
+restart_controller () {
+ stop_controller
+ start_controller
+}
+
+## ---- ##
+## main ##
+## ---- ##
+
+set_defaults () {
+ DB_SOCK=$rundir/db.sock
+ DB_NB_FILE=$dbdir/ovnnb.db
+ DB_SB_FILE=$dbdir/ovnsb.db
+ DB_NB_SCHEMA=$datadir/ovn-nb.ovsschema
+ DB_SB_SCHEMA=$datadir/ovn-sb.ovsschema
+
+ OVN_NORTHD_PRIORITY=-10
+ OVN_NORTHD_WRAPPER=
+ OVN_CONTROLLER_PRIORITY=-10
+ OVN_CONTROLLER_WRAPPER=
+
+ OVS_RUNDIR=${OVS_RUNDIR:-${rundir}}
+ OVN_RUNDIR=${OVN_RUNDIR:-${OVS_RUNDIR}}
+}
+
+set_option () {
+ var=`echo "$option" | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
+ eval set=\${$var+yes}
+ eval old_value=\$$var
+ if test X$set = X || \
+ (test $type = bool && \
+ test X"$old_value" != Xno && test X"$old_value" != Xyes); then
+ echo >&2 "$0: unknown option \"$arg\" (use --help for help)"
+ return
+ fi
+ eval $var=\$value
+}
+
+usage () {
+ set_defaults
+ cat << EOF
+$0: controls Open Virtual Network daemons
+usage: $0 [OPTIONS] COMMAND
+
+This program is intended to be invoked internally by Open Virtual Network
+startup scripts. System administrators should not normally invoke it directly.
+
+Commands:
+ start_northd start ovn-northd
+ start_controller start ovn-controller
+ stop_northd stop ovn-northd
+ stop_controller stop ovn-controller
+ restart_northd restart ovn-northd
+ restart_controller restart ovn-controller
+
+Options:
+ --ovn-northd-priority=NICE set ovn-northd's niceness (default: $OVN_NORTHD_PRIORITY)
+ --ovn-northd-wrapper=WRAPPER run with a wrapper like valgrind for debugging
+ --ovn-controller-priority=NICE set ovn-northd's niceness (default: $OVN_CONTROLLER_PRIORITY)
+ --ovn-controller-wrapper=WRAPPER run with a wrapper like valgrind for debugging
+ -h, --help display this help message
+
+File location options:
+ --db-sock=SOCKET JSON-RPC socket name (default: $DB_SOCK)
+ --db-nb-file=FILE OVN_Northbound db file (default: $DB_NB_FILE)
+ --db-sb-file=FILE OVN_Southbound db file (default: $DB_SB_FILE)
+ --db-nb-schema=FILE OVN_Northbound db file (default: $DB_NB_SCHEMA)
+ --db-sb-schema=FILE OVN_Southbound db file (default: $DB_SB_SCHEMA)
+
+Default directories with "configure" option and environment variable override:
+ logs: /usr/local/var/log/openvswitch (--with-logdir, OVS_LOGDIR)
+ pidfiles and sockets: /usr/local/var/run/openvswitch (--with-rundir, OVS_RUNDIR)
+ ovn-nb.db: /usr/local/etc/openvswitch (--with-dbdir, OVS_DBDIR)
+ ovn-sb.db: /usr/local/etc/openvswitch (--with-dbdir, OVS_DBDIR)
+ system configuration: /usr/local/etc (--sysconfdir, OVS_SYSCONFDIR)
+ data files: /usr/local/share/openvswitch (--pkgdatadir, OVS_PKGDATADIR)
+ user binaries: /usr/local/bin (--bindir, OVS_BINDIR)
+ system binaries: /usr/local/sbin (--sbindir, OVS_SBINDIR)
+EOF
+}
+
+set_defaults
+command=
+for arg
+do
+ case $arg in
+ -h | --help)
+ usage
+ ;;
+ --[a-z]*=*)
+ option=`expr X"$arg" : 'X--\([^=]*\)'`
+ value=`expr X"$arg" : 'X[^=]*=\(.*\)'`
+ type=string
+ set_option
+ ;;
+ --no-[a-z]*)
+ option=`expr X"$arg" : 'X--no-\(.*\)'`
+ value=no
+ type=bool
+ set_option
+ ;;
+ --[a-z]*)
+ option=`expr X"$arg" : 'X--\(.*\)'`
+ value=yes
+ type=bool
+ set_option
+ ;;
+ -*)
+ echo >&2 "$0: unknown option \"$arg\" (use --help for help)"
+ exit 1
+ ;;
+ *)
+ if test X"$command" = X; then
+ command=$arg
+ else
+ echo >&2 "$0: exactly one non-option argument required (use --help for help)"
+ exit 1
+ fi
+ ;;
+ esac
+done
+case $command in
+ start_northd)
+ start_northd
+ ;;
+ start_controller)
+ start_controller
+ ;;
+ stop_northd)
+ stop_northd
+ ;;
+ stop_controller)
+ stop_controller
+ ;;
+ restart_northd)
+ restart_northda
+ ;;
+ restart_controller)
+ restart_controller
+ ;;
+ create_ovn_dbs)
+ create_ovn_dbs
+ ;;
+ help)
+ usage
+ ;;
+ preheat)
+ echo >&2 "$0: preheating ovn to 350 degrees F."
+ exit 1
+ ;;
+ '')
+ echo >&2 "$0: missing command name (use --help for help)"
+ exit 1
+ ;;
+ *)
+ echo >&2 "$0: unknown command \"$command\" (use --help for help)"
+ exit 1
+ ;;
+esac
diff --git a/ovn/utilities/ovn-ctl.8.xml b/ovn/utilities/ovn-ctl.8.xml
new file mode 100644
index 000000000..89ad9345a
--- /dev/null
+++ b/ovn/utilities/ovn-ctl.8.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manpage program="ovn-ctl" section="8" title="ovn-ctl">
+ <h1>Name</h1>
+ <p>ovn-ctl -- Open Virtual Network northbound daemon lifecycle utility</p>
+
+ <h1>Synopsys</h1>
+ <p><code>ovn-ctl</code> [<var>options</var>] <var>command</var></p>
+
+ <h1>Description</h1>
+ <p>This program is intended to be invoked internally by Open Virtual Network
+ startup scripts. System administrators should not normally invoke it directly.</p>
+
+ <h1>Commands</h1>
+
+ <dl>
+ <dt><code>start_northd</code></dt>
+ <dt><code>start_controller</code></dt>
+ <dt><code>stop_northd</code></dt>
+ <dt><code>stop_controller</code></dt>
+ <dt><code>restart_northd</code></dt>
+ <dt><code>restart_controller</code></dt>
+ </dl>
+
+ <h1>Options</h1>
+ <p><code>--ovn-northd-priority=<var>NICE</var></code></p>
+ <p><code>--ovn-northd-wrapper=<var>WRAPPER</var></code></p>
+ <p><code>--ovn-controller-priority=<var>NICE</var></code></p>
+ <p><code>--ovn-controller-wrapper=<var>WRAPPER</var></code></p>
+ <p><code>-h</code> | <code>--help</code></p>
+
+ <h1>File location options</h1>
+ <p><code>--db-sock==<var>SOCKET</var></code></p>
+ <p><code>--db-nb-file==<var>FILE</var></code></p>
+ <p><code>--db-sb-file==<var>FILE</var></code></p>
+ <p><code>--db-nb-schema==<var>FILE</var></code></p>
+ <p><code>--db-sb-schema==<var>FILE</var></code></p>
+
+ <h1>Example Usage</h1>
+ <h2>Run ovn-controller on a host already running OVS</h2>
+ <p><code># ovn-ctl start_controller</code></p>
+
+ <h2>Run ovn-northd on a host already running OVS</h2>
+ <p><code># ovn-ctl start_northd</code></p>
+
+ <h2>All-in-one OVS+OVN for testing</h2>
+ <p><code># ovs-ctl start --system-id="random"</code></p>
+ <p><code># ovn-ctl start_northd</code></p>
+ <p><code># ovn-ctl start_controller</code></p>
+
+</manpage>