On Wed, Feb 10, 2016 at 8:56 AM, Michael <[email protected]> wrote: > Added a check on pid in start_northd > Added ssl params option cloning the conf db of normal openvswitch db (in this > way ssl should follow exactly the same behaviour as in normal ovsdb) > Added configuration options for logging > > Signed-off-by: Michael Arnaldi <[email protected]>
This looks fine to me now, thanks Michael! This is going to make the default deployments of OVN match what the recommended deployment pattern should be (separate ovsdb-server's for NB and SB DBs). Acked-By: Kyle Mestery <[email protected]> > --- > NEWS | 2 + > ovn/northd/ovn-northd.c | 33 ++++++--- > ovn/utilities/ovn-ctl | 172 ++++++++++++++++++++++++++++++++++++++-------- > ovn/utilities/ovn-nbctl.c | 2 +- > ovn/utilities/ovn-sbctl.c | 3 +- > 5 files changed, 171 insertions(+), 41 deletions(-) > > diff --git a/NEWS b/NEWS > index 3e33871..aa53e8c 100644 > --- a/NEWS > +++ b/NEWS > @@ -1,5 +1,7 @@ > Post-v2.5.0 > --------------------- > + - ovn: > + * Separation of NB & SB db > - ovsdb-server: > * New "monitor2" and "update2" extensions to RFC 7047. > - OpenFlow: > diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c > index e6271cf..051c75a 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. */ > > @@ -167,7 +168,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); > @@ -1786,15 +1787,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 > @@ -1856,11 +1868,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); > @@ -1976,7 +1988,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 b171934..4563279 100755 > --- a/ovn/utilities/ovn-ctl > +++ b/ovn/utilities/ovn-ctl > @@ -30,37 +30,102 @@ 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 > + kill -9 $(cat $DB_NB_PID) 1>/dev/null 2>/dev/null > + rm -f $DB_NB_PID 1>/dev/null 2>/dev/null > + fi > + > + if pidfile_is_running $DB_SB_PID; then > + kill -9 $(cat $DB_SB_PID) 1>/dev/null 2>/dev/null > + rm -f $DB_SB_PID 1>/dev/null 2>/dev/null > + 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 > + > + if [ ! -f $DB_NB_CONF_FILE ]; then > + cp -f $DB_CONF_FILE $DB_NB_CONF_FILE > + fi > + > + set ovsdb-server > + > + set "$@" --detach $OVN_OVSDB_LOG --remote=punix:$DB_NB_SOCK > --remote=ptcp:$DB_NB_PORT --pidfile=$DB_NB_PID > + set "$@" --private-key=db:Open_vSwitch,SSL,private_key > + set "$@" --certificate=db:Open_vSwitch,SSL,certificate > + set "$@" --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert > + > + $@ $DB_NB_FILE $DB_NB_CONF_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 > + > + if [ ! -f $DB_SB_CONF_FILE ]; then > + cp -f $DB_CONF_FILE $DB_SB_CONF_FILE > + fi > + > + set ovsdb-server > + > + set "$@" --detach $OVN_OVSDB_LOG --remote=punix:$DB_SB_SOCK > --remote=ptcp:$DB_SB_PORT --pidfile=$DB_SB_PID > + set "$@" --private-key=db:Open_vSwitch,SSL,private_key > + set "$@" --certificate=db:Open_vSwitch,SSL,certificate > + set "$@" --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert > + > + $@ $DB_SB_FILE $DB_SB_CONF_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 Northbound 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 () { > set ovn-controller "unix:$DB_SOCK" > - set "$@" -vconsole:emer -vsyslog:err -vfile:info > + set "$@" $OVN_CONTROLLER_LOG > OVS_RUNDIR=${OVN_RUNDIR} start_daemon "$OVN_CONTROLLER_PRIORITY" > "$OVN_CONTROLLER_WRAPPER" "$@" > } > > @@ -70,6 +135,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 +159,38 @@ 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 > + > + DB_NB_CONF_FILE=$OVN_DIR/ovnnb_conf.db > + DB_SB_CONF_FILE=$OVN_DIR/ovnsb_conf.db > + > OVN_NORTHD_PRIORITY=-10 > OVN_NORTHD_WRAPPER= > OVN_CONTROLLER_PRIORITY=-10 > @@ -108,6 +198,10 @@ set_defaults () { > > OVS_RUNDIR=${OVS_RUNDIR:-${rundir}} > OVN_RUNDIR=${OVN_RUNDIR:-${OVS_RUNDIR}} > + > + OVN_CONTROLLER_LOG="-vconsole:emer -vsyslog:err -vfile:info" > + OVN_NORHD_LOG="-vconsole:emer -vsyslog:err -vfile:info" > + OVN_OVSDB_LOG="-vconsole:off" > } > > set_option () { > @@ -134,18 +228,25 @@ 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: > - --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-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 > + --ovn-manage-ovsdb=no manage ovsdb separately from > start_northd and stop_northd > + --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-ovsdb-log=STRING ovn ovsdb-server processes logging > params (default: $OVN_OVSDB_LOG) > + -h, --help display this help message > > File location options: > --db-sock=SOCKET JSON-RPC socket name (default: $DB_SOCK) > @@ -153,12 +254,13 @@ 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) > > 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) > @@ -210,24 +312,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 324a0a4..9ce65b7 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 b428a35..8bbfdfd 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; > -- > 2.4.9 (Apple Git-60) > > > Michael Arnaldi - Chief Technology Officer (CTO) > > MyMoneyEx Limited > c/o Buzzacott LLP > 130 Wood Street > London EC2V 6DL - United Kingdom > > Mail: [email protected] > Web: https://www.mymoneyex.com > -------------------------------------------------------------------------------------------- > This message is private and confidential. > If you have received this message in error, please notify us and remove it > from your system. _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
