From 93e682c558f954fa35a00d7cc6a6903e8ed59178 Mon Sep 17 00:00:00 2001 From: Doug Wiegley Date: Tue, 3 Mar 2015 10:31:30 -0700 Subject: [PATCH] Revert change to remove lbaas from devstack; it breaks grenade. Change-Id: Ie2adaeb7f27d6d646ca2e6e575fb430b9b74b276 --- functions-common | 19 -------- lib/neutron | 53 ++++++++++++++++------- lib/neutron_plugins/services/loadbalancer | 49 +++++++++++++++++++++ stackrc | 3 -- 4 files changed, 86 insertions(+), 38 deletions(-) create mode 100644 lib/neutron_plugins/services/loadbalancer diff --git a/functions-common b/functions-common index 267dfe8622..df69cbad16 100644 --- a/functions-common +++ b/functions-common @@ -1601,25 +1601,6 @@ function enable_plugin { GITBRANCH[$name]=$branch } -# is_plugin_enabled -# -# Has a particular plugin been enabled? -function is_plugin_enabled { - local plugins=$@ - local plugin - local enabled=1 - - # short circuit if nothing to do - if [[ -z ${DEVSTACK_PLUGINS} ]]; then - return $enabled - fi - - for plugin in ${plugins}; do - [[ ,${DEVSTACK_PLUGINS}, =~ ,${plugin}, ]] && enabled=0 - done - return $enabled -} - # fetch_plugins # # clones all plugins diff --git a/lib/neutron b/lib/neutron index a0f9c362f2..a7aabc5909 100755 --- a/lib/neutron +++ b/lib/neutron @@ -100,8 +100,10 @@ IPV6_ROUTER_GW_IP=${IPV6_ROUTER_GW_IP:-fe80:cafe:cafe::1} # Set up default directories GITDIR["python-neutronclient"]=$DEST/python-neutronclient + NEUTRON_DIR=$DEST/neutron NEUTRON_FWAAS_DIR=$DEST/neutron-fwaas +NEUTRON_LBAAS_DIR=$DEST/neutron-lbaas NEUTRON_VPNAAS_DIR=$DEST/neutron-vpnaas NEUTRON_AUTH_CACHE_DIR=${NEUTRON_AUTH_CACHE_DIR:-/var/cache/neutron} @@ -114,7 +116,6 @@ fi NEUTRON_CONF_DIR=/etc/neutron NEUTRON_CONF=$NEUTRON_CONF_DIR/neutron.conf - export NEUTRON_TEST_CONFIG_FILE=${NEUTRON_TEST_CONFIG_FILE:-"$NEUTRON_CONF_DIR/debug.ini"} # Agent binaries. Note, binary paths for other agents are set in per-service @@ -325,6 +326,12 @@ ENABLE_METADATA_NETWORK=${ENABLE_METADATA_NETWORK:-False} # Please refer to ``lib/neutron_plugins/README.md`` for details. source $TOP_DIR/lib/neutron_plugins/$Q_PLUGIN +# Agent loadbalancer service plugin functions +# ------------------------------------------- + +# Hardcoding for 1 service plugin for now +source $TOP_DIR/lib/neutron_plugins/services/loadbalancer + # Agent metering service plugin functions # ------------------------------------------- @@ -351,17 +358,6 @@ fi TEMPEST_SERVICES+=,neutron -# For backward compatibility, if q-lbaas service is enabled, make sure to load the -# neutron-lbaas plugin. This hook should be removed in a future release, perhaps -# as early as Liberty. - -if is_service_enabled q-lbaas; then - if ! is_plugin_enabled neutron-lbaas; then - DEPRECATED_TEXT+="External plugin neutron-lbaas has been automatically activated, please add the appropriate enable_plugin to your local.conf. This will be removed in the Liberty cycle." - enable_plugin "neutron-lbaas" ${NEUTRON_LBAAS_REPO} ${NEUTRON_LBAAS_BRANCH} - fi -fi - # Save trace setting XTRACE=$(set +o | grep xtrace) set +o xtrace @@ -429,7 +425,9 @@ function configure_neutron { iniset_rpc_backend neutron $NEUTRON_CONF DEFAULT # goes before q-svc to init Q_SERVICE_PLUGIN_CLASSES - + if is_service_enabled q-lbaas; then + _configure_neutron_lbaas + fi if is_service_enabled q-metering; then _configure_neutron_metering fi @@ -607,8 +605,7 @@ function init_neutron { recreate_database $Q_DB_NAME # Run Neutron db migrations $NEUTRON_BIN_DIR/neutron-db-manage --config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE upgrade head - - for svc in fwaas vpnaas; do + for svc in fwaas lbaas vpnaas; do if [ "$svc" = "vpnaas" ]; then q_svc="q-vpn" else @@ -628,6 +625,10 @@ function install_neutron { git_clone $NEUTRON_FWAAS_REPO $NEUTRON_FWAAS_DIR $NEUTRON_FWAAS_BRANCH setup_develop $NEUTRON_FWAAS_DIR fi + if is_service_enabled q-lbaas; then + git_clone $NEUTRON_LBAAS_REPO $NEUTRON_LBAAS_DIR $NEUTRON_LBAAS_BRANCH + setup_develop $NEUTRON_LBAAS_DIR + fi if is_service_enabled q-vpn; then git_clone $NEUTRON_VPNAAS_REPO $NEUTRON_VPNAAS_DIR $NEUTRON_VPNAAS_BRANCH setup_develop $NEUTRON_VPNAAS_DIR @@ -671,6 +672,10 @@ function install_neutron_agent_packages { if is_service_enabled q-agt q-dhcp q-l3; then neutron_plugin_install_agent_packages fi + + if is_service_enabled q-lbaas; then + neutron_agent_lbaas_install_agent_packages + fi } # Start running processes, including screen @@ -730,6 +735,10 @@ function start_neutron_agents { run_process q-domua "python $AGENT_BINARY --config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE.domU" fi + if is_service_enabled q-lbaas; then + run_process q-lbaas "python $AGENT_LBAAS_BINARY --config-file $NEUTRON_CONF --config-file=$LBAAS_AGENT_CONF_FILENAME" + fi + if is_service_enabled q-metering; then run_process q-metering "python $AGENT_METERING_BINARY --config-file $NEUTRON_CONF --config-file $METERING_AGENT_CONF_FILENAME" fi @@ -753,6 +762,9 @@ function stop_neutron { stop_process q-agt + if is_service_enabled q-lbaas; then + neutron_lbaas_stop + fi if is_service_enabled q-fwaas; then neutron_fwaas_stop fi @@ -780,11 +792,12 @@ function cleanup_neutron { fi # delete all namespaces created by neutron - for ns in $(sudo ip netns list | grep -o -E '(qdhcp|qrouter|fip|snat)-[0-9a-f-]*'); do + for ns in $(sudo ip netns list | grep -o -E '(qdhcp|qrouter|qlbaas|fip|snat)-[0-9a-f-]*'); do sudo ip netns delete ${ns} done } + function _create_neutron_conf_dir { # Put config files in ``NEUTRON_CONF_DIR`` for everyone to find if [[ ! -d $NEUTRON_CONF_DIR ]]; then @@ -954,6 +967,14 @@ function _configure_neutron_ceilometer_notifications { iniset $NEUTRON_CONF DEFAULT notification_driver messaging } +function _configure_neutron_lbaas { + if [ -f $NEUTRON_LBAAS_DIR/etc/neutron_lbaas.conf ]; then + cp $NEUTRON_LBAAS_DIR/etc/neutron_lbaas.conf $NEUTRON_CONF_DIR + fi + neutron_agent_lbaas_configure_common + neutron_agent_lbaas_configure_agent +} + function _configure_neutron_metering { neutron_agent_metering_configure_common neutron_agent_metering_configure_agent diff --git a/lib/neutron_plugins/services/loadbalancer b/lib/neutron_plugins/services/loadbalancer new file mode 100644 index 0000000000..f465cc94b4 --- /dev/null +++ b/lib/neutron_plugins/services/loadbalancer @@ -0,0 +1,49 @@ +# Neutron loadbalancer plugin +# --------------------------- + +# Save trace setting +LB_XTRACE=$(set +o | grep xtrace) +set +o xtrace + + +AGENT_LBAAS_BINARY="$NEUTRON_BIN_DIR/neutron-lbaas-agent" +LBAAS_PLUGIN=neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPlugin + +function neutron_agent_lbaas_install_agent_packages { + if is_ubuntu || is_fedora || is_suse; then + install_package haproxy + fi +} + +function neutron_agent_lbaas_configure_common { + _neutron_service_plugin_class_add $LBAAS_PLUGIN + _neutron_deploy_rootwrap_filters $NEUTRON_LBAAS_DIR +} + +function neutron_agent_lbaas_configure_agent { + LBAAS_AGENT_CONF_PATH=/etc/neutron/services/loadbalancer/haproxy + mkdir -p $LBAAS_AGENT_CONF_PATH + + LBAAS_AGENT_CONF_FILENAME="$LBAAS_AGENT_CONF_PATH/lbaas_agent.ini" + + cp $NEUTRON_LBAAS_DIR/etc/lbaas_agent.ini $LBAAS_AGENT_CONF_FILENAME + + # ovs_use_veth needs to be set before the plugin configuration + # occurs to allow plugins to override the setting. + iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT ovs_use_veth $Q_OVS_USE_VETH + + neutron_plugin_setup_interface_driver $LBAAS_AGENT_CONF_FILENAME + + if is_fedora; then + iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT user_group "nobody" + iniset $LBAAS_AGENT_CONF_FILENAME haproxy user_group "nobody" + fi +} + +function neutron_lbaas_stop { + pids=$(ps aux | awk '/haproxy/ { print $2 }') + [ ! -z "$pids" ] && sudo kill $pids +} + +# Restore xtrace +$LB_XTRACE diff --git a/stackrc b/stackrc index 103be6de66..cb044b8fed 100644 --- a/stackrc +++ b/stackrc @@ -198,9 +198,6 @@ NEUTRON_FWAAS_REPO=${NEUTRON_FWAAS_REPO:-${GIT_BASE}/openstack/neutron-fwaas.git NEUTRON_FWAAS_BRANCH=${NEUTRON_FWAAS_BRANCH:-master} # neutron lbaas service -# The neutron-lbaas specific entries are deprecated and replaced by the neutron-lbaas -# devstack plugin and should be removed in a future release, possibly as soon as Liberty. - NEUTRON_LBAAS_REPO=${NEUTRON_LBAAS_REPO:-${GIT_BASE}/openstack/neutron-lbaas.git} NEUTRON_LBAAS_BRANCH=${NEUTRON_LBAAS_BRANCH:-master}