From 0f767d569ec4c9c64265ccbf779977b57ba8c432 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Sat, 30 Mar 2013 08:26:45 -0700 Subject: [PATCH] Support multiple localrcs in devstack-gate. There is a lot of per-branch logic involved in building a localrc (especially the ENABLED_SERVICES). Move that into a function that can be run for both old and new localrcs for grenade. Fixes bug 1162214 Change-Id: Ia9f366418739696aeb4f31cce00f2fa372e90028 --- devstack-vm-gate-wrap.sh | 4 +- devstack-vm-gate.sh | 215 +++++++++++++++++++-------------------- 2 files changed, 109 insertions(+), 110 deletions(-) diff --git a/devstack-vm-gate-wrap.sh b/devstack-vm-gate-wrap.sh index ba40bbb4..65d30f9c 100755 --- a/devstack-vm-gate-wrap.sh +++ b/devstack-vm-gate-wrap.sh @@ -48,9 +48,9 @@ export DEVSTACK_GATE_GRENADE=${DEVSTACK_GATE_GRENADE:-0} if [ "$DEVSTACK_GATE_GRENADE" -eq "1" ]; then if [ "$ZUUL_BRANCH" == "stable/grizzly" ]; then - GRENADE_OLD_BRANCH="stable/folsom" + export GRENADE_OLD_BRANCH="stable/folsom" else # master - GRENADE_OLD_BRANCH="stable/folsom" + export GRENADE_OLD_BRANCH="stable/folsom" fi fi diff --git a/devstack-vm-gate.sh b/devstack-vm-gate.sh index 1701c5c5..2153ffc6 100755 --- a/devstack-vm-gate.sh +++ b/devstack-vm-gate.sh @@ -21,59 +21,55 @@ set -o errexit -cd $BASE/new/devstack +function setup_localrc() { + LOCALRC_OLDNEW=$1; + LOCALRC_BRANCH=$2; -# Allow calling context to pre-populate the localrc file with additional values -if [ -z $KEEP_LOCALRC ] ; then - rm -f localrc -fi - - -DEFAULT_ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-sch,horizon,mysql,rabbit,sysstat - -# Allow optional injection of ENABLED_SERVICES from the calling context -if [ -z $ENABLED_SERVICES ] ; then - ENABLED_SERVICES=$DEFAULT_ENABLED_SERVICES -else - ENABLED_SERVICES=$DEFAULT_ENABLED_SERVICES,$ENABLED_SERVICES -fi - -if [ "$DEVSTACK_GATE_TEMPEST" -eq "1" ]; then - ENABLED_SERVICES=$ENABLED_SERVICES,tempest -fi - -if [ "$ZUUL_BRANCH" == "stable/diablo" ]; then - export DEVSTACK_GATE_TEMPEST=0 -fi - -SKIP_EXERCISES=boot_from_volume,client-env - -if [ "$ZUUL_BRANCH" == "stable/diablo" ] || - [ "$ZUUL_BRANCH" == "stable/essex" ]; then - ENABLED_SERVICES=$ENABLED_SERVICES,n-vol,n-net - SKIP_EXERCISES=$SKIP_EXERCISES,swift -elif [ "$ZUUL_BRANCH" == "stable/folsom" ]; then - ENABLED_SERVICES=$ENABLED_SERVICES,n-net,swift - if [ "$DEVSTACK_GATE_CINDER" -eq "1" ]; then - ENABLED_SERVICES=$ENABLED_SERVICES,cinder,c-api,c-vol,c-sch - else - ENABLED_SERVICES=$ENABLED_SERVICES,n-vol + # Allow calling context to pre-populate the localrc file + # with additional values + if [ -z $KEEP_LOCALRC ] ; then + rm -f localrc fi -else # master - ENABLED_SERVICES=$ENABLED_SERVICES,s-proxy,s-account,s-container,s-object,cinder,c-api,c-vol,c-sch,n-cond - if [ "$DEVSTACK_GATE_QUANTUM" -eq "1" ]; then - ENABLED_SERVICES=$ENABLED_SERVICES,quantum,q-svc,q-agt,q-dhcp,q-l3,q-meta - cat <>localrc -Q_USE_DEBUG_COMMAND=True -NETWORK_GATEWAY=10.1.0.1 -EOF + + DEFAULT_ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-sch,horizon,mysql,rabbit,sysstat + + # Allow optional injection of ENABLED_SERVICES from the calling context + if [ -z $ENABLED_SERVICES ] ; then + MY_ENABLED_SERVICES=$DEFAULT_ENABLED_SERVICES else - ENABLED_SERVICES=$ENABLED_SERVICES,n-net + MY_ENABLED_SERVICES=$DEFAULT_ENABLED_SERVICES,$ENABLED_SERVICES + fi + + if [ "$DEVSTACK_GATE_TEMPEST" -eq "1" ]; then + MY_ENABLED_SERVICES=$MY_ENABLED_SERVICES,tempest + fi + + SKIP_EXERCISES=boot_from_volume,client-env + + if [ "$LOCALRC_BRANCH" == "stable/diablo" ] || + [ "$LOCALRC_BRANCH" == "stable/essex" ]; then + MY_ENABLED_SERVICES=$MY_ENABLED_SERVICES,n-vol,n-net + SKIP_EXERCISES=$SKIP_EXERCISES,swift + elif [ "$LOCALRC_BRANCH" == "stable/folsom" ]; then + MY_ENABLED_SERVICES=$MY_ENABLED_SERVICES,n-net,swift + if [ "$DEVSTACK_GATE_CINDER" -eq "1" ]; then + MY_ENABLED_SERVICES=$MY_ENABLED_SERVICES,cinder,c-api,c-vol,c-sch + else + MY_ENABLED_SERVICES=$MY_ENABLED_SERVICES,n-vol + fi + else # master + MY_ENABLED_SERVICES=$MY_ENABLED_SERVICES,s-proxy,s-account,s-container,s-object,cinder,c-api,c-vol,c-sch,n-cond + if [ "$DEVSTACK_GATE_QUANTUM" -eq "1" ]; then + MY_ENABLED_SERVICES=$MY_ENABLED_SERVICES,quantum,q-svc,q-agt,q-dhcp,q-l3,q-meta + echo "Q_USE_DEBUG_COMMAND=True" >>localrc + echo "NETWORK_GATEWAY=10.1.0.1" >>localrc + else + MY_ENABLED_SERVICES=$MY_ENABLED_SERVICES,n-net + fi fi -fi cat <>localrc -DEST=$BASE/new +DEST=$BASE/$LOCALRC_OLDNEW ACTIVE_TIMEOUT=90 BOOT_TIMEOUT=90 ASSOCIATE_TIMEOUT=60 @@ -87,13 +83,13 @@ SERVICE_TOKEN=111222333444 SWIFT_HASH=1234123412341234 ROOTSLEEP=0 ERROR_ON_CLONE=True -ENABLED_SERVICES=$ENABLED_SERVICES +ENABLED_SERVICES=$MY_ENABLED_SERVICES SKIP_EXERCISES=$SKIP_EXERCISES SERVICE_HOST=127.0.0.1 # Screen console logs will capture service logs. SYSLOG=False -SCREEN_LOGDIR=$BASE/new/screen-logs -LOGFILE=$BASE/new/devstacklog.txt +SCREEN_LOGDIR=$BASE/$LOCALRC_OLDNEW/screen-logs +LOGFILE=$BASE/$LOCALRC_OLDNEW/devstacklog.txt VERBOSE=True FIXED_RANGE=10.1.0.0/24 FIXED_NETWORK_SIZE=256 @@ -104,73 +100,68 @@ PIP_USE_MIRRORS=False export OS_NO_CACHE=True EOF -# Grenade needs screen, so only turn this off if we aren't -# running grenade. -if [ "$DEVSTACK_GATE_GRENADE" -eq "0" ]; then - cat <<\EOF >>localrc -USE_SCREEN=False -EOF -fi + # Grenade needs screen, so only turn this off if we aren't + # running grenade. + if [ "$DEVSTACK_GATE_GRENADE" -eq "0" ]; then + echo "USE_SCREEN=False" >>localrc + fi -if [ "$DEVSTACK_CINDER_SECURE_DELETE" -eq "0" ]; then - cat <<\EOF >>localrc -CINDER_SECURE_DELETE=False -EOF -fi + if [ "$DEVSTACK_CINDER_SECURE_DELETE" -eq "0" ]; then + echo "CINDER_SECURE_DELETE=False" >>localrc + fi -if [ "$DEVSTACK_GATE_TEMPEST_COVERAGE" -eq "1" ] ; then - cat <<\EOF >>localrc -EXTRA_OPTS=(backdoor_port=0) -EOF -fi + if [ "$DEVSTACK_GATE_TEMPEST_COVERAGE" -eq "1" ] ; then + echo "EXTRA_OPTS=(backdoor_port=0)" >>localrc + fi -if [ "$DEVSTACK_GATE_POSTGRES" -eq "1" ]; then - cat <<\EOF >>localrc -use_database postgresql -EOF -fi + if [ "$DEVSTACK_GATE_POSTGRES" -eq "1" ]; then + echo "use_database postgresql" >>localrc + fi -if [ "$DEVSTACK_GATE_VIRT_DRIVER" == "openvz" ]; then - cat <<\EOF >>localrc -SKIP_EXERCISES=${SKIP_EXERCISES},volumes -DEFAULT_INSTANCE_TYPE=m1.small -DEFAULT_INSTANCE_USER=root -EOF - cat <>exerciserc -DEFAULT_INSTANCE_TYPE=m1.small -DEFAULT_INSTANCE_USER=root -EOF -fi + if [ "$DEVSTACK_GATE_VIRT_DRIVER" == "openvz" ]; then + echo "SKIP_EXERCISES=${SKIP_EXERCISES},volumes" >>localrc + echo "DEFAULT_INSTANCE_TYPE=m1.small" >>localrc + echo "DEFAULT_INSTANCE_USER=root" >>localrc -if [ "$DEVSTACK_GATE_TEMPEST" -eq "1" ]; then - # We need to disable ratelimiting when running - # Tempest tests since so many requests are executed - echo "API_RATE_LIMIT=False" >> localrc - # Volume tests in Tempest require a number of volumes - # to be created, each of 1G size. Devstack's default - # volume backing file size is 2G, so we increase to 5G - # (apparently 4G is not always enough). - # - # NOTE(sdague): the 10G setting is far larger than should - # be needed, however cinder tempest tests are currently - # not cleaning up correctly, and this is a temp measure - # to prevent it from blocking unrelated changes - echo "VOLUME_BACKING_FILE_SIZE=10G" >> localrc -fi + echo "DEFAULT_INSTANCE_TYPE=m1.small" >>exerciserc + echo "DEFAULT_INSTANCE_USER=root" >>exerciserc + fi -if [ -d $BASE/old ]; then - sed -e "s|$BASE/new|$BASE/old|" < $BASE/new/devstack/localrc \ - > $BASE/old/devstack/localrc - sed -e "s|$BASE/new|$BASE/old|" < $BASE/new/devstack/exerciserc \ - > $BASE/old/devstack/exerciserc + if [ "$DEVSTACK_GATE_TEMPEST" -eq "1" ]; then + # We need to disable ratelimiting when running + # Tempest tests since so many requests are executed + echo "API_RATE_LIMIT=False" >> localrc + # Volume tests in Tempest require a number of volumes + # to be created, each of 1G size. Devstack's default + # volume backing file size is 2G, so we increase to 5G + # (apparently 4G is not always enough). + # + # NOTE(sdague): the 10G setting is far larger than should + # be needed, however cinder tempest tests are currently + # not cleaning up correctly, and this is a temp measure + # to prevent it from blocking unrelated changes + echo "VOLUME_BACKING_FILE_SIZE=10G" >> localrc + fi + + if [ "$DEVSTACK_GATE_GRENADE" -eq "1" ]; then + if [ "$LOCALRC_OLDNEW" == "old" ]; then + echo "GRENADE_PHASE=base" >> localrc + else + echo "GRENADE_PHASE=target" >> localrc + fi + fi +} + + +if [ "$ZUUL_BRANCH" == "stable/diablo" ]; then + export DEVSTACK_GATE_TEMPEST=0 fi -# Make the workspace owned by the stack user -sudo chown -R stack:stack $BASE if [ "$DEVSTACK_GATE_GRENADE" -eq "1" ]; then - echo "GRENADE_PHASE=base" | sudo -u stack tee -a $BASE/old/devstack/localrc - echo "GRENADE_PHASE=target" | sudo -u stack tee -a $BASE/new/devstack/localrc - cat <$BASE/new/grenade/localrc BASE_RELEASE=old BASE_RELEASE_DIR=$BASE/\$BASE_RELEASE BASE_DEVSTACK_DIR=\$BASE_RELEASE_DIR/devstack @@ -179,7 +170,15 @@ TARGET_RELEASE_DIR=$BASE/\$TARGET_RELEASE TARGET_DEVSTACK_DIR=\$TARGET_RELEASE_DIR/devstack SAVE_DIR=\$BASE_RELEASE_DIR/save EOF +fi +cd $BASE/new/devstack +setup_localrc "new" "$ZUUL_BRANCH" + +# Make the workspace owned by the stack user +sudo chown -R stack:stack $BASE + +if [ "$DEVSTACK_GATE_GRENADE" -eq "1" ]; then cd $BASE/new/grenade sudo -H -u stack ./grenade.sh else