local.conf support

This attempts to provide local.conf support by making it possible to
have local.conf files during initial processing and concattenating
them to the end of the final local.conf.

This is not fool proof, but given the limited ways that we currently
use configs in devstack-gate, it's good enough to start the
transition.

Depends-On: Ia19d64ba240adc642284e4b942f6ce12310f862b

Change-Id: I3347c0886b1c2c8c56c902f485f45fb126446451
This commit is contained in:
Sean Dague 2016-06-08 06:57:51 -04:00
parent 3c5722c9d5
commit 63f30f29eb
5 changed files with 143 additions and 35 deletions

33
devstack.local.conf.base Normal file
View File

@ -0,0 +1,33 @@
[[local|localrc]]
# localrc for DevStack base installation
# Default to selecting an interface via the default route
unset HOST_IP
DEST=@BASE_RELEASE_DIR@
DATA_DIR=@DATA_DIR@
SWIFT_DATA_DIR=${DATA_DIR}/swift
# Timeouts
ACTIVE_TIMEOUT=120
ASSOCIATE_TIMEOUT=60
BOOT_TIMEOUT=120
SERVICE_TIMEOUT=120
ADMIN_PASSWORD=0penstack
API_RATE_LIMIT=False
LOGDAYS=1
LOGFILE=$DEST/logs/stack.sh.log
MYSQL_PASSWORD=superstack
RABBIT_HOST=localhost
RABBIT_PASSWORD=superstack
SCREEN_LOGDIR=$DEST/logs/screen
SCREEN_NAME=${SCREEN_NAME:-stack}
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=cd0d1a03-b701-4fcb-801a-8b4d0bc3d06e
STACK_LOG=stack.sh.log
VOLUME_BACKING_FILE_SIZE=10000M
enable_service s-account s-container s-object s-proxy
SWIFT_HASH=8213897fads879789asdf789
SWIFT_REPLICAS=1

View File

@ -0,0 +1,33 @@
[[local|localrc]]
# localrc for DevStack target installation (master)
# Default to selecting an interface via the default route
unset HOST_IP
DEST=@TARGET_RELEASE_DIR@
DATA_DIR=@DATA_DIR@
# Timeouts
ACTIVE_TIMEOUT=120
ASSOCIATE_TIMEOUT=60
BOOT_TIMEOUT=120
SERVICE_TIMEOUT=120
ADMIN_PASSWORD=0penstack
API_RATE_LIMIT=False
#KEYSTONE_CATALOG_BACKEND=sql
LOGDAYS=1
LOGFILE=$DEST/logs/stack.sh.log
MYSQL_PASSWORD=superstack
RABBIT_HOST=localhost
RABBIT_PASSWORD=superstack
SCREEN_LOGDIR=$DEST/logs/screen
SCREEN_NAME=${SCREEN_NAME:-stack}
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=cd0d1a03-b701-4fcb-801a-8b4d0bc3d06e
STACK_LOG=stack.sh.log
VOLUME_BACKING_FILE_SIZE=10000M
enable_service s-account s-container s-object s-proxy
SWIFT_HASH=8213897fads879789asdf789
SWIFT_REPLICAS=1

View File

