Neutron: Define a utility function to add neutron service class

When enabling neutron service (i.e. enable_service q-xxx), related code
unconditionally adds a necessary plugin class to Q_SERVICE_PLUGIN_CLASSES.
Which may cause duplication in Q_SERVICE_PLUGIN_CLASSES when
Q_SERVICE_PLUGIN_CLASSES is explicitly specified in localrc.
As a result, neutron server fails to start.

This patch introduces a utility function to add service class,
and check duplication.

Closes-Bug: #1261291
Change-Id: Id2880c7647babfccc3e8d9fc60dd93c4b3997ed9
This commit is contained in:
Isaku Yamahata 2013-12-16 15:52:03 +09:00
parent ba3c636404
commit 9e136b4ade
6 changed files with 15 additions and 25 deletions

View File

@ -744,6 +744,16 @@ function _configure_neutron_service() {
# Utility Functions # Utility Functions
#------------------ #------------------
# _neutron_service_plugin_class_add() - add service plugin class
function _neutron_service_plugin_class_add() {
local service_plugin_class=$1
if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then
Q_SERVICE_PLUGIN_CLASSES=$service_plugin_class
elif [[ ! ,${Q_SERVICE_PLUGIN_CLASSES}, =~ ,${service_plugin_class}, ]]; then
Q_SERVICE_PLUGIN_CLASSES="$Q_SERVICE_PLUGIN_CLASSES,$service_plugin_class"
fi
}
# _neutron_setup_rootwrap() - configure Neutron's rootwrap # _neutron_setup_rootwrap() - configure Neutron's rootwrap
function _neutron_setup_rootwrap() { function _neutron_setup_rootwrap() {
if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then

View File

@ -54,11 +54,7 @@ function neutron_plugin_configure_common() {
Q_PLUGIN_CLASS="neutron.plugins.ml2.plugin.Ml2Plugin" Q_PLUGIN_CLASS="neutron.plugins.ml2.plugin.Ml2Plugin"
# The ML2 plugin delegates L3 routing/NAT functionality to # The ML2 plugin delegates L3 routing/NAT functionality to
# the L3 service plugin which must therefore be specified. # the L3 service plugin which must therefore be specified.
if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then _neutron_service_plugin_class_add $ML2_L3_PLUGIN
Q_SERVICE_PLUGIN_CLASSES=$ML2_L3_PLUGIN
else
Q_SERVICE_PLUGIN_CLASSES="$Q_SERVICE_PLUGIN_CLASSES,$ML2_L3_PLUGIN"
fi
} }
function neutron_plugin_configure_service() { function neutron_plugin_configure_service() {

View File

@ -8,11 +8,7 @@ set +o xtrace
FWAAS_PLUGIN=neutron.services.firewall.fwaas_plugin.FirewallPlugin FWAAS_PLUGIN=neutron.services.firewall.fwaas_plugin.FirewallPlugin
function neutron_fwaas_configure_common() { function neutron_fwaas_configure_common() {
if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then _neutron_service_plugin_class_add $FWAAS_PLUGIN
Q_SERVICE_PLUGIN_CLASSES=$FWAAS_PLUGIN
else
Q_SERVICE_PLUGIN_CLASSES="$Q_SERVICE_PLUGIN_CLASSES,$FWAAS_PLUGIN"
fi
} }
function neutron_fwaas_configure_driver() { function neutron_fwaas_configure_driver() {

View File

@ -19,11 +19,7 @@ function neutron_agent_lbaas_install_agent_packages() {
} }
function neutron_agent_lbaas_configure_common() { function neutron_agent_lbaas_configure_common() {
if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then _neutron_service_plugin_class_add $LBAAS_PLUGIN
Q_SERVICE_PLUGIN_CLASSES=$LBAAS_PLUGIN
else
Q_SERVICE_PLUGIN_CLASSES="$Q_SERVICE_PLUGIN_CLASSES,$LBAAS_PLUGIN"
fi
} }
function neutron_agent_lbaas_configure_agent() { function neutron_agent_lbaas_configure_agent() {

View File

@ -10,11 +10,7 @@ AGENT_METERING_BINARY="$NEUTRON_BIN_DIR/neutron-metering-agent"
METERING_PLUGIN="neutron.services.metering.metering_plugin.MeteringPlugin" METERING_PLUGIN="neutron.services.metering.metering_plugin.MeteringPlugin"
function neutron_agent_metering_configure_common() { function neutron_agent_metering_configure_common() {
if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then _neutron_service_plugin_class_add $METERING_PLUGIN
Q_SERVICE_PLUGIN_CLASSES=$METERING_PLUGIN
else
Q_SERVICE_PLUGIN_CLASSES="$Q_SERVICE_PLUGIN_CLASSES,$METERING_PLUGIN"
fi
} }
function neutron_agent_metering_configure_agent() { function neutron_agent_metering_configure_agent() {

View File

@ -15,11 +15,7 @@ function neutron_vpn_install_agent_packages() {
} }
function neutron_vpn_configure_common() { function neutron_vpn_configure_common() {
if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then _neutron_service_plugin_class_add $VPN_PLUGIN
Q_SERVICE_PLUGIN_CLASSES=$VPN_PLUGIN
else
Q_SERVICE_PLUGIN_CLASSES="$Q_SERVICE_PLUGIN_CLASSES,$VPN_PLUGIN"
fi
} }
# Restore xtrace # Restore xtrace