Quantum cleanups

* Set base default env vars in lib/quantum
* Rename common dirs to match devstack conventions
  Q_CONF_FILE -> QUANTUM_CONF
  QUANTUM_CLIENT_* -> QUANTUMCLIENT_*

Change-Id: I7a2a92b50ef953195f078ac62cb975f28892c05c
This commit is contained in:
Dean Troyer 2012-12-06 15:52:52 -06:00
parent edcf4c84f8
commit 60e9c0ab22
3 changed files with 89 additions and 74 deletions

View File

@ -1,17 +1,69 @@
# lib/quantum # lib/quantum
# functions - funstions specific to quantum # functions - funstions specific to quantum
# Dependencies:
# ``functions`` file
# ``DEST`` must be defined
# Quantum Networking
# ------------------
# Make sure that quantum is enabled in ``ENABLED_SERVICES``. If you want
# to run Quantum on this host, make sure that q-svc is also in
# ``ENABLED_SERVICES``.
#
# If you're planning to use the Quantum openvswitch plugin, set
# ``Q_PLUGIN`` to "openvswitch" and make sure the q-agt service is enabled
# in ``ENABLED_SERVICES``. If you're planning to use the Quantum
# linuxbridge plugin, set ``Q_PLUGIN`` to "linuxbridge" and make sure the
# q-agt service is enabled in ``ENABLED_SERVICES``.
#
# See "Quantum Network Configuration" below for additional variables
# that must be set in localrc for connectivity across hosts with
# Quantum.
#
# With Quantum networking the NET_MAN variable is ignored.
# Save trace setting # Save trace setting
XTRACE=$(set +o | grep xtrace) XTRACE=$(set +o | grep xtrace)
set +o xtrace set +o xtrace
# Defaults
# --------
# Set up default directories
QUANTUM_DIR=$DEST/quantum QUANTUM_DIR=$DEST/quantum
export QUANTUM_TEST_CONFIG_FILE=${QUANTUM_TEST_CONFIG_FILE:-"/etc/quantum/debug.ini"} QUANTUMCLIENT_DIR=$DEST/python-quantumclient
QUANTUM_AUTH_CACHE_DIR=${QUANTUM_AUTH_CACHE_DIR:-/var/cache/quantum} QUANTUM_AUTH_CACHE_DIR=${QUANTUM_AUTH_CACHE_DIR:-/var/cache/quantum}
QUANTUM_CONF_DIR=/etc/quantum
QUANTUM_CONF=$QUANTUM_CONF_DIR/quantum.conf
export QUANTUM_TEST_CONFIG_FILE=${QUANTUM_TEST_CONFIG_FILE:-"$QUANTUM_CONF_DIR/debug.ini"}
# Default Quantum Plugin
Q_PLUGIN=${Q_PLUGIN:-openvswitch}
# Default Quantum Port
Q_PORT=${Q_PORT:-9696}
# Default Quantum Host
Q_HOST=${Q_HOST:-$HOST_IP}
# Which Quantum API nova should use
# Default admin username
Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-quantum}
# Default auth strategy
Q_AUTH_STRATEGY=${Q_AUTH_STRATEGY:-keystone}
# Use namespace or not
Q_USE_NAMESPACE=${Q_USE_NAMESPACE:-True}
Q_USE_ROOTWRAP=${Q_USE_ROOTWRAP:-True}
# Meta data IP
Q_META_DATA_IP=${Q_META_DATA_IP:-$HOST_IP}
# Use quantum-debug command
Q_USE_DEBUG_COMMAND=${Q_USE_DEBUG_COMMAND:-False}
if is_service_enabled quantum; then if is_service_enabled quantum; then
Q_CONF_FILE=/etc/quantum/quantum.conf Q_RR_CONF_FILE=$QUANTUM_CONF_DIR/rootwrap.conf
Q_RR_CONF_FILE=/etc/quantum/rootwrap.conf
if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then
Q_RR_COMMAND="sudo" Q_RR_COMMAND="sudo"
else else
@ -20,6 +72,10 @@ if is_service_enabled quantum; then
fi fi
fi fi
# Entry Points
# ------------
# configure_quantum_rootwrap() - configure Quantum's rootwrap # configure_quantum_rootwrap() - configure Quantum's rootwrap
function configure_quantum_rootwrap() { function configure_quantum_rootwrap() {
if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then
@ -27,16 +83,16 @@ function configure_quantum_rootwrap() {
fi fi
# Deploy new rootwrap filters files (owned by root). # Deploy new rootwrap filters files (owned by root).
# Wipe any existing rootwrap.d files first # Wipe any existing rootwrap.d files first
Q_CONF_ROOTWRAP_D=/etc/quantum/rootwrap.d Q_CONF_ROOTWRAP_D=$QUANTUM_CONF_DIR/rootwrap.d
if [[ -d $Q_CONF_ROOTWRAP_D ]]; then if [[ -d $Q_CONF_ROOTWRAP_D ]]; then
sudo rm -rf $Q_CONF_ROOTWRAP_D sudo rm -rf $Q_CONF_ROOTWRAP_D
fi fi
# Deploy filters to /etc/quantum/rootwrap.d # Deploy filters to $QUANTUM_CONF_DIR/rootwrap.d
mkdir -p -m 755 $Q_CONF_ROOTWRAP_D mkdir -p -m 755 $Q_CONF_ROOTWRAP_D
cp -pr $QUANTUM_DIR/etc/quantum/rootwrap.d/* $Q_CONF_ROOTWRAP_D/ cp -pr $QUANTUM_DIR/etc/quantum/rootwrap.d/* $Q_CONF_ROOTWRAP_D/
sudo chown -R root:root $Q_CONF_ROOTWRAP_D sudo chown -R root:root $Q_CONF_ROOTWRAP_D
sudo chmod 644 $Q_CONF_ROOTWRAP_D/* sudo chmod 644 $Q_CONF_ROOTWRAP_D/*
# Set up rootwrap.conf, pointing to /etc/quantum/rootwrap.d # Set up rootwrap.conf, pointing to $QUANTUM_CONF_DIR/rootwrap.d
sudo cp -p $QUANTUM_DIR/etc/rootwrap.conf $Q_RR_CONF_FILE sudo cp -p $QUANTUM_DIR/etc/rootwrap.conf $Q_RR_CONF_FILE
sudo sed -e "s:^filters_path=.*$:filters_path=$Q_CONF_ROOTWRAP_D:" -i $Q_RR_CONF_FILE sudo sed -e "s:^filters_path=.*$:filters_path=$Q_CONF_ROOTWRAP_D:" -i $Q_RR_CONF_FILE
sudo chown root:root $Q_RR_CONF_FILE sudo chown root:root $Q_RR_CONF_FILE
@ -52,7 +108,6 @@ function configure_quantum_rootwrap() {
sudo mv $TEMPFILE /etc/sudoers.d/quantum-rootwrap sudo mv $TEMPFILE /etc/sudoers.d/quantum-rootwrap
} }
# Configures keystone integration for quantum service and agents # Configures keystone integration for quantum service and agents
function quantum_setup_keystone() { function quantum_setup_keystone() {
local conf_file=$1 local conf_file=$1

View File

@ -321,26 +321,6 @@ HORIZON_DIR=$DEST/horizon
OPENSTACKCLIENT_DIR=$DEST/python-openstackclient OPENSTACKCLIENT_DIR=$DEST/python-openstackclient
NOVNC_DIR=$DEST/noVNC NOVNC_DIR=$DEST/noVNC
SWIFT3_DIR=$DEST/swift3 SWIFT3_DIR=$DEST/swift3
QUANTUM_CLIENT_DIR=$DEST/python-quantumclient
# Default Quantum Plugin
Q_PLUGIN=${Q_PLUGIN:-openvswitch}
# Default Quantum Port
Q_PORT=${Q_PORT:-9696}
# Default Quantum Host
Q_HOST=${Q_HOST:-$HOST_IP}
# Which Quantum API nova should use
# Default admin username
Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-quantum}
# Default auth strategy
Q_AUTH_STRATEGY=${Q_AUTH_STRATEGY:-keystone}
# Use namespace or not
Q_USE_NAMESPACE=${Q_USE_NAMESPACE:-True}
Q_USE_ROOTWRAP=${Q_USE_ROOTWRAP:-True}
# Meta data IP
Q_META_DATA_IP=${Q_META_DATA_IP:-$HOST_IP}
# Use quantum-debug command
Q_USE_DEBUG_COMMAND=${Q_USE_DEBUG_COMMAND:-False}
RYU_DIR=$DEST/ryu RYU_DIR=$DEST/ryu
# Ryu API Host # Ryu API Host
@ -458,26 +438,6 @@ FLAT_INTERFACE=${FLAT_INTERFACE-$GUEST_INTERFACE_DEFAULT}
## FIXME(ja): should/can we check that FLAT_INTERFACE is sane? ## FIXME(ja): should/can we check that FLAT_INTERFACE is sane?
# Quantum Networking
# ------------------
# Make sure that quantum is enabled in ENABLED_SERVICES. If you want
# to run Quantum on this host, make sure that q-svc is also in
# ENABLED_SERVICES.
#
# If you're planning to use the Quantum openvswitch plugin, set
# Q_PLUGIN to "openvswitch" and make sure the q-agt service is enabled
# in ENABLED_SERVICES. If you're planning to use the Quantum
# linuxbridge plugin, set Q_PLUGIN to "linuxbridge" and make sure the
# q-agt service is enabled in ENABLED_SERVICES.
#
# See "Quantum Network Configuration" below for additional variables
# that must be set in localrc for connectivity across hosts with
# Quantum.
#
# With Quantum networking the NET_MAN variable is ignored.
# Database Configuration # Database Configuration
# ---------------------- # ----------------------
@ -805,7 +765,7 @@ if is_service_enabled horizon; then
install_horizon install_horizon
fi fi
if is_service_enabled quantum; then if is_service_enabled quantum; then
git_clone $QUANTUM_CLIENT_REPO $QUANTUM_CLIENT_DIR $QUANTUM_CLIENT_BRANCH git_clone $QUANTUMCLIENT_REPO $QUANTUMCLIENT_DIR $QUANTUMCLIENT_BRANCH
fi fi
if is_service_enabled quantum; then if is_service_enabled quantum; then
# quantum # quantum
@ -864,7 +824,7 @@ if is_service_enabled horizon; then
configure_horizon configure_horizon
fi fi
if is_service_enabled quantum; then if is_service_enabled quantum; then
setup_develop $QUANTUM_CLIENT_DIR setup_develop $QUANTUMCLIENT_DIR
setup_develop $QUANTUM_DIR setup_develop $QUANTUM_DIR
fi fi
if is_service_enabled heat; then if is_service_enabled heat; then
@ -1119,11 +1079,11 @@ if is_service_enabled quantum; then
# Example: ``OVS_ENABLE_TUNNELING=True`` # Example: ``OVS_ENABLE_TUNNELING=True``
OVS_ENABLE_TUNNELING=${OVS_ENABLE_TUNNELING:-$ENABLE_TENANT_TUNNELS} OVS_ENABLE_TUNNELING=${OVS_ENABLE_TUNNELING:-$ENABLE_TENANT_TUNNELS}
# Put config files in ``/etc/quantum`` for everyone to find # Put config files in ``QUANTUM_CONF_DIR`` for everyone to find
if [[ ! -d /etc/quantum ]]; then if [[ ! -d $QUANTUM_CONF_DIR ]]; then
sudo mkdir -p /etc/quantum sudo mkdir -p $QUANTUM_CONF_DIR
fi fi
sudo chown `whoami` /etc/quantum sudo chown `whoami` $QUANTUM_CONF_DIR
if [[ "$Q_PLUGIN" = "openvswitch" ]]; then if [[ "$Q_PLUGIN" = "openvswitch" ]]; then
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/openvswitch Q_PLUGIN_CONF_PATH=etc/quantum/plugins/openvswitch
@ -1147,7 +1107,7 @@ if is_service_enabled quantum; then
exit 1 exit 1
fi fi
# If needed, move config file from ``$QUANTUM_DIR/etc/quantum`` to ``/etc/quantum`` # If needed, move config file from ``$QUANTUM_DIR/etc/quantum`` to ``QUANTUM_CONF_DIR``
mkdir -p /$Q_PLUGIN_CONF_PATH mkdir -p /$Q_PLUGIN_CONF_PATH
Q_PLUGIN_CONF_FILE=$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME Q_PLUGIN_CONF_FILE=$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME
cp $QUANTUM_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE cp $QUANTUM_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE
@ -1156,14 +1116,14 @@ if is_service_enabled quantum; then
iniset /$Q_PLUGIN_CONF_FILE DATABASE sql_connection $dburl iniset /$Q_PLUGIN_CONF_FILE DATABASE sql_connection $dburl
unset dburl unset dburl
cp $QUANTUM_DIR/etc/quantum.conf $Q_CONF_FILE cp $QUANTUM_DIR/etc/quantum.conf $QUANTUM_CONF
configure_quantum_rootwrap configure_quantum_rootwrap
fi fi
# Quantum service (for controller node) # Quantum service (for controller node)
if is_service_enabled q-svc; then if is_service_enabled q-svc; then
Q_API_PASTE_FILE=/etc/quantum/api-paste.ini Q_API_PASTE_FILE=$QUANTUM_CONF_DIR/api-paste.ini
Q_POLICY_FILE=/etc/quantum/policy.json Q_POLICY_FILE=$QUANTUM_CONF_DIR/policy.json
cp $QUANTUM_DIR/etc/api-paste.ini $Q_API_PASTE_FILE cp $QUANTUM_DIR/etc/api-paste.ini $Q_API_PASTE_FILE
cp $QUANTUM_DIR/etc/policy.json $Q_POLICY_FILE cp $QUANTUM_DIR/etc/policy.json $Q_POLICY_FILE
@ -1176,9 +1136,9 @@ if is_service_enabled q-svc; then
fi fi
# Update either configuration file with plugin # Update either configuration file with plugin
iniset $Q_CONF_FILE DEFAULT core_plugin $Q_PLUGIN_CLASS iniset $QUANTUM_CONF DEFAULT core_plugin $Q_PLUGIN_CLASS
iniset $Q_CONF_FILE DEFAULT auth_strategy $Q_AUTH_STRATEGY iniset $QUANTUM_CONF DEFAULT auth_strategy $Q_AUTH_STRATEGY
quantum_setup_keystone $Q_API_PASTE_FILE filter:authtoken quantum_setup_keystone $Q_API_PASTE_FILE filter:authtoken
# Configure plugin # Configure plugin
@ -1295,7 +1255,7 @@ fi
if is_service_enabled q-dhcp; then if is_service_enabled q-dhcp; then
AGENT_DHCP_BINARY="$QUANTUM_DIR/bin/quantum-dhcp-agent" AGENT_DHCP_BINARY="$QUANTUM_DIR/bin/quantum-dhcp-agent"
Q_DHCP_CONF_FILE=/etc/quantum/dhcp_agent.ini Q_DHCP_CONF_FILE=$QUANTUM_CONF_DIR/dhcp_agent.ini
cp $QUANTUM_DIR/etc/dhcp_agent.ini $Q_DHCP_CONF_FILE cp $QUANTUM_DIR/etc/dhcp_agent.ini $Q_DHCP_CONF_FILE
@ -1325,7 +1285,7 @@ fi
if is_service_enabled q-l3; then if is_service_enabled q-l3; then
AGENT_L3_BINARY="$QUANTUM_DIR/bin/quantum-l3-agent" AGENT_L3_BINARY="$QUANTUM_DIR/bin/quantum-l3-agent"
PUBLIC_BRIDGE=${PUBLIC_BRIDGE:-br-ex} PUBLIC_BRIDGE=${PUBLIC_BRIDGE:-br-ex}
Q_L3_CONF_FILE=/etc/quantum/l3_agent.ini Q_L3_CONF_FILE=$QUANTUM_CONF_DIR/l3_agent.ini
cp $QUANTUM_DIR/etc/l3_agent.ini $Q_L3_CONF_FILE cp $QUANTUM_DIR/etc/l3_agent.ini $Q_L3_CONF_FILE
@ -1361,7 +1321,7 @@ fi
#Quantum Metadata #Quantum Metadata
if is_service_enabled q-meta; then if is_service_enabled q-meta; then
AGENT_META_BINARY="$QUANTUM_DIR/bin/quantum-metadata-agent" AGENT_META_BINARY="$QUANTUM_DIR/bin/quantum-metadata-agent"
Q_META_CONF_FILE=/etc/quantum/metadata_agent.ini Q_META_CONF_FILE=$QUANTUM_CONF_DIR/metadata_agent.ini
cp $QUANTUM_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE cp $QUANTUM_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE
@ -1381,14 +1341,14 @@ fi
# Quantum RPC support - must be updated prior to starting any of the services # Quantum RPC support - must be updated prior to starting any of the services
if is_service_enabled quantum; then if is_service_enabled quantum; then
iniset $Q_CONF_FILE DEFAULT control_exchange quantum iniset $QUANTUM_CONF DEFAULT control_exchange quantum
if is_service_enabled qpid ; then if is_service_enabled qpid ; then
iniset $Q_CONF_FILE DEFAULT rpc_backend quantum.openstack.common.rpc.impl_qpid iniset $QUANTUM_CONF DEFAULT rpc_backend quantum.openstack.common.rpc.impl_qpid
elif is_service_enabled zeromq; then elif is_service_enabled zeromq; then
iniset $Q_CONF_FILE DEFAULT rpc_backend quantum.openstack.common.rpc.impl_zmq iniset $QUANTUM_CONF DEFAULT rpc_backend quantum.openstack.common.rpc.impl_zmq
elif [ -n "$RABBIT_HOST" ] && [ -n "$RABBIT_PASSWORD" ]; then elif [ -n "$RABBIT_HOST" ] && [ -n "$RABBIT_PASSWORD" ]; then
iniset $Q_CONF_FILE DEFAULT rabbit_host $RABBIT_HOST iniset $QUANTUM_CONF DEFAULT rabbit_host $RABBIT_HOST
iniset $Q_CONF_FILE DEFAULT rabbit_password $RABBIT_PASSWORD iniset $QUANTUM_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
fi fi
if [[ "$Q_USE_DEBUG_COMMAND" == "True" ]]; then if [[ "$Q_USE_DEBUG_COMMAND" == "True" ]]; then
cp $QUANTUM_DIR/etc/l3_agent.ini $QUANTUM_TEST_CONFIG_FILE cp $QUANTUM_DIR/etc/l3_agent.ini $QUANTUM_TEST_CONFIG_FILE
@ -1598,7 +1558,7 @@ fi
if is_service_enabled q-svc; then if is_service_enabled q-svc; then
echo_summary "Starting Quantum" echo_summary "Starting Quantum"
# Start the Quantum service # Start the Quantum service
screen_it q-svc "cd $QUANTUM_DIR && python $QUANTUM_DIR/bin/quantum-server --config-file $Q_CONF_FILE --config-file /$Q_PLUGIN_CONF_FILE" screen_it q-svc "cd $QUANTUM_DIR && python $QUANTUM_DIR/bin/quantum-server --config-file $QUANTUM_CONF --config-file /$Q_PLUGIN_CONF_FILE"
echo "Waiting for Quantum to start..." echo "Waiting for Quantum to start..."
if ! timeout $SERVICE_TIMEOUT sh -c "while ! http_proxy= wget -q -O- http://127.0.0.1:9696; do sleep 1; done"; then if ! timeout $SERVICE_TIMEOUT sh -c "while ! http_proxy= wget -q -O- http://127.0.0.1:9696; do sleep 1; done"; then
echo "Quantum did not start" echo "Quantum did not start"
@ -1650,10 +1610,10 @@ elif is_service_enabled $DATABASE_BACKENDS && is_service_enabled n-net; then
fi fi
# Start up the quantum agents if enabled # Start up the quantum agents if enabled
screen_it q-agt "python $AGENT_BINARY --config-file $Q_CONF_FILE --config-file /$Q_PLUGIN_CONF_FILE" screen_it q-agt "python $AGENT_BINARY --config-file $QUANTUM_CONF --config-file /$Q_PLUGIN_CONF_FILE"
screen_it q-dhcp "python $AGENT_DHCP_BINARY --config-file $Q_CONF_FILE --config-file=$Q_DHCP_CONF_FILE" screen_it q-dhcp "python $AGENT_DHCP_BINARY --config-file $QUANTUM_CONF --config-file=$Q_DHCP_CONF_FILE"
screen_it q-meta "python $AGENT_META_BINARY --config-file $Q_CONF_FILE --config-file=$Q_META_CONF_FILE" screen_it q-meta "python $AGENT_META_BINARY --config-file $QUANTUM_CONF --config-file=$Q_META_CONF_FILE"
screen_it q-l3 "python $AGENT_L3_BINARY --config-file $Q_CONF_FILE --config-file=$Q_L3_CONF_FILE" screen_it q-l3 "python $AGENT_L3_BINARY --config-file $QUANTUM_CONF --config-file=$Q_L3_CONF_FILE"
if is_service_enabled nova; then if is_service_enabled nova; then
echo_summary "Starting Nova" echo_summary "Starting Nova"

View File

@ -89,8 +89,8 @@ QUANTUM_REPO=${GIT_BASE}/openstack/quantum
QUANTUM_BRANCH=master QUANTUM_BRANCH=master
# quantum client # quantum client
QUANTUM_CLIENT_REPO=${GIT_BASE}/openstack/python-quantumclient QUANTUMCLIENT_REPO=${GIT_BASE}/openstack/python-quantumclient
QUANTUM_CLIENT_BRANCH=master QUANTUMCLIENT_BRANCH=master
# Tempest test suite # Tempest test suite
TEMPEST_REPO=${GIT_BASE}/openstack/tempest.git TEMPEST_REPO=${GIT_BASE}/openstack/tempest.git