From 63f30f29eb9f06f892be554570a28950c2da8f51 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 8 Jun 2016 06:57:51 -0400 Subject: [PATCH] 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 --- devstack.local.conf.base | 33 +++++++++++++++ devstack.local.conf.target | 33 +++++++++++++++ grenade.sh | 15 +++++++ inc/bootstrap | 83 ++++++++++++++++++++++++++------------ inc/plugin | 14 ++----- 5 files changed, 143 insertions(+), 35 deletions(-) create mode 100644 devstack.local.conf.base create mode 100644 devstack.local.conf.target diff --git a/devstack.local.conf.base b/devstack.local.conf.base new file mode 100644 index 00000000..2caee591 --- /dev/null +++ b/devstack.local.conf.base @@ -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 diff --git a/devstack.local.conf.target b/devstack.local.conf.target new file mode 100644 index 00000000..32ecc257 --- /dev/null +++ b/devstack.local.conf.target @@ -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 diff --git a/grenade.sh b/grenade.sh index 31ada205..34a6d509 100755 --- a/grenade.sh +++ b/grenade.sh @@ -190,6 +190,13 @@ export TOP_DIR=$TARGET_DEVSTACK_DIR # 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 # we are starting with. ENABLED_SERVICES=$(set +o xtrace && @@ -207,6 +214,14 @@ fetch_grenade_plugins # when the time is right. 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 if [[ "$RUN_BASE" == "True" ]]; then diff --git a/inc/bootstrap b/inc/bootstrap index 839b30a3..3f857bb9 100644 --- a/inc/bootstrap +++ b/inc/bootstrap @@ -230,6 +230,23 @@ function git_update_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 { # Fetch Base Devstack @@ -246,28 +263,36 @@ function fetch_devstacks { # Set up base localrc - # if localrc exists and localrc.orig does not exist, save localrc to localrc.orig - if [[ -r $BASE_DEVSTACK_DIR/localrc && ! -r $BASE_DEVSTACK_DIR/localrc.orig ]]; then + # if local.conf exists and local.conf.orig does not exist, save local.conf to local.conf.orig + 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 fi - # put devstack.localrc.target in place as localrc + # put devstack.local.conf.target in place as local.conf sed -e " s|\@BASE_RELEASE_DIR\@|$BASE_RELEASE_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 [[ -r $BASE_DEVSTACK_DIR/localrc.orig ]]; then - echo "#vvvvvvvvvv devstack-vm-gate.sh localrc vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/localrc - cat $BASE_DEVSTACK_DIR/localrc.orig >>$BASE_DEVSTACK_DIR/localrc + # if local.conf.orig or localrc.orig exists, append it to local.conf + if [[ -r $BASE_DEVSTACK_DIR/local.conf.orig ]]; then + echo "#vvvvvvvvvv devstack-vm-gate.sh local.conf vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/local.conf + 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 - # if devstack.localrc exists append it to locarc - if [[ -r $GRENADE_DIR/devstack.localrc ]]; then - echo "#vvvvvvvvvv devstack.localrc vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/localrc - cat $GRENADE_DIR/devstack.localrc >>$BASE_DEVSTACK_DIR/localrc + # if devstack.local.conf exists append it to locarc + if [[ -r $GRENADE_DIR/devstack.local.conf ]]; then + echo "#vvvvvvvvvv devstack.local.conf vvvvvvvvvv" >>$BASE_DEVSTACK_DIR/local.conf + 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 # Fetch Target Devstack @@ -276,28 +301,36 @@ function fetch_devstacks { git_clone $TARGET_DEVSTACK_REPO $TARGET_DEVSTACK_DIR $TARGET_DEVSTACK_BRANCH 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 [[ -r $TARGET_DEVSTACK_DIR/localrc && ! -r $TARGET_DEVSTACK_DIR/localrc.orig ]]; then + # if local.conf exists and local.conf.orig does not exist, save local.conf to local.conf.orig + 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 fi - # put devstack.localrc.target in place as localrc + # put devstack.local.conf.target in place as local.conf sed -e " s|\@TARGET_RELEASE_DIR\@|$TARGET_RELEASE_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 [[ -r $TARGET_DEVSTACK_DIR/localrc.orig ]]; then - echo "#vvvvvvvvvv devstack-vm-gate.sh localrc vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/localrc - cat $TARGET_DEVSTACK_DIR/localrc.orig >>$TARGET_DEVSTACK_DIR/localrc + # if local.conf.orig exists, append it to local.conf + if [[ -r $TARGET_DEVSTACK_DIR/local.conf.orig ]]; then + echo "#vvvvvvvvvv devstack-vm-gate.sh local.conf vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/local.conf + 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 - # if devstack.localrc exists append it to locarc - if [[ -r $GRENADE_DIR/devstack.localrc ]]; then - echo "#vvvvvvvvvv devstack.localrc vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/localrc - cat $GRENADE_DIR/devstack.localrc >>$TARGET_DEVSTACK_DIR/localrc + # if devstack.local.conf exists append it to locarc + if [[ -r $GRENADE_DIR/devstack.local.conf ]]; then + echo "#vvvvvvvvvv devstack.local.conf vvvvvvvvvv" >>$TARGET_DEVSTACK_DIR/local.conf + 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 } diff --git a/inc/plugin b/inc/plugin index 2cee3ba8..2d5cf2b6 100644 --- a/inc/plugin +++ b/inc/plugin @@ -163,17 +163,11 @@ function enable_grenade_plugin { function devstack_localrc { local settings_file=$(caller | awk '{print $2}') local where=$1 + local path=$(localrc_path $where) shift - case $where in - base) - echo "# added by $settings_file" >> $BASE_DEVSTACK_DIR/localrc - echo "$@" >> $BASE_DEVSTACK_DIR/localrc - ;; - target) - echo "# added by $settings_file" >> $TARGET_DEVSTACK_DIR/localrc - echo "$@" >> $TARGET_DEVSTACK_DIR/localrc - ;; - esac + echo "Adding settings to $where at $path" + echo "# added by $settings_file" >> $path + echo "$@" >> $path } function fetch_grenade_plugins {