[OVN] Change DevStack to use the local OVN driver

This patch is changing DevStack to deploy with the local OVN driver
(instead of the networking-ovn old repo).

A few tweaks were needed in the code in order to get it to work, more
precisely:

* OVN metadata configuration was pointing to some module variables that
  didn't exist.
* OVN metadata configuration generation was missing

Below is the following configuration needed in the local.conf to deploy
OVN:

[[local|localrc]]

enable_plugin neutron https://opendev.org/openstack/neutron

Q_AGENT=ovn
Q_ML2_PLUGIN_MECHANISM_DRIVERS=ovn,logger
Q_ML2_PLUGIN_TYPE_DRIVERS=local,flat,vlan,geneve
Q_ML2_TENANT_NETWORK_TYPE="geneve"

enable_service ovn-northd
enable_service ovn-controller
enable_service neutron-ovn-metadata-agent

disable_service n-net
enable_service q-svc

disable_service q-agt
disable_service q-l3
disable_service q-dhcp
disable_service q-meta

Change-Id: I0b899a33943550a53822d1d057cdee525cbbc6ec
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
This commit is contained in:
Lucas Alvares Gomes 2020-01-07 13:27:44 +00:00
parent 8ad6bde44b
commit 48ab58b46e
3 changed files with 29 additions and 38 deletions

View File

