File openstack-tempest-demosetup of Package openstack-tempest

#!/bin/bash

TEMPEST_BASE_DIR=/opt
GIT_REPO=git://github.com/openstack/tempest.git
GIT_DIR_NAME=tempest
GIT_BRANCH=stable/essex
IMAGE_URL=http://www.zq1.de/~bernhard/linux/euca-debian-5.0-i386.tar.gz
IMAGE_URL=http://zast.suse.de/cloud/images/euca-debian-5.0-i386.tar.gz
SERVICE_TOKEN=999888777666

# default configuration (gets overwritten if /etc/openstackquickstartrc exists)
CONF_HOST=127.0.0.1
CONF_PORT=5000
CONF_USER=admin
CONF_KEY=openstack
CONF_TENANT=admin
CONF_IMAGE_ID=null

NOVA_USERNAME=admin
NOVA_API_KEY=openstack
NOVA_PROJECT_ID=admin

# read configuration from /etc/openstackquickstartrc
if [ -f /etc/openstackquickstartrc ] ; then
	. /etc/openstackquickstartrc
	CONF_HOST=$IP
	CONF_KEY=$pw
fi

# do not edit this variables!
TEMPEST_DIR=$TEMPEST_BASE_DIR/$GIT_DIR_NAME
TEMPEST_IMAGE_DIR=$TEMPEST_DIR/images

# sanity checks
if [ -d $TEMPEST_DIR ] ; then
	echo "$TEMPEST_DIR already exists"
	exit 1
fi

echo "Setting up Tempest..."
echo

mkdir -p $TEMPEST_BASE_DIR
cd $TEMPEST_BASE_DIR

# checkout git repo
echo "Cloning tempest git repository..."
git clone $GIT_REPO $GIT_DIR_NAME
pushd $GIT_DIR_NAME
git checkout -b $GIT_BRANCH origin/$GIT_BRANCH
popd
echo

# download image and setup image id
if [ "$CONF_IMAGE_ID" == "null" ] ; then
	mkdir -p $TEMPEST_IMAGE_DIR
	cd $TEMPEST_IMAGE_DIR

	echo "Downloading test image..."
	curl $IMAGE_URL | gzip -d > tempest-image.raw
	if [ ! -f tempest-image.raw ] ; then
		echo "Failed to download test image"
		exit 1
	fi
	echo

	echo "Adding test image to glance..."
	TOKEN=`curl -s -d  "{\"auth\":{\"passwordCredentials\": {\"username\": \"$CONF_USER\", \"password\": \"$CONF_KEY\"}, \"tenantName\": \"$CONF_TENANT\"}}" -H "Content-type: application/json" http://$CONF_HOST:$CONF_PORT/v2.0/tokens | python -c "import sys; import json; tok = json.loads(sys.stdin.read()); print tok['access']['token']['id'];"`
	glance -A $TOKEN add name="tempest-image" container_format=bare disk_format=raw is_public=True < tempest-image.raw
	CONF_IMAGE_ID=`NOVA_PROJECT_ID=$NOVA_PROJECT_ID NOVA_USERNAME=$NOVA_USERNAME NOVA_API_KEY=$NOVA_API_KEY nova image-list | grep "tempest-image" | awk '{print $2}'`
	if [ "$CONF_IMAGE_ID" == "" ] ; then
		echo "Failed to import tempest-image!"
		exit 1
	fi
	echo
fi

# add an extra keystone users/tenants needed by tempest
export SERVICE_TOKEN
ROLE_ID=`keystone role-list|grep Member|awk '{print $2}'`
keystone tenant-create --name=tempest1_tenant
TENANT1_ID=`keystone tenant-list|grep tempest1|awk '{print $2}'`
keystone user-create --name=tempest1 --pass=tempest1_pass --email=tempest1@example.com --tenant_id $TENANT1_ID
USER1_ID=`keystone user-list|grep tempest1|awk '{print $2}'`
keystone user-role-add --user $USER1_ID --role $ROLE_ID --tenant_id $TENANT1_ID

keystone tenant-create --name=tempest2_tenant
TENANT2_ID=`keystone tenant-list|grep tempest2|awk '{print $2}'`
keystone user-create --name=tempest2 --pass=tempest2_pass --email=tempest2@example.com --tenant_id $TENANT2_ID
USER2_ID=`keystone user-list|grep tempest2|awk '{print $2}'`
keystone user-role-add --user $USER2_ID --role $ROLE_ID --tenant_id $TENANT2_ID

# create tempest configuration
if [ -f $TEMPEST_DIR/etc/tempest.conf ] ; then
	echo "tempest configuration already exists!"
	exit 1
fi

sed "s/{\$USERNAME}/tempest1/; s/{\$PASSWORD}/tempest1_pass/; s/{\$TENANT_NAME}/tempest1_tenant/; s/{\$ALT_USERNAME}/tempest2/; s/{\$ALT_PASSWORD}/tempest2_pass/; s/{\$ALT_TENANT_NAME}/tempest2_tenant/; s/{\$ADMIN_USERNAME}/admin/; s/{\$ADMIN_PASSWORD}/openstack/; s/{\$ADMIN_TENANT_NAME}/admin/; s/{\$IMAGE_ID}/$CONF_IMAGE_ID/;" $TEMPEST_DIR/etc/tempest.conf.sample > $TEMPEST_DIR/etc/tempest.conf

echo "Wrote configuration to $TEMPEST_DIR/etc/tempest.conf"
echo

# done
echo "Run the test suite now:"
echo
echo "  $ cd $TEMPEST_DIR && nosetests -v tempest"
echo

exit 0

openSUSE Build Service is sponsored by