summaryrefslogtreecommitdiff
path: root/ovn
diff options
context:
space:
mode:
authorRYAN D. MOATS <rmoats@us.ibm.com>2016-03-21 15:40:01 -0500
committerRussell Bryant <russell@ovn.org>2016-03-23 20:07:43 -0400
commit60bdd01148e472d4ae25cf6daae8d121779d1e03 (patch)
tree6d216f5b9cccb94f93f3a4b1672dee0e141be95f /ovn
parent9a4457eabcc3f78fec4c9e48dc5b60b23479ee59 (diff)
downloadopenvswitch-60bdd01148e472d4ae25cf6daae8d121779d1e03.tar.gz
Separating OVN NB and SB database processes
OVN NB & SB DB's should be run in separate ovsdb-server processes and should run with ovn-ctl start_northd / stop_northd. This patch includes changes to unit tests, tutorial and debian scripts to remain self-consistent. Signed-off-by: RYAN D. MOATS <rmoats@us.ibm.com> Signed-off-by: Michael Arnaldi <arnaldimichael@gmail.com> Co-authored-by: Michael Arnaldi <arnaldimichael@gmail.com> Signed-off-by: Russell Bryant <russell@ovn.org>
Diffstat (limited to 'ovn')
-rw-r--r--ovn/northd/ovn-northd.c33
-rwxr-xr-xovn/utilities/ovn-ctl156
-rw-r--r--ovn/utilities/ovn-nbctl.c2
-rw-r--r--ovn/utilities/ovn-sbctl.c3
4 files changed, 157 insertions, 37 deletions
diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
index 598bbe3b6..6db5ed602 100644
--- a/ovn/northd/ovn-northd.c
+++ b/ovn/northd/ovn-northd.c
@@ -52,7 +52,8 @@ struct northd_context {
static const char *ovnnb_db;
static const char *ovnsb_db;
-static const char *default_db(void);
+static const char *default_nb_db(void);
+static const char *default_sb_db(void);
/* Pipeline stages. */
@@ -172,7 +173,7 @@ Options:\n\
-h, --help display this help message\n\
-o, --options list available options\n\
-V, --version display version information\n\
-", program_name, program_name, default_db(), default_db());
+", program_name, program_name, default_nb_db(), default_sb_db());
daemon_usage();
vlog_usage();
stream_usage("database", true, true, false);
@@ -2238,15 +2239,26 @@ ovnsb_db_run(struct northd_context *ctx)
}
-static char *default_db_;
+static char *default_nb_db_;
static const char *
-default_db(void)
+default_nb_db(void)
{
- if (!default_db_) {
- default_db_ = xasprintf("unix:%s/db.sock", ovs_rundir());
+ if (!default_nb_db_) {
+ default_nb_db_ = xasprintf("unix:%s/ovnnb_db.sock", ovs_rundir());
}
- return default_db_;
+ return default_nb_db_;
+}
+
+static char *default_sb_db_;
+
+static const char *
+default_sb_db(void)
+{
+ if (!default_sb_db_) {
+ default_sb_db_ = xasprintf("unix:%s/ovnsb_db.sock", ovs_rundir());
+ }
+ return default_sb_db_;
}
static void
@@ -2308,11 +2320,11 @@ parse_options(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
}
if (!ovnsb_db) {
- ovnsb_db = default_db();
+ ovnsb_db = default_sb_db();
}
if (!ovnnb_db) {
- ovnnb_db = default_db();
+ ovnnb_db = default_nb_db();
}
free(short_options);
@@ -2428,7 +2440,8 @@ main(int argc, char *argv[])
ovsdb_idl_loop_destroy(&ovnsb_idl_loop);
service_stop();
- free(default_db_);
+ free(default_nb_db_);
+ free(default_sb_db_);
exit(res);
}
diff --git a/ovn/utilities/ovn-ctl b/ovn/utilities/ovn-ctl
index b17193486..4348d6e97 100755
--- a/ovn/utilities/ovn-ctl
+++ b/ovn/utilities/ovn-ctl
@@ -30,32 +30,79 @@ done
## start ##
## ----- ##
-upgrade_ovn_dbs () {
- ovn_dbs=$(ovs-appctl -t ovsdb-server ovsdb-server/list-dbs 2>/dev/null)
- for db in $ovn_dbs; do
- case $db in
- OVN*)
- action "Removing $db from ovsdb-server" \
- ovs-appctl -t ovsdb-server ovsdb-server/remove-db $db
- ;;
- esac
- done
- upgrade_db "$DB_NB_FILE" "$DB_NB_SCHEMA"
- upgrade_db "$DB_SB_FILE" "$DB_SB_SCHEMA"
- for db in $DB_NB_FILE $DB_SB_FILE; do
- action "Adding $db to ovsdb-server" \
- ovs-appctl -t ovsdb-server ovsdb-server/add-db $db || exit 1
- done
+pidfile_is_running () {
+ pidfile=$1
+ test -e "$pidfile" && pid=`cat "$pidfile"` && pid_exists "$pid"
+} >/dev/null 2>&1
+
+stop_ovsdb () {
+ if pidfile_is_running $DB_NB_PID; then
+ ovs-appctl -t ovnnb_db exit
+ fi
+
+ if pidfile_is_running $DB_SB_PID; then
+ ovs-appctl -t ovnsb_db exit
+ fi
+}
+
+start_ovsdb () {
+ # Check and eventually start ovsdb-server for Northbound DB
+ if ! pidfile_is_running $DB_NB_PID; then
+ upgrade_db "$DB_NB_FILE" "$DB_NB_SCHEMA" 1>/dev/null 2>/dev/null
+
+ set ovsdb-server
+
+ set "$@" --detach $OVN_NB_LOG --log-file=$OVN_NB_LOGFILE --remote=punix:$DB_NB_SOCK --remote=ptcp:$DB_NB_PORT --pidfile=$DB_NB_PID --unixctl=ovnnb_db
+
+ $@ $DB_NB_FILE
+ fi
+
+ # Check and eventually start ovsdb-server for Southbound DB
+ if ! pidfile_is_running $DB_SB_PID; then
+ upgrade_db "$DB_SB_FILE" "$DB_SB_SCHEMA" 1>/dev/null 2>/dev/null
+
+ set ovsdb-server
+
+ set "$@" --detach $OVN_SB_LOG --log-file=$OVN_SB_LOGFILE --remote=punix:$DB_SB_SOCK --remote=ptcp:$DB_SB_PORT --pidfile=$DB_SB_PID --unixctl=ovnsb_db
+ $@ $DB_SB_FILE
+ fi
+}
+
+status_ovsdb () {
+ if ! pidfile_is_running $DB_NB_PID; then
+ log_success_msg "OVN Northbound DB is not running"
+ else
+ log_success_msg "OVN Northbound DB is running"
+ fi
+
+ if ! pidfile_is_running $DB_SB_PID; then
+ log_success_msg "OVN Southbound DB is not running"
+ else
+ log_success_msg "OVN Southbound DB is running"
+ fi
}
start_northd () {
- # We expect ovn-northd to be co-located with ovsdb-server handling both the
- # OVN_Northbound and OVN_Southbound dbs.
- upgrade_ovn_dbs
+ if test X"$OVN_MANAGE_OVSDB" = Xyes; then
+ start_ovsdb
+ fi
- set ovn-northd
- set "$@" -vconsole:emer -vsyslog:err -vfile:info
- OVS_RUNDIR=${OVN_RUNDIR} start_daemon "$OVN_NORTHD_PRIORITY" "$OVN_NORTHD_WRAPPER" "$@"
+ if ! pidfile_is_running $DB_NB_PID; then
+ log_failure_msg "OVN Northbound DB is not running"
+ exit
+ fi
+ if ! pidfile_is_running $DB_SB_PID; then
+ log_failure_msg "OVN Southbound DB is not running"
+ exit
+ fi
+
+ if daemon_is_running ovn-northd; then
+ log_success_msg "ovn-northd is already running"
+ else
+ set ovn-northd
+ set "$@" $OVN_NORTHD_LOG --ovnnb-db=unix:$DB_NB_SOCK --ovnsb-db=unix:$DB_SB_SOCK
+ OVS_RUNDIR=${OVN_RUNDIR} start_daemon "$OVN_NORTHD_PRIORITY" "$OVN_NORTHD_WRAPPER" "$@"
+ fi
}
start_controller () {
@@ -70,6 +117,10 @@ start_controller () {
stop_northd () {
OVS_RUNDIR=${OVN_RUNDIR} stop_daemon ovn-northd
+
+ if test X"$OVN_MANAGE_OVSDB" = Xyes; then
+ stop_ovsdb
+ fi
}
stop_controller () {
@@ -90,17 +141,35 @@ restart_controller () {
start_controller
}
+restart_ovsdb () {
+ stop_ovsdb
+ start_ovsdb
+}
+
## ---- ##
## main ##
## ---- ##
set_defaults () {
- DB_SOCK=$rundir/db.sock
- DB_NB_FILE=$dbdir/ovnnb.db
- DB_SB_FILE=$dbdir/ovnsb.db
+ OVN_DIR=$rundir
+ OVN_MANAGE_OVSDB=yes
+
+ DB_NB_SOCK=$OVN_DIR/ovnnb_db.sock
+ DB_NB_PID=$OVN_DIR/ovnnb_db.pid
+ DB_NB_FILE=$OVN_DIR/ovnnb_db.db
+ DB_NB_PORT=6641
+
+ DB_SB_SOCK=$OVN_DIR/ovnsb_db.sock
+ DB_SB_PID=$OVN_DIR/ovnsb_db.pid
+ DB_SB_FILE=$OVN_DIR/ovnsb_db.db
+ DB_SB_PORT=6642
+
DB_NB_SCHEMA=$datadir/ovn-nb.ovsschema
DB_SB_SCHEMA=$datadir/ovn-sb.ovsschema
+ DB_SOCK=$rundir/db.sock
+ DB_CONF_FILE=$dbdir/conf.db
+
OVN_NORTHD_PRIORITY=-10
OVN_NORTHD_WRAPPER=
OVN_CONTROLLER_PRIORITY=-10
@@ -108,6 +177,13 @@ set_defaults () {
OVS_RUNDIR=${OVS_RUNDIR:-${rundir}}
OVN_RUNDIR=${OVN_RUNDIR:-${OVS_RUNDIR}}
+
+ OVN_CONTROLLER_LOG="-vconsole:emer -vsyslog:err -vfile:info"
+ OVN_NORTHD_LOG="-vconsole:emer -vsyslog:err -vfile:info"
+ OVN_NB_LOG="-vconsole:off"
+ OVN_SB_LOG="-vconsole:off"
+ OVN_NB_LOGFILE="$OVS_LOGDIR/ovsdb-server-nb.log"
+ OVN_SB_LOGFILE="$OVS_LOGDIR/ovsdb-server-sb.log"
}
set_option () {
@@ -134,10 +210,13 @@ startup scripts. System administrators should not normally invoke it directly.
Commands:
start_northd start ovn-northd
+ start_ovsdb start ovn related ovsdb-server processes
start_controller start ovn-controller
stop_northd stop ovn-northd
+ stop_ovsdb stop ovn related ovsdb-server processes
stop_controller stop ovn-controller
restart_northd restart ovn-northd
+ restart_ovsdb restart ovn related ovsdb-server processes
restart_controller restart ovn-controller
Options:
@@ -145,6 +224,16 @@ Options:
--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
+ --ovn-manage-ovsdb=yes|no Whether or not the OVN databases should be
+ automatically started and stopped along
+ with ovn-northd. The default is "yes". If
+ this is set to "no", the "start_ovsdb" and
+ "stop_ovsdb" commands must be used to start
+ and stop the OVN databases.
+ --ovn-controller-log=STRING ovn controller process logging params (default: $OVN_CONTROLLER_LOG)
+ --ovn-northd-log=STRING ovn northd process logging params (default: $OVN_NORTHD_LOG)
+ --ovn-nb-log=STRING ovn NB ovsdb-server processes logging params (default: $OVN_NB_LOG)
+ --ovn-sb-log=STRING ovn SB ovsdb-server processes logging params (default: $OVN_SB_LOG)
-h, --help display this help message
File location options:
@@ -153,6 +242,11 @@ File location options:
--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)
+ --db-nb-port=PORT OVN Northbound db ptcp port (default: $DB_NB_PORT)
+ --db-sb-port=PORT OVN Southbound db ptcp port (default: $DB_SB_PORT)
+ --ovn-dir=FILE OVN Databases directory (default: $OVN_DIR)
+ --ovn-nb-logfile=FILE OVN Northbound log file (default: $OVS_LOGDIR/ovsdb-server-nb.log)
+ --ovn-sb-logfile=FILE OVN Southbound log file (default: $OVS_LOGDIR/ovsdb-server-sb.log)
Default directories with "configure" option and environment variable override:
logs: /usr/local/var/log/openvswitch (--with-logdir, OVS_LOGDIR)
@@ -210,24 +304,36 @@ case $command in
start_northd)
start_northd
;;
+ start_ovsdb)
+ start_ovsdb
+ ;;
start_controller)
start_controller
;;
stop_northd)
stop_northd
;;
+ stop_ovsdb)
+ stop_ovsdb
+ ;;
stop_controller)
stop_controller
;;
restart_northd)
restart_northd
;;
+ restart_ovsdb)
+ restart_ovsdb
+ ;;
restart_controller)
restart_controller
;;
status_northd)
daemon_status ovn-northd || exit 1
;;
+ status_ovsdb)
+ status_ovsdb
+ ;;
status_controller)
daemon_status ovn-controller || exit 1
;;
diff --git a/ovn/utilities/ovn-nbctl.c b/ovn/utilities/ovn-nbctl.c
index c0b698186..bdad36872 100644
--- a/ovn/utilities/ovn-nbctl.c
+++ b/ovn/utilities/ovn-nbctl.c
@@ -142,7 +142,7 @@ nbctl_default_db(void)
if (!def) {
def = getenv("OVN_NB_DB");
if (!def) {
- def = ctl_default_db();
+ def = xasprintf("unix:%s/ovnnb_db.sock", ovs_rundir());
}
}
return def;
diff --git a/ovn/utilities/ovn-sbctl.c b/ovn/utilities/ovn-sbctl.c
index d08095281..a2577295a 100644
--- a/ovn/utilities/ovn-sbctl.c
+++ b/ovn/utilities/ovn-sbctl.c
@@ -28,6 +28,7 @@
#include <unistd.h>
#include "db-ctl-base.h"
+#include "dirs.h"
#include "command-line.h"
#include "compiler.h"
@@ -154,7 +155,7 @@ sbctl_default_db(void)
if (!def) {
def = getenv("OVN_SB_DB");
if (!def) {
- def = ctl_default_db();
+ def = xasprintf("unix:%s/ovnsb_db.sock", ovs_rundir());
}
}
return def;