|  | #!/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) | 
|  |  | 
|  | # Import common functions | 
|  | . $TOP_DIR/functions | 
|  |  | 
|  | # 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%/}/|; | 
|  | /^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 |