@ -190,6 +190,13 @@ export TOP_DIR=$TARGET_DEVSTACK_DIR
# Install 'Base' Build of OpenStack # Install 'Base' Build of OpenStack
# ================================= # =================================
source $TARGET_DEVSTACK_DIR/inc/meta-config
# Oh the complexity of bootstrapping. We need to populate enabled
# services from what devstack-gate might have set it as.
extract_localrc_section $BASE_DEVSTACK_DIR/local.conf \
$BASE_DEVSTACK_DIR/localrc \
$BASE_DEVSTACK_DIR/.localrc.auto
# Collect the ENABLED_SERVICES from the base directory, this is what # Collect the ENABLED_SERVICES from the base directory, this is what
# we are starting with. # we are starting with.
ENABLED_SERVICES=$(set +o xtrace && ENABLED_SERVICES=$(set +o xtrace &&
@ -207,6 +214,14 @@ fetch_grenade_plugins
# when the time is right. # when the time is right.
load_settings load_settings
# And ensure that we setup the target localrc.auto, because stack.sh
# isn't run there. This has to be run after load_settings because
# plugins might change the service list during this phase.
extract_localrc_section $TARGET_DEVSTACK_DIR/local.conf \
$TARGET_DEVSTACK_DIR/localrc \
$TARGET_DEVSTACK_DIR/.localrc.auto
# Run the base install of the environment # Run the base install of the environment
if [[ "$RUN_BASE" == "True" ]]; then if [[ "$RUN_BASE" == "True" ]]; then

View File

@ -230,6 +230,23 @@ function git_update_tag {
git checkout -f $git_tag git checkout -f $git_tag
} }
function localrc_path {
local side=$1
local path
if [[ $side == "base" ]]; then
path=$BASE_DEVSTACK_DIR
elif [[ $side == "target" ]]; then
path=$TARGET_DEVSTACK_DIR
else
die $LINENO "side must be base or target!"
fi
if [[ -e "$path/local.conf" ]]; then
echo "$path/local.conf"
else
echo "$path/localrc"
fi
}
function fetch_devstacks { function fetch_devstacks {
# Fetch Base Devstack # Fetch Base Devstack
@ -246,28 +263,36 @@ function fetch_devstacks {
# Set up base localrc # Set up base localrc
# if localrc exists and localrc.orig does not exist, save localrc to localrc.orig # if local.conf exists and local.conf.orig does not exist, save local.conf to local.conf.orig
if [[ -r $BASE_DEVSTACK_DIR/localrc && ! -r $BASE_DEVSTACK_DIR/localrc.orig ]]; then if [[ -r $BASE_DEVSTACK_DIR/local.conf && ! -r $BASE_DEVSTACK_DIR/local.conf.orig ]]; then
mv $BASE_DEVSTACK_DIR/local.conf $BASE_DEVSTACK_DIR/local.conf.orig
elif [[ -r $BASE_DEVSTACK_DIR/localrc && ! -r $BASE_DEVSTACK_DIR/localrc.orig ]]; then
mv $BASE_DEVSTACK_DIR/localrc $BASE_DEVSTACK_DIR/localrc.orig mv $BASE_DEVSTACK_DIR/localrc $BASE_DEVSTACK_DIR/localrc.orig
fi fi
# put devstack.localrc.target in place as localrc # put devstack.local.conf.target in place as local.conf
sed -e " sed -e "
s|\@BASE_RELEASE_DIR\@|$BASE_RELEASE_DIR| s|\@BASE_RELEASE_DIR\@|$BASE_RELEASE_DIR|
s|\@DATA_DIR@|$DATA_DIR| s|\@DATA_DIR@|$DATA_DIR|
" $GRENADE_DIR/devstack.localrc.base >$BASE_DEVSTACK_DIR/localrc " $GRENADE_DIR/devstack.local.conf.base >$BASE_DEVSTACK_DIR/local.conf
# if localrc.orig exists, append it to localrc # if local.conf.orig or localrc.orig exists, append it to local.conf
if [[ -r $BASE_DEVSTACK_DIR/localrc.orig ]]; then if [[ -r $BASE_DEVSTACK_DIR/local.conf.orig ]]; then
echo "#vvvvvvvvvv devstack-vm-gate.sh localrc vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/localrc echo "#vvvvvvvvvv devstack-vm-gate.sh local.conf vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/local.conf
cat $BASE_DEVSTACK_DIR/localrc.orig >>$BASE_DEVSTACK_DIR/localrc cat $BASE_DEVSTACK_DIR/local.conf.orig >>$BASE_DEVSTACK_DIR/local.conf
elif [[ -r $BASE_DEVSTACK_DIR/localrc.orig ]]; then
echo "#vvvvvvvvvv devstack-vm-gate.sh localrc vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/local.conf
cat $BASE_DEVSTACK_DIR/localrc.orig >>$BASE_DEVSTACK_DIR/local.conf
fi fi
# if devstack.localrc exists append it to locarc # if devstack.local.conf exists append it to locarc
if [[ -r $GRENADE_DIR/devstack.localrc ]]; then if [[ -r $GRENADE_DIR/devstack.local.conf ]]; then
echo "#vvvvvvvvvv devstack.localrc vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/localrc echo "#vvvvvvvvvv devstack.local.conf vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/local.conf
cat $GRENADE_DIR/devstack.localrc >>$BASE_DEVSTACK_DIR/localrc cat $GRENADE_DIR/devstack.local.conf >>$BASE_DEVSTACK_DIR/local.conf
elif [[ -r $GRENADE_DIR/devstack.localrc ]]; then
echo "#vvvvvvvvvv devstack.localrc vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/local.conf
cat $GRENADE_DIR/devstack.localrc >>$BASE_DEVSTACK_DIR/local.conf
fi fi
# Fetch Target Devstack # Fetch Target Devstack
@ -276,28 +301,36 @@ function fetch_devstacks {
git_clone $TARGET_DEVSTACK_REPO $TARGET_DEVSTACK_DIR $TARGET_DEVSTACK_BRANCH git_clone $TARGET_DEVSTACK_REPO $TARGET_DEVSTACK_DIR $TARGET_DEVSTACK_BRANCH
fi fi
# Set up target localrc # Set up target local.conf
# if localrc exists and localrc.orig does not exist, save localrc to localrc.orig # if local.conf exists and local.conf.orig does not exist, save local.conf to local.conf.orig
if [[ -r $TARGET_DEVSTACK_DIR/localrc && ! -r $TARGET_DEVSTACK_DIR/localrc.orig ]]; then if [[ -r $TARGET_DEVSTACK_DIR/local.conf && ! -r $TARGET_DEVSTACK_DIR/local.conf.orig ]]; then
mv $TARGET_DEVSTACK_DIR/local.conf $TARGET_DEVSTACK_DIR/local.conf.orig
elif [[ -r $TARGET_DEVSTACK_DIR/localrc && ! -r $TARGET_DEVSTACK_DIR/localrc.orig ]]; then
mv $TARGET_DEVSTACK_DIR/localrc $TARGET_DEVSTACK_DIR/localrc.orig mv $TARGET_DEVSTACK_DIR/localrc $TARGET_DEVSTACK_DIR/localrc.orig
fi fi
# put devstack.localrc.target in place as localrc # put devstack.local.conf.target in place as local.conf
sed -e " sed -e "
s|\@TARGET_RELEASE_DIR\@|$TARGET_RELEASE_DIR| s|\@TARGET_RELEASE_DIR\@|$TARGET_RELEASE_DIR|
s|\@DATA_DIR@|$DATA_DIR| s|\@DATA_DIR@|$DATA_DIR|
" $GRENADE_DIR/devstack.localrc.target >$TARGET_DEVSTACK_DIR/localrc " $GRENADE_DIR/devstack.local.conf.target >$TARGET_DEVSTACK_DIR/local.conf
# if localrc.orig exists, append it to localrc # if local.conf.orig exists, append it to local.conf
if [[ -r $TARGET_DEVSTACK_DIR/localrc.orig ]]; then if [[ -r $TARGET_DEVSTACK_DIR/local.conf.orig ]]; then
echo "#vvvvvvvvvv devstack-vm-gate.sh localrc vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/localrc echo "#vvvvvvvvvv devstack-vm-gate.sh local.conf vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/local.conf
cat $TARGET_DEVSTACK_DIR/localrc.orig >>$TARGET_DEVSTACK_DIR/localrc cat $TARGET_DEVSTACK_DIR/local.conf.orig >>$TARGET_DEVSTACK_DIR/local.conf
elif [[ -r $TARGET_DEVSTACK_DIR/localrc.orig ]]; then
echo "#vvvvvvvvvv devstack-vm-gate.sh localrc vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/local.conf
cat $TARGET_DEVSTACK_DIR/localrc.orig >>$TARGET_DEVSTACK_DIR/local.conf
fi fi
# if devstack.localrc exists append it to locarc # if devstack.local.conf exists append it to locarc
if [[ -r $GRENADE_DIR/devstack.localrc ]]; then if [[ -r $GRENADE_DIR/devstack.local.conf ]]; then
echo "#vvvvvvvvvv devstack.localrc vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/localrc echo "#vvvvvvvvvv devstack.local.conf vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/local.conf
cat $GRENADE_DIR/devstack.localrc >>$TARGET_DEVSTACK_DIR/localrc cat $GRENADE_DIR/devstack.local.conf >>$TARGET_DEVSTACK_DIR/local.conf
elif [[ -r $GRENADE_DIR/devstack.localrc ]]; then
echo "#vvvvvvvvvv devstack.localrc vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/local.conf
cat $GRENADE_DIR/devstack.localrc >>$TARGET_DEVSTACK_DIR/local.conf
fi fi
} }

View File

@ -163,17 +163,11 @@ function enable_grenade_plugin {
function devstack_localrc { function devstack_localrc {
local settings_file=$(caller | awk '{print $2}') local settings_file=$(caller | awk '{print $2}')
local where=$1 local where=$1
local path=$(localrc_path $where)
shift shift
case $where in echo "Adding settings to $where at $path"
base) echo "# added by $settings_file" >> $path
echo "# added by $settings_file" >> $BASE_DEVSTACK_DIR/localrc echo "$@" >> $path
echo "$@" >> $BASE_DEVSTACK_DIR/localrc
;;
target)
echo "# added by $settings_file" >> $TARGET_DEVSTACK_DIR/localrc
echo "$@" >> $TARGET_DEVSTACK_DIR/localrc
;;
esac
} }
function fetch_grenade_plugins { function fetch_grenade_plugins {