On Tue, Feb 9, 2016 at 5:24 AM, Michael <michael.arna...@mymoneyex.com> wrote: > Options for running ovsdb separately is done and also described in the help > file. > > NEWS file is updated. > > I just have to rise a few points: > > - the way thing are running with start/stop daemon from ova-lib require > the daemon to have a pidfile named daemon.pid and this is impossible > to use in our case because we will end up having conflict between > nb and sb db because they both will appear ad ovsdb-server. > I think that needs to be refactored to accept a pid file name so we can have it generate separate pidfiles for the different DBs.
> - the way SSL is handles in ovs-ctl make usage of > db:Open_vSwitch,SSL,private_key and I suppose we don’t have this vars > using ovsdb-server without cons.db (please correct me if I’m wrong) > I think fundamentally we need the starting of the NB and SB DBs in ovn-ctl to be done by calling start_ovsdb() from ovs-ctl. See comments below. > Said that I will wait feedback to proceed. > > Signed-off-by: Michael Arnaldi <m...@mymoneyex.com> > --- > NEWS | 2 + > ovn/northd/ovn-northd.c | 33 ++++++++---- > ovn/utilities/ovn-ctl | 125 > ++++++++++++++++++++++++++++++++++++---------- > ovn/utilities/ovn-nbctl.c | 2 +- > ovn/utilities/ovn-sbctl.c | 3 +- > 5 files changed, 127 insertions(+), 38 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..eb7302e 100755 > --- a/ovn/utilities/ovn-ctl > +++ b/ovn/utilities/ovn-ctl > @@ -30,31 +30,66 @@ 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 () { > + if ! pidfile_is_running $DB_NB_PID; then > + upgrade_db "$DB_NB_FILE" "$DB_NB_SCHEMA" 1>/dev/null 2>/dev/null > + ovsdb-server --detach -vconsole:off --remote=punix:$DB_NB_SOCK > --remote=ptcp:$DB_NB_PORT --pidfile=$DB_NB_PID $DB_NB_FILE > + fi > + > + if ! pidfile_is_running $DB_SB_PID; then > + upgrade_db "$DB_SB_FILE" "$DB_SB_SCHEMA" 1>/dev/null 2>/dev/null > + ovsdb-server --detach -vconsole:off --remote=punix:$DB_SB_SOCK > --remote=ptcp:$DB_SB_PORT --pidfile=$DB_SB_PID $DB_SB_FILE > + fi > +} > + I think it makes sense to move stop_ovsdb and start_ovsdb out of ovs-ctl.in and into ovs-lib so they can be consumed by ovs-ctl rather than re-writing them above and losing some functionality which exists in the current versions. > +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 > + > + 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 > > set ovn-northd > - set "$@" -vconsole:emer -vsyslog:err -vfile:info > + set "$@" -vconsole:emer -vsyslog:err -vfile:info > --ovnnb-db=unix:$DB_NB_SOCK --ovnsb-db=unix:$DB_SB_SOCK > OVS_RUNDIR=${OVN_RUNDIR} start_daemon "$OVN_NORTHD_PRIORITY" > "$OVN_NORTHD_WRAPPER" "$@" > } > > @@ -70,6 +105,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 +129,34 @@ 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 > + > OVN_NORTHD_PRIORITY=-10 > OVN_NORTHD_WRAPPER= > OVN_CONTROLLER_PRIORITY=-10 > @@ -134,18 +190,22 @@ 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 > + -h, --help display this help message > > File location options: > --db-sock=SOCKET JSON-RPC socket name (default: $DB_SOCK) > @@ -153,12 +213,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 +271,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: michael.arna...@mymoneyex.com > 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 > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev