Update devstack's Tempest integration
Split build_ci_config.sh into:
* tools/build_tempest.sh - checks out Tempest and installs prereqs
* tools/configure_tempest.sh - creates tempest.conf from devstack
Change-Id: I22f40226afb617a5a6e32f2631b07d5509f10b13
diff --git a/tools/configure_tempest.sh b/tools/configure_tempest.sh
new file mode 100755
index 0000000..00add9a
--- /dev/null
+++ b/tools/configure_tempest.sh
@@ -0,0 +1,227 @@
+#!/usr/bin/env bash
+#
+# configure_tempest.sh - Build a tempest configuration file from devstack
+
+function usage {
+ echo "$0 - Build tempest.conf"
+ echo ""
+ echo "Usage: $0 [configdir]"
+ exit 1
+}
+
+if [ "$1" = "-h" ]; then
+ usage
+fi
+
+# Clean up any resources that may be in use
+cleanup() {
+ set +o errexit
+
+ # Mop up temporary files
+ if [ -n "$CONFIG_INI_TMP" -a -e "$CONFIG_INI_TMP" ]; then
+ rm -f $CONFIG_INI_TMP
+ fi
+
+ # Kill ourselves to signal any calling process
+ trap 2; kill -2 $$
+}
+
+trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
+
+# Keep track of the current directory
+TOOLS_DIR=$(cd $(dirname "$0") && pwd)
+TOP_DIR=`cd $TOOLS_DIR/..; pwd`
+
+# Abort if localrc is not set
+if [ ! -e $TOP_DIR/localrc ]; then
+ echo "You must have a localrc with ALL necessary passwords and configuration defined before proceeding."
+ echo "See stack.sh for required passwords."
+ exit 1
+fi
+
+# Source params
+source ./stackrc
+
+# Set defaults not configured by stackrc
+TENANT=${TENANT:-admin}
+USERNAME=${USERNAME:-admin}
+IDENTITY_HOST=${IDENTITY_HOST:-$HOST_IP}
+IDENTITY_PORT=${IDENTITY_PORT:-5000}
+IDENTITY_API_VERSION=${IDENTITY_API_VERSION:-2.0}
+
+# Where Openstack code lives
+DEST=${DEST:-/opt/stack}
+
+TEMPEST_DIR=$DEST/tempest
+
+CONFIG_DIR=${1:-$TEMPEST_DIR/etc}
+CONFIG_INI=$CONFIG_DIR/config.ini
+TEMPEST_CONF=$CONFIG_DIR/tempest.conf
+
+if [ ! -f $DEST/.ramdisk ]; then
+ # Process network configuration vars
+ GUEST_NETWORK=${GUEST_NETWORK:-1}
+ GUEST_RECREATE_NET=${GUEST_RECREATE_NET:-yes}
+
+ GUEST_IP=${GUEST_IP:-192.168.$GUEST_NETWORK.50}
+ GUEST_CIDR=${GUEST_CIDR:-$GUEST_IP/24}
+ GUEST_NETMASK=${GUEST_NETMASK:-255.255.255.0}
+ GUEST_GATEWAY=${GUEST_GATEWAY:-192.168.$GUEST_NETWORK.1}
+ GUEST_MAC=${GUEST_MAC:-"02:16:3e:07:69:`printf '%02X' $GUEST_NETWORK`"}
+ GUEST_RAM=${GUEST_RAM:-1524288}
+ GUEST_CORES=${GUEST_CORES:-1}
+fi
+
+# Use the GUEST_IP unless an explicit IP is set by ``HOST_IP``
+HOST_IP=${HOST_IP:-$GUEST_IP}
+# Use the first IP if HOST_IP still is not set
+if [ ! -n "$HOST_IP" ]; then
+ HOST_IP=`LC_ALL=C /sbin/ifconfig | grep -m 1 'inet addr:'| cut -d: -f2 | awk '{print $1}'`
+fi
+
+RABBIT_HOST=${RABBIT_HOST:-localhost}
+
+# Glance connection info. Note the port must be specified.
+GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$HOST_IP:9292}
+set `echo $GLANCE_HOSTPORT | tr ':' ' '`
+GLANCE_HOST=$1
+GLANCE_PORT=$2
+
+# Set up downloaded images
+# Defaults to use first image
+
+IMAGE_DIR=""
+IMAGE_NAME=""
+for imagedir in $TOP_DIR/files/images/*; do
+ KERNEL=""
+ RAMDISK=""
+ IMAGE=""
+ IMAGE_RAMDISK=""
+ KERNEL=$(for f in "$imagedir/"*-vmlinuz*; do
+ [ -f "$f" ] && echo "$f" && break; done; true)
+ [ -n "$KERNEL" ] && ln -sf $KERNEL $imagedir/kernel
+ RAMDISK=$(for f in "$imagedir/"*-initrd*; do
+ [ -f "$f" ] && echo "$f" && break; done; true)
+ [ -n "$RAMDISK" ] && ln -sf $RAMDISK $imagedir/ramdisk && \
+ IMAGE_RAMDISK="ari_location = $imagedir/ramdisk"
+ IMAGE=$(for f in "$imagedir/"*.img; do
+ [ -f "$f" ] && echo "$f" && break; done; true)
+ if [ -n "$IMAGE" ]; then
+ ln -sf $IMAGE $imagedir/disk
+ # Save the first image directory that contains a disk image link
+ if [ -z "$IMAGE_DIR" ]; then
+ IMAGE_DIR=$imagedir
+ IMAGE_NAME=$(basename ${IMAGE%.img})
+ fi
+ fi
+done
+if [[ -n "$IMAGE_NAME" ]]; then
+ # Get the image UUID
+ IMAGE_UUID=$(nova image-list | grep " $IMAGE_NAME " | cut -d'|' -f2)
+ # Strip spaces off
+ IMAGE_UUID=$(echo $IMAGE_UUID)
+fi
+
+# Create tempest.conf from tempest.conf.sample
+
+if [[ ! -r $TEMPEST_CONF ]]; then
+ cp $TEMPEST_CONF.sample $TEMPEST_CONF
+fi
+
+sed -e "
+ /^api_key=/s|=.*\$|=$ADMIN_PASSWORD|;
+ /^auth_url=/s|=.*\$|=${OS_AUTH_URL%/}/tokens/|;
+ /^host=/s|=.*\$|=$HOST_IP|;
+ /^image_ref=/s|=.*\$|=$IMAGE_UUID|;
+ /^password=/s|=.*\$|=$ADMIN_PASSWORD|;
+ /^tenant=/s|=.*\$|=$TENANT|;
+ /^tenant_name=/s|=.*\$|=$TENANT|;
+ /^user=/s|=.*\$|=$USERNAME|;
+ /^username=/s|=.*\$|=$USERNAME|;
+" -i $TEMPEST_CONF
+
+# Create config.ini
+
+CONFIG_INI_TMP=$(mktemp $CONFIG_INI.XXXXXX)
+if [ "$UPLOAD_LEGACY_TTY" ]; then
+ cat >$CONFIG_INI_TMP <<EOF
+[environment]
+aki_location = $TOP_DIR/files/images/aki-tty/image
+ari_location = $TOP_DIR/files/images/ari-tty/image
+ami_location = $TOP_DIR/files/images/ami-tty/image
+image_ref = 3
+image_ref_alt = 3
+flavor_ref = 1
+flavor_ref_alt = 2
+
+[glance]
+host = $GLANCE_HOST
+apiver = v1
+port = $GLANCE_PORT
+image_id = 3
+image_id_alt = 3
+tenant_id = 1
+EOF
+else
+ cat >$CONFIG_INI_TMP <<EOF
+[environment]
+aki_location = $IMAGE_DIR/kernel
+ami_location = $IMAGE_DIR/disk
+$IMAGE_RAMDISK
+image_ref = 2
+image_ref_alt = 2
+flavor_ref = 1
+flavor_ref_alt = 2
+
+[glance]
+host = $GLANCE_HOST
+apiver = v1
+port = $GLANCE_PORT
+image_id = 2
+image_id_alt = 2
+tenant_id = 1
+EOF
+fi
+
+cat >>$CONFIG_INI_TMP <<EOF
+
+[keystone]
+service_host = $HOST_IP
+service_port = 5000
+apiver = v2.0
+user = admin
+password = $ADMIN_PASSWORD
+tenant_name = admin
+
+[nova]
+host = $HOST_IP
+port = 8774
+apiver = v1.1
+project = admin
+user = admin
+key = $ADMIN_PASSWORD
+ssh_timeout = 300
+build_timeout = 300
+flavor_ref = 1
+flavor_ref_alt = 2
+multi_node = no
+
+[rabbitmq]
+host = $RABBIT_HOST
+user = guest
+password = $RABBIT_PASSWORD
+
+[swift]
+auth_host = $HOST_IP
+auth_port = 443
+auth_prefix = /auth/
+auth_ssl = yes
+account = system
+username = root
+password = password
+
+EOF
+mv $CONFIG_INI_TMP $CONFIG_INI
+CONFIG_INI_TMP=""
+
+trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT