Since OVS 3.3.0 ovsdb-server accepts databases and remotes configuration
via JSON text file.  This patch adds support for such option.

Signed-off-by: Vladislav Odintsov <odiv...@gmail.com>
---
 NEWS              |  1 +
 utilities/ovn-ctl | 39 +++++++++++++++++++++++++++++++++++----
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/NEWS b/NEWS
index 9adf6a31c..39ea88d78 100644
--- a/NEWS
+++ b/NEWS
@@ -16,6 +16,7 @@ Post v24.03.0
   - Remove "ovn-set-local-ip" config option from vswitchd
     external-ids, the option is no longer needed as it became effectively
     "true" for all scenarios.
+  - Add support for ovsdb-server `--config-file` option in ovn-ctl.
 
 OVN v24.03.0 - 01 Mar 2024
 --------------------------
diff --git a/utilities/ovn-ctl b/utilities/ovn-ctl
index dae5e22f4..fd1ae1256 100755
--- a/utilities/ovn-ctl
+++ b/utilities/ovn-ctl
@@ -169,6 +169,7 @@ start_ovsdb__() {
     local sync_from_port
     local file
     local schema
+    local config_file
     local logfile
     local log
     local sock
@@ -199,6 +200,7 @@ start_ovsdb__() {
     eval sync_from_port=\$DB_${DB}_SYNC_FROM_PORT
     eval file=\$DB_${DB}_FILE
     eval schema=\$DB_${DB}_SCHEMA
+    eval config_file=\$DB_${DB}_CONFIG_FILE
     eval logfile=\$OVN_${DB}_LOGFILE
     eval log=\$OVN_${DB}_LOG
     eval sock=\$DB_${DB}_SOCK
@@ -281,7 +283,12 @@ $cluster_remote_port
 
     set ovsdb-server
     set "$@" $log --log-file=$logfile
-    set "$@" --remote=punix:$sock --pidfile=$db_pid_file
+    set "$@" --pidfile=$db_pid_file
+    if test X"$config_file" == X; then
+        set "$@" --remote=punix:$sock
+    else
+        set "$@" --config-file=$config_file
+    fi
     set "$@" --unixctl=$ctrl_sock
 
     [ "$OVN_USER" != "" ] && set "$@" --user "$OVN_USER"
@@ -297,7 +304,7 @@ $cluster_remote_port
         set exec "$@"
     fi
 
-    if test X"$use_remote_in_db" != Xno; then
+    if test X"$use_remote_in_db" != Xno && test X"$config_file" == X; then
         set "$@" --remote=db:$schema_name,$table_name,connections
     fi
 
@@ -343,6 +350,11 @@ $cluster_remote_port
 
     local run_ovsdb_in_bg="no"
     local process_id=
+
+    if test X$config_file = X; then
+        set "$@" "$file"
+    fi
+
     if test X$detach = Xno && test $mode = cluster && test -z 
"$cluster_remote_addr" ; then
         # When detach is no (for run_nb_ovsdb/run_sb_ovsdb commands)
         # we want to run ovsdb-server in background rather than running it in
@@ -351,10 +363,10 @@ $cluster_remote_port
         # Note: We run only the ovsdb-server in backgroud which created the
         # cluster (i.e cluster_remote_addr is not set.).
         run_ovsdb_in_bg="yes"
-        "$@" $file &
+        "$@" &
         process_id=$!
     else
-        start_wrapped_daemon "$wrapper" ovsdb-$db "" "$@" "$file"
+        start_wrapped_daemon "$wrapper" ovsdb-$db "" "$@"
     fi
 
     # Initialize the database if it's NOT joining a cluster.
@@ -776,6 +788,7 @@ set_defaults () {
     DB_NB_SYNC_FROM_PORT=6641
     DB_NB_PROBE_INTERVAL_TO_ACTIVE=60000
     DB_NB_ELECTION_TIMER=
+    DB_NB_CONFIG_FILE=
 
     DB_SB_SOCK=$OVN_RUNDIR/ovnsb_db.sock
     DB_SB_PIDFILE=$OVN_RUNDIR/ovnsb_db.pid
@@ -788,6 +801,7 @@ set_defaults () {
     DB_SB_SYNC_FROM_PORT=6642
     DB_SB_PROBE_INTERVAL_TO_ACTIVE=60000
     DB_SB_ELECTION_TIMER=
+    DB_SB_CONFIG_FILE=
 
     DB_IC_NB_SOCK=$OVN_RUNDIR/ovn_ic_nb_db.sock
     DB_IC_NB_PIDFILE=$OVN_RUNDIR/ovn_ic_nb_db.pid
@@ -798,6 +812,7 @@ set_defaults () {
     DB_IC_NB_SYNC_FROM_PROTO=tcp
     DB_IC_NB_SYNC_FROM_ADDR=
     DB_IC_NB_SYNC_FROM_PORT=6645
+    DB_IC_NB_CONFIG_FILE=
 
     DB_IC_SB_SOCK=$OVN_RUNDIR/ovn_ic_sb_db.sock
     DB_IC_SB_PIDFILE=$OVN_RUNDIR/ovn_ic_sb_db.pid
@@ -808,6 +823,7 @@ set_defaults () {
     DB_IC_SB_SYNC_FROM_PROTO=tcp
     DB_IC_SB_SYNC_FROM_ADDR=
     DB_IC_SB_SYNC_FROM_PORT=6646
+    DB_IC_SB_CONFIG_FILE=
 
     DB_NB_SCHEMA=$ovn_datadir/ovn-nb.ovsschema
     DB_SB_SCHEMA=$ovn_datadir/ovn-sb.ovsschema
@@ -951,6 +967,7 @@ set_defaults () {
     OVN_SB_RELAY_DB_SSL_CERT=""
     OVN_SB_RELAY_DB_SSL_CA_CERT=""
     DB_SB_RELAY_USE_REMOTE_IN_DB="yes"
+    DB_SB_RELAY_CONFIG_FILE=
 
     DB_CLUSTER_SCHEMA_UPGRADE="yes"
 }
@@ -1124,12 +1141,16 @@ File location options:
   --db-nb-create-insecure-remote=yes|no Create ptcp OVN Northbound remote 
(default: $DB_NB_CREATE_INSECURE_REMOTE)
   --db-nb-probe-interval-to-active Active probe interval from standby to 
active ovsdb-server remote (default: $DB_NB_PROBE_INTERVAL_TO_ACTIVE)
   --db-nb-election-timer=MS OVN Northbound RAFT db election timer to use on db 
creation (in milliseconds)
+  --db-nb-config-file=FILE OVN_Northbound ovsdb-server configuration file
+                           Mutually exclusive with 
--db-nb-use-remote-in-db=yes.
   --db-sb-sync-from-addr=ADDR OVN Southbound active db tcp address (default: 
$DB_SB_SYNC_FROM_ADDR)
   --db-sb-sync-from-port=ADDR OVN Southbound active db tcp port (default: 
$DB_SB_SYNC_FROM_PORT)
   --db-sb-sync-from-proto=PROTO OVN Southbound active db transport (default: 
$DB_SB_SYNC_FROM_PROTO)
   --db-sb-create-insecure-remote=yes|no Create ptcp OVN Southbound remote 
(default: $DB_SB_CREATE_INSECURE_REMOTE)
   --db-sb-probe-interval-to-active Active probe interval from standby to 
active ovsdb-server remote (default: $DB_SB_PROBE_INTERVAL_TO_ACTIVE)
   --db-sb-election-timer=MS OVN Southbound RAFT db election timer to use on db 
creation (in milliseconds)
+  --db-sb-config-file=FILE OVN_Southbound ovsdb-server configuration file.
+                           Mutually exclusive with 
--db-sb-use-remote-in-db=yes.
   --db-nb-cluster-local-addr=ADDR OVN_Northbound cluster local address \
   (default: $DB_NB_CLUSTER_LOCAL_ADDR)
   --db-nb-cluster-local-port=PORT OVN_Northbound cluster local tcp port \
@@ -1157,7 +1178,9 @@ File location options:
   --ovn-northd-nb-db=NB DB address(es) (default: $OVN_NORTHD_NB_DB)
   --ovn-northd-sb-db=SB DB address(es) (default: $OVN_NORTHD_SB_DB)
   --db-nb-use-remote-in-db=yes|no OVN_Northbound db listen on target 
connection table (default: $DB_NB_USE_REMOTE_IN_DB)
+                                  'yes' is mutually exclusive with 
--db-nb-config-file.
   --db-sb-use-remote-in-db=yes|no OVN_Southbound db listen on target 
connection table (default: $DB_SB_USE_REMOTE_IN_DB)
+                                  'yes' is mutually exclusive with 
--db-sb-config-file.
   --db-ic-nb-sock=SOCKET  OVN_IC_Northbound db socket (default: $DB_IC_NB_SOCK)
   --db-ic-sb-sock=SOCKET  OVN_IC_Southbound db socket (default: $DB_IC_SB_SOCK)
   --db-ic-nb-file=FILE    OVN_IC_Northbound db file (default: $DB_IC_NB_FILE)
@@ -1209,10 +1232,18 @@ File location options:
   --ovn-ic-nb-db=IC NB DB address(es) (default: $OVN_IC_NB_DB)
   --ovn-ic-sb-db=IC SB DB address(es) (default: $OVN_IC_SB_DB)
   --db-ic-nb-use-remote-in-db=yes|no OVN_IC_Northbound db listen on target 
connection table (default: $DB_IC_NB_USE_REMOTE_IN_DB)
+                                     'yes' is mutually exclusive with 
--db-ic-nb-config-file.
   --db-ic-sb-use-remote-in-db=yes|no OVN_IC_Southbound db listen on target 
connection table (default: $DB_IC_SB_USE_REMOTE_IN_DB)
+                                     'yes' is mutually exclusive with 
--db-ic-sb-config-file.
+  --db-ic-nb-config-file=FILE OVN_IC_Northbound ovsdb-server configuration file
+                              Mutually exclusive with 
--db-ic-nb-use-remote-in-db=yes.
+  --db-ic-sb-config-file=FILE OVN_IC_Southbound ovsdb-server configuration file
+                              Mutually exclusive with 
--db-ic-sb-use-remote-in-db=yes.
   --db-sb-relay-sock=SOCKET  OVN_IC_Northbound db socket (default: 
$DB_SB_RELAY_SOCK)
   --db-sb-relay-pidfile=FILE OVN_Southbound relay db pidfile (default: 
$DB_SB_RELAY_CTRL_PIDFILE)
   --db-sb-relay-ctrl-sock=SOCKET OVN_Southbound relay db control socket 
(default: $DB_SB_RELAY_CTRL_SOCK)
+  --db-sb-relay-config-file=FILE OVN_IC_Northbound ovsdb-server configuration 
file
+                                 Mutually exclusive with 
--db-ic-nb-use-remote-in-db=yes.
   --ovn-sb-relay-db-ssl-key=KEY OVN_Southbound DB relay SSL private key file
   --ovn-sb-relay-db-ssl-cert=CERT OVN_Southbound DB relay SSL certificate file
   --ovn-sb-relay-db-ssl-ca-cert=CERT OVN OVN_Southbound DB relay SSL CA 
certificate file
-- 
2.44.0

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to