Use separate OVS and OVN directories
If stack.sh is run on a system that already has OVN packages installed, it could fail to find its DB sockets. This is because the 'ln -s' will place the symlink inside of /var/run/ovn instead of using a single directory as intended. Change the code in neutron_plugins/ovn_agent to not make the symlink and instead use separate directories for OVS and OVN. Closes-bug: #1980421 Change-Id: Ic28a93bdc3dfe4a6159234baeabd0064db452b07
This commit is contained in:
parent
dc8fc5c169
commit
71c9965547
@ -244,11 +244,12 @@ function _run_process {
|
||||
local cmd="$2"
|
||||
local stop_cmd="$3"
|
||||
local group=$4
|
||||
local user=${5:-$STACK_USER}
|
||||
local user=$5
|
||||
local rundir=${6:-$OVS_RUNDIR}
|
||||
|
||||
local systemd_service="devstack@$service.service"
|
||||
local unit_file="$SYSTEMD_DIR/$systemd_service"
|
||||
local environment="OVN_RUNDIR=$OVS_RUNDIR OVN_DBDIR=$OVN_DATADIR OVN_LOGDIR=$LOGDIR OVS_RUNDIR=$OVS_RUNDIR OVS_DBDIR=$OVS_DATADIR OVS_LOGDIR=$LOGDIR"
|
||||
local environment="OVN_RUNDIR=$OVN_RUNDIR OVN_DBDIR=$OVN_DATADIR OVN_LOGDIR=$LOGDIR OVS_RUNDIR=$OVS_RUNDIR OVS_DBDIR=$OVS_DATADIR OVS_LOGDIR=$LOGDIR"
|
||||
|
||||
echo "Starting $service executed command": $cmd
|
||||
|
||||
@ -264,14 +265,14 @@ function _run_process {
|
||||
|
||||
_start_process $systemd_service
|
||||
|
||||
local testcmd="test -e $OVS_RUNDIR/$service.pid"
|
||||
local testcmd="test -e $rundir/$service.pid"
|
||||
test_with_retry "$testcmd" "$service did not start" $SERVICE_TIMEOUT 1
|
||||
local service_ctl_file
|
||||
service_ctl_file=$(ls $OVS_RUNDIR | grep $service | grep ctl)
|
||||
service_ctl_file=$(ls $rundir | grep $service | grep ctl)
|
||||
if [ -z "$service_ctl_file" ]; then
|
||||
die $LINENO "ctl file for service $service is not present."
|
||||
fi
|
||||
sudo ovs-appctl -t $OVS_RUNDIR/$service_ctl_file vlog/set console:off syslog:info file:info
|
||||
sudo ovs-appctl -t $rundir/$service_ctl_file vlog/set console:off syslog:info file:info
|
||||
}
|
||||
|
||||
function clone_repository {
|
||||
@ -370,10 +371,6 @@ function install_ovn {
|
||||
|
||||
sudo mkdir -p $OVS_RUNDIR
|
||||
sudo chown $(whoami) $OVS_RUNDIR
|
||||
# NOTE(lucasagomes): To keep things simpler, let's reuse the same
|
||||
# RUNDIR for both OVS and OVN. This way we avoid having to specify the
|
||||
# --db option in the ovn-{n,s}bctl commands while playing with DevStack
|
||||
sudo ln -s $OVS_RUNDIR $OVN_RUNDIR
|
||||
|
||||
if [[ "$OVN_BUILD_FROM_SOURCE" == "True" ]]; then
|
||||
# If OVS is already installed, remove it, because we're about to
|
||||
@ -616,12 +613,12 @@ function _start_ovs {
|
||||
dbcmd+=" --remote=db:hardware_vtep,Global,managers $OVS_DATADIR/vtep.db"
|
||||
fi
|
||||
dbcmd+=" $OVS_DATADIR/conf.db"
|
||||
_run_process ovsdb-server "$dbcmd" "" "$STACK_GROUP" "root"
|
||||
_run_process ovsdb-server "$dbcmd" "" "$STACK_GROUP" "root" "$OVS_RUNDIR"
|
||||
|
||||
# Note: ovn-controller will create and configure br-int once it is started.
|
||||
# So, no need to create it now because nothing depends on that bridge here.
|
||||
local ovscmd="$OVS_SBINDIR/ovs-vswitchd --log-file --pidfile --detach"
|
||||
_run_process ovs-vswitchd "$ovscmd" "" "$STACK_GROUP" "root"
|
||||
_run_process ovs-vswitchd "$ovscmd" "" "$STACK_GROUP" "root" "$OVS_RUNDIR"
|
||||
else
|
||||
_start_process "$OVSDB_SERVER_SERVICE"
|
||||
_start_process "$OVS_VSWITCHD_SERVICE"
|
||||
@ -660,7 +657,7 @@ function _start_ovs {
|
||||
|
||||
enable_service ovs-vtep
|
||||
local vtepcmd="$OVS_SCRIPTDIR/ovs-vtep --log-file --pidfile --detach br-v"
|
||||
_run_process ovs-vtep "$vtepcmd" "" "$STACK_GROUP" "root"
|
||||
_run_process ovs-vtep "$vtepcmd" "" "$STACK_GROUP" "root" "$OVS_RUNDIR"
|
||||
|
||||
vtep-ctl set-manager tcp:$HOST_IP:6640
|
||||
fi
|
||||
@ -704,26 +701,26 @@ function start_ovn {
|
||||
local cmd="/bin/bash $SCRIPTDIR/ovn-ctl --no-monitor start_northd"
|
||||
local stop_cmd="/bin/bash $SCRIPTDIR/ovn-ctl stop_northd"
|
||||
|
||||
_run_process ovn-northd "$cmd" "$stop_cmd" "$STACK_GROUP" "root"
|
||||
_run_process ovn-northd "$cmd" "$stop_cmd" "$STACK_GROUP" "root" "$OVN_RUNDIR"
|
||||
else
|
||||
_start_process "$OVN_NORTHD_SERVICE"
|
||||
fi
|
||||
|
||||
# Wait for the service to be ready
|
||||
# Check for socket and db files for both OVN NB and SB
|
||||
wait_for_sock_file $OVS_RUNDIR/ovnnb_db.sock
|
||||
wait_for_sock_file $OVS_RUNDIR/ovnsb_db.sock
|
||||
wait_for_sock_file $OVN_RUNDIR/ovnnb_db.sock
|
||||
wait_for_sock_file $OVN_RUNDIR/ovnsb_db.sock
|
||||
wait_for_db_file $OVN_DATADIR/ovnnb_db.db
|
||||
wait_for_db_file $OVN_DATADIR/ovnsb_db.db
|
||||
|
||||
if is_service_enabled tls-proxy; then
|
||||
sudo ovn-nbctl --db=unix:$OVS_RUNDIR/ovnnb_db.sock set-ssl $INT_CA_DIR/private/$DEVSTACK_CERT_NAME.key $INT_CA_DIR/$DEVSTACK_CERT_NAME.crt $INT_CA_DIR/ca-chain.pem
|
||||
sudo ovn-sbctl --db=unix:$OVS_RUNDIR/ovnsb_db.sock set-ssl $INT_CA_DIR/private/$DEVSTACK_CERT_NAME.key $INT_CA_DIR/$DEVSTACK_CERT_NAME.crt $INT_CA_DIR/ca-chain.pem
|
||||
sudo ovn-nbctl --db=unix:$OVN_RUNDIR/ovnnb_db.sock set-ssl $INT_CA_DIR/private/$DEVSTACK_CERT_NAME.key $INT_CA_DIR/$DEVSTACK_CERT_NAME.crt $INT_CA_DIR/ca-chain.pem
|
||||
sudo ovn-sbctl --db=unix:$OVN_RUNDIR/ovnsb_db.sock set-ssl $INT_CA_DIR/private/$DEVSTACK_CERT_NAME.key $INT_CA_DIR/$DEVSTACK_CERT_NAME.crt $INT_CA_DIR/ca-chain.pem
|
||||
fi
|
||||
sudo ovn-nbctl --db=unix:$OVS_RUNDIR/ovnnb_db.sock set-connection p${OVN_PROTO}:6641:$SERVICE_LISTEN_ADDRESS -- set connection . inactivity_probe=60000
|
||||
sudo ovn-sbctl --db=unix:$OVS_RUNDIR/ovnsb_db.sock set-connection p${OVN_PROTO}:6642:$SERVICE_LISTEN_ADDRESS -- set connection . inactivity_probe=60000
|
||||
sudo ovs-appctl -t $OVS_RUNDIR/ovnnb_db.ctl vlog/set console:off syslog:$OVN_DBS_LOG_LEVEL file:$OVN_DBS_LOG_LEVEL
|
||||
sudo ovs-appctl -t $OVS_RUNDIR/ovnsb_db.ctl vlog/set console:off syslog:$OVN_DBS_LOG_LEVEL file:$OVN_DBS_LOG_LEVEL
|
||||
sudo ovn-nbctl --db=unix:$OVN_RUNDIR/ovnnb_db.sock set-connection p${OVN_PROTO}:6641:$SERVICE_LISTEN_ADDRESS -- set connection . inactivity_probe=60000
|
||||
sudo ovn-sbctl --db=unix:$OVN_RUNDIR/ovnsb_db.sock set-connection p${OVN_PROTO}:6642:$SERVICE_LISTEN_ADDRESS -- set connection . inactivity_probe=60000
|
||||
sudo ovs-appctl -t $OVN_RUNDIR/ovnnb_db.ctl vlog/set console:off syslog:$OVN_DBS_LOG_LEVEL file:$OVN_DBS_LOG_LEVEL
|
||||
sudo ovs-appctl -t $OVN_RUNDIR/ovnsb_db.ctl vlog/set console:off syslog:$OVN_DBS_LOG_LEVEL file:$OVN_DBS_LOG_LEVEL
|
||||
fi
|
||||
|
||||
if is_service_enabled ovn-controller ; then
|
||||
@ -731,7 +728,7 @@ function start_ovn {
|
||||
local cmd="/bin/bash $SCRIPTDIR/ovn-ctl --no-monitor start_controller"
|
||||
local stop_cmd="/bin/bash $SCRIPTDIR/ovn-ctl stop_controller"
|
||||
|
||||
_run_process ovn-controller "$cmd" "$stop_cmd" "$STACK_GROUP" "root"
|
||||
_run_process ovn-controller "$cmd" "$stop_cmd" "$STACK_GROUP" "root" "$OVN_RUNDIR"
|
||||
else
|
||||
_start_process "$OVN_CONTROLLER_SERVICE"
|
||||
fi
|
||||
@ -740,7 +737,7 @@ function start_ovn {
|
||||
if is_service_enabled ovn-controller-vtep ; then
|
||||
if [[ "$OVN_BUILD_FROM_SOURCE" == "True" ]]; then
|
||||
local cmd="$OVS_BINDIR/ovn-controller-vtep --log-file --pidfile --detach --ovnsb-db=$OVN_SB_REMOTE"
|
||||
_run_process ovn-controller-vtep "$cmd" "" "$STACK_GROUP" "root"
|
||||
_run_process ovn-controller-vtep "$cmd" "" "$STACK_GROUP" "root" "$OVN_RUNDIR"
|
||||
else
|
||||
_start_process "$OVN_CONTROLLER_VTEP_SERVICE"
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user