@ -26,12 +26,6 @@ source $TOP_DIR/lib/neutron_plugins/openvswitch_agent
# Defaults # Defaults
# -------- # --------
# TODO(lucasagomes): Remove this after the networking-ovn code is
# merged into Neutron
# networking-ovn neutron driver
NETWORKING_OVN_REPO=${NETWORKING_OVN_REPO:-${GIT_BASE}/openstack/networking-ovn.git}
NETWORKING_OVN_BRANCH=${NETWORKING_OVN_BRANCH:-$TARGET_BRANCH}
# Set variables for building OVN from source # Set variables for building OVN from source
OVN_REPO=${OVN_REPO:-https://github.com/ovn-org/ovn.git} OVN_REPO=${OVN_REPO:-https://github.com/ovn-org/ovn.git}
OVN_REPO_NAME=$(basename ${OVN_REPO} | cut -f1 -d'.') OVN_REPO_NAME=$(basename ${OVN_REPO} | cut -f1 -d'.')
@ -84,7 +78,7 @@ OVN_GENEVE_OVERHEAD=${OVN_GENEVE_OVERHEAD:-38}
# The log level of the OVN databases (north and south) # The log level of the OVN databases (north and south)
OVN_DBS_LOG_LEVEL=${OVN_DBS_LOG_LEVEL:-info} OVN_DBS_LOG_LEVEL=${OVN_DBS_LOG_LEVEL:-info}
OVN_META_CONF=$NEUTRON_CONF_DIR/networking_ovn_metadata_agent.ini OVN_META_CONF=$NEUTRON_CONF_DIR/neutron_ovn_metadata_agent.ini
OVS_PREFIX=/usr/local OVS_PREFIX=/usr/local
OVS_SBINDIR=$OVS_PREFIX/sbin OVS_SBINDIR=$OVS_PREFIX/sbin
@ -99,11 +93,8 @@ OVN_SHAREDIR=$OVS_PREFIX/share/ovn
OVN_SCRIPTDIR=$OVN_SHAREDIR/scripts OVN_SCRIPTDIR=$OVN_SHAREDIR/scripts
OVN_RUNDIR=$OVS_PREFIX/var/run/ovn OVN_RUNDIR=$OVS_PREFIX/var/run/ovn
# TODO(lucasagomes): These paths will change once the networking-ovn NEUTRON_OVN_BIN_DIR=$(get_python_exec_prefix)
# code is merged into Neutron NEUTRON_OVN_METADATA_BINARY="neutron-ovn-metadata-agent"
NETWORKING_OVN_BIN_DIR=$(get_python_exec_prefix)
NETWORKING_OVN_METADATA_BINARY="networking-ovn-metadata-agent"
NETWORKING_OVN_DIR=$DEST/networking-ovn
# Libs from source # Libs from source
@ -125,9 +116,7 @@ Q_ML2_PLUGIN_TYPE_DRIVERS=${Q_ML2_PLUGIN_TYPE_DRIVERS:-local,flat,vlan,geneve}
Q_ML2_TENANT_NETWORK_TYPE=${Q_ML2_TENANT_NETWORK_TYPE:-"geneve"} Q_ML2_TENANT_NETWORK_TYPE=${Q_ML2_TENANT_NETWORK_TYPE:-"geneve"}
Q_ML2_PLUGIN_GENEVE_TYPE_OPTIONS=${Q_ML2_PLUGIN_GENEVE_TYPE_OPTIONS:-"vni_ranges=1:65536"} Q_ML2_PLUGIN_GENEVE_TYPE_OPTIONS=${Q_ML2_PLUGIN_GENEVE_TYPE_OPTIONS:-"vni_ranges=1:65536"}
Q_ML2_PLUGIN_EXT_DRIVERS=${Q_ML2_PLUGIN_EXT_DRIVERS:-port_security,dns} Q_ML2_PLUGIN_EXT_DRIVERS=${Q_ML2_PLUGIN_EXT_DRIVERS:-port_security,dns}
# TODO(lucasagomes): Modify this after the networking-ovn code is ML2_L3_PLUGIN="ovn-router,trunk"
# merged into Neutron
ML2_L3_PLUGIN="networking_ovn.l3.l3_ovn.OVNL3RouterPlugin,trunk"
# Utility Functions # Utility Functions
@ -473,11 +462,6 @@ function install_ovn {
setup_dev_lib "ovsdbapp" setup_dev_lib "ovsdbapp"
fi fi
# TODO(lucasagomes): Remove this after the networking-ovn code is
# merged into Neutron
git_clone $NETWORKING_OVN_REPO $NETWORKING_OVN_DIR $NETWORKING_OVN_BRANCH
setup_develop $NETWORKING_OVN_DIR
# Install ovs python module from ovs source. # Install ovs python module from ovs source.
if [[ "$OVN_INSTALL_OVS_PYTHON_MODULE" == "True" ]]; then if [[ "$OVN_INSTALL_OVS_PYTHON_MODULE" == "True" ]]; then
sudo pip uninstall -y ovs sudo pip uninstall -y ovs
@ -506,7 +490,7 @@ function configure_ovn_plugin {
populate_ml2_config /$Q_PLUGIN_CONF_FILE securitygroup enable_security_group="$Q_USE_SECGROUP" populate_ml2_config /$Q_PLUGIN_CONF_FILE securitygroup enable_security_group="$Q_USE_SECGROUP"
inicomment /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver inicomment /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver
if is_service_enabled networking-ovn-metadata-agent; then if is_service_enabled neutron-ovn-metadata-agent; then
populate_ml2_config /$Q_PLUGIN_CONF_FILE ovn ovn_metadata_enabled=True populate_ml2_config /$Q_PLUGIN_CONF_FILE ovn ovn_metadata_enabled=True
else else
populate_ml2_config /$Q_PLUGIN_CONF_FILE ovn ovn_metadata_enabled=False populate_ml2_config /$Q_PLUGIN_CONF_FILE ovn ovn_metadata_enabled=False
@ -525,7 +509,7 @@ function configure_ovn_plugin {
fi fi
if is_service_enabled n-api-meta ; then if is_service_enabled n-api-meta ; then
if is_service_enabled networking-ovn-metadata-agent ; then if is_service_enabled neutron-ovn-metadata-agent ; then
iniset $NOVA_CONF neutron service_metadata_proxy True iniset $NOVA_CONF neutron service_metadata_proxy True
fi fi
fi fi
@ -544,13 +528,13 @@ function configure_ovn {
fi fi
# Metadata # Metadata
if is_service_enabled networking-ovn-metadata-agent && is_service_enabled ovn-controller; then if is_service_enabled neutron-ovn-metadata-agent && is_service_enabled ovn-controller; then
sudo install -d -o $STACK_USER $NEUTRON_CONF_DIR sudo install -d -o $STACK_USER $NEUTRON_CONF_DIR
mkdir -p $NETWORKING_OVN_DIR/etc/neutron/plugins/ml2 mkdir -p $NEUTRON_DIR/etc/neutron/plugins/ml2
(cd $NETWORKING_OVN_DIR && exec ./tools/generate_config_file_samples.sh) (cd $NEUTRON_DIR && exec ./tools/generate_config_file_samples.sh)
cp $NETWORKING_OVN_DIR/etc/networking_ovn_metadata_agent.ini.sample $OVN_META_CONF cp $NEUTRON_DIR/etc/neutron_ovn_metadata_agent.ini.sample $OVN_META_CONF
configure_root_helper_options $OVN_META_CONF configure_root_helper_options $OVN_META_CONF
iniset $OVN_META_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL iniset $OVN_META_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
@ -661,8 +645,8 @@ function _start_ovn_services {
if is_service_enabled ovn-controller-vtep ; then if is_service_enabled ovn-controller-vtep ; then
_start_process "devstack@ovn-controller-vtep.service" _start_process "devstack@ovn-controller-vtep.service"
fi fi
if is_service_enabled networking-ovn-metadata-agent; then if is_service_enabled neutron-ovn-metadata-agent; then
_start_process "devstack@networking-ovn-metadata-agent.service" _start_process "devstack@neutron-ovn-metadata-agent.service"
fi fi
} }
@ -701,8 +685,8 @@ function start_ovn {
_run_process ovn-controller-vtep "$cmd" "" "$STACK_USER" "root" _run_process ovn-controller-vtep "$cmd" "" "$STACK_USER" "root"
fi fi
if is_service_enabled networking-ovn-metadata-agent; then if is_service_enabled neutron-ovn-metadata-agent; then
run_process networking-ovn-metadata-agent "$NETWORKING_OVN_BIN_DIR/$NETWORKING_OVN_METADATA_BINARY --config-file $OVN_META_CONF" run_process neutron-ovn-metadata-agent "$NEUTRON_OVN_BIN_DIR/$NEUTRON_OVN_METADATA_BINARY --config-file $OVN_META_CONF"
# Format logging # Format logging
setup_logging $OVN_META_CONF setup_logging $OVN_META_CONF
fi fi
@ -735,9 +719,9 @@ function _stop_ovs_dp {
} }
function stop_ovn { function stop_ovn {
if is_service_enabled networking-ovn-metadata-agent; then if is_service_enabled neutron-ovn-metadata-agent; then
sudo pkill -9 -f haproxy || : sudo pkill -9 -f haproxy || :
stop_process networking-ovn-metadata-agent stop_process neutron-ovn-metadata-agent
fi fi
if is_service_enabled ovn-controller-vtep ; then if is_service_enabled ovn-controller-vtep ; then
stop_process ovn-controller-vtep stop_process ovn-controller-vtep

View File

@ -0,0 +1,6 @@
[DEFAULT]
output_file = etc/neutron_ovn_metadata_agent.ini.sample
wrap_width = 79
namespace = neutron.ovn.metadata.agent
namespace = oslo.log

View File

@ -19,19 +19,20 @@ from oslo_config import cfg
from oslo_log import log as logging from oslo_log import log as logging
from neutron.agent.ovn.metadata import agent from neutron.agent.ovn.metadata import agent
from neutron.conf.agent.ovn.metadata import config as meta from neutron.conf.agent.metadata import config as meta
from neutron.conf.agent.ovn.metadata import config as ovn_meta
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
def main(): def main():
meta.register_meta_conf_opts(meta.SHARED_OPTS) ovn_meta.register_meta_conf_opts(meta.SHARED_OPTS)
meta.register_meta_conf_opts(meta.UNIX_DOMAIN_METADATA_PROXY_OPTS) ovn_meta.register_meta_conf_opts(meta.UNIX_DOMAIN_METADATA_PROXY_OPTS)
meta.register_meta_conf_opts(meta.METADATA_PROXY_HANDLER_OPTS) ovn_meta.register_meta_conf_opts(meta.METADATA_PROXY_HANDLER_OPTS)
meta.register_meta_conf_opts(meta.OVS_OPTS, group='ovs') ovn_meta.register_meta_conf_opts(ovn_meta.OVS_OPTS, group='ovs')
config.init(sys.argv[1:]) config.init(sys.argv[1:])
config.setup_logging() config.setup_logging()
meta.setup_privsep() ovn_meta.setup_privsep()
utils.log_opt_values(LOG) utils.log_opt_values(LOG)
agt = agent.MetadataAgent(cfg.CONF) agt = agent.MetadataAgent(cfg.CONF)