| ... | ... |
@@ -2,31 +2,49 @@ |
| 2 | 2 |
|
| 3 | 3 |
# Dependencies: |
| 4 | 4 |
# ``functions`` file |
| 5 |
-# ``SERVICE_{TENANT_NAME|PASSWORD}`` must be defined
|
|
| 5 |
+# ``lib/nova`` service is runing |
|
| 6 | 6 |
# <list other global vars that are assumed to be defined> |
| 7 |
- |
|
| 7 |
+# - DEST |
|
| 8 |
+# - ADMIN_PASSWORD |
|
| 9 |
+# - OS_USERNAME |
|
| 10 |
+# - DEFAULT_IMAGE_NAME |
|
| 11 |
+# - S3_SERVICE_PORT |
|
| 12 |
+# - SERVICE_HOST |
|
| 13 |
+# - BASE_SQL_CONN ``lib/database`` declares |
|
| 14 |
+# Optional Dependencies: |
|
| 15 |
+# IDENTITY_* |
|
| 16 |
+# ALT_* (similar vars exists in keystone_data.sh) |
|
| 17 |
+# IMAGE_* |
|
| 18 |
+# LIVE_MIGRATION_AVAILABLE |
|
| 19 |
+# DEFAULT_INSTANCE_TYPE |
|
| 20 |
+# DEFAULT_INSTANCE_USER |
|
| 21 |
+# USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION |
|
| 8 | 22 |
# ``stack.sh`` calls the entry points in this order: |
| 9 | 23 |
# |
| 10 |
-# install_XXXX |
|
| 11 |
-# configure_XXXX |
|
| 12 |
-# init_XXXX |
|
| 13 |
-# start_XXXX |
|
| 14 |
-# stop_XXXX |
|
| 15 |
-# cleanup_XXXX |
|
| 24 |
+# install_tempest |
|
| 25 |
+# configure_tempest |
|
| 26 |
+# init_tempest |
|
| 27 |
+## start_tempest |
|
| 28 |
+## stop_tempest |
|
| 29 |
+## cleanup_tempest |
|
| 16 | 30 |
|
| 17 | 31 |
# Save trace setting |
| 18 | 32 |
XTRACE=$(set +o | grep xtrace) |
| 19 | 33 |
set +o xtrace |
| 20 | 34 |
|
| 21 |
- |
|
| 22 | 35 |
# Defaults |
| 23 | 36 |
# -------- |
| 24 | 37 |
|
| 25 | 38 |
# <define global variables here that belong to this project> |
| 26 | 39 |
|
| 27 | 40 |
# Set up default directories |
| 41 |
+NOVA_SOURCE_DIR=$DEST/nova |
|
| 28 | 42 |
TEMPEST_DIR=$DEST/tempest |
| 29 |
-TEMPEST_CONF_DIR=$DEST/tempest/etc |
|
| 43 |
+TEMPEST_CONF_DIR=$TEMPEST_DIR/etc |
|
| 44 |
+TEMPEST_CONF=$TEMPEST_CONF_DIR/tempest.conf |
|
| 45 |
+ |
|
| 46 |
+BUILD_INTERVAL=3 |
|
| 47 |
+BUILD_TIMEOUT=400 |
|
| 30 | 48 |
|
| 31 | 49 |
# Entry Points |
| 32 | 50 |
# ------------ |
| ... | ... |
@@ -34,15 +52,168 @@ TEMPEST_CONF_DIR=$DEST/tempest/etc |
| 34 | 34 |
|
| 35 | 35 |
# configure_tempest() - Set config files, create data dirs, etc |
| 36 | 36 |
function configure_tempest() {
|
| 37 |
+ local IMAGE_LINES |
|
| 38 |
+ local IMAGES |
|
| 39 |
+ local NUM_IMAGES |
|
| 40 |
+ local IMAGE_UUID |
|
| 41 |
+ local IMAGE_UUID_ALT |
|
| 42 |
+ local errexit |
|
| 43 |
+ |
|
| 44 |
+ #TODO(afazekas): |
|
| 37 | 45 |
# sudo python setup.py deploy |
| 38 |
- # iniset $tempest_CONF ... |
|
| 39 |
- # This function intentionally left blank |
|
| 40 |
- # |
|
| 41 |
- # TODO(sdague) actually move the guts of configure tempest |
|
| 42 |
- # into this function |
|
| 43 |
- cd tools |
|
| 44 |
- ./configure_tempest.sh |
|
| 45 |
- cd .. |
|
| 46 |
+ |
|
| 47 |
+ # This function exits on an error so that errors don't compound and you see |
|
| 48 |
+ # only the first error that occured. |
|
| 49 |
+ errexit=$(set +o | grep errexit) |
|
| 50 |
+ set -o errexit |
|
| 51 |
+ |
|
| 52 |
+ #Save IFS |
|
| 53 |
+ ifs=$IFS |
|
| 54 |
+ |
|
| 55 |
+ # Glance should already contain images to be used in tempest |
|
| 56 |
+ # testing. Here we simply look for images stored in Glance |
|
| 57 |
+ # and set the appropriate variables for use in the tempest config |
|
| 58 |
+ # We ignore ramdisk and kernel images, look for the default image |
|
| 59 |
+ # DEFAULT_IMAGE_NAME. If not found, we set the IMAGE_UUID to the |
|
| 60 |
+ # first image returned and set IMAGE_UUID_ALT to the second, |
|
| 61 |
+ # if there is more than one returned... |
|
| 62 |
+ # ... Also ensure we only take active images, so we don't get snapshots in process |
|
| 63 |
+ IMAGE_LINES=`glance image-list` |
|
| 64 |
+ IFS=$'\n\r' |
|
| 65 |
+ IMAGES="" |
|
| 66 |
+ for line in $IMAGE_LINES; do |
|
| 67 |
+ if [ -z $DEFAULT_IMAGE_NAME ]; then |
|
| 68 |
+ IMAGES="$IMAGES `echo $line | grep -v "^\(ID\|+--\)" | grep -v "\(aki\|ari\)" | grep 'active' | cut -d' ' -f2`" |
|
| 69 |
+ else |
|
| 70 |
+ IMAGES="$IMAGES `echo $line | grep -v "^\(ID\|+--\)" | grep -v "\(aki\|ari\)" | grep 'active' | grep "$DEFAULT_IMAGE_NAME" | cut -d' ' -f2`" |
|
| 71 |
+ fi |
|
| 72 |
+ done |
|
| 73 |
+ # Create array of image UUIDs... |
|
| 74 |
+ IFS=" " |
|
| 75 |
+ IMAGES=($IMAGES) |
|
| 76 |
+ NUM_IMAGES=${#IMAGES[*]}
|
|
| 77 |
+ echo "Found $NUM_IMAGES images" |
|
| 78 |
+ if [[ $NUM_IMAGES -eq 0 ]]; then |
|
| 79 |
+ echo "Found no valid images to use!" |
|
| 80 |
+ exit 1 |
|
| 81 |
+ fi |
|
| 82 |
+ IMAGE_UUID=${IMAGES[0]}
|
|
| 83 |
+ IMAGE_UUID_ALT=$IMAGE_UUID |
|
| 84 |
+ if [[ $NUM_IMAGES -gt 1 ]]; then |
|
| 85 |
+ IMAGE_UUID_ALT=${IMAGES[1]}
|
|
| 86 |
+ fi |
|
| 87 |
+ |
|
| 88 |
+ # Create tempest.conf from tempest.conf.sample |
|
| 89 |
+ # copy every time, because the image UUIDS are going to change |
|
| 90 |
+ cp $TEMPEST_CONF.sample $TEMPEST_CONF |
|
| 91 |
+ |
|
| 92 |
+ IDENTITY_USE_SSL=${IDENTITY_USE_SSL:-False}
|
|
| 93 |
+ IDENTITY_HOST=${IDENTITY_HOST:-127.0.0.1}
|
|
| 94 |
+ IDENTITY_PORT=${IDENTITY_PORT:-5000}
|
|
| 95 |
+ # TODO(jaypipes): This is dumb and needs to be removed |
|
| 96 |
+ # from the Tempest configuration file entirely... |
|
| 97 |
+ IDENTITY_PATH=${IDENTITY_PATH:-tokens}
|
|
| 98 |
+ |
|
| 99 |
+ PASSWORD=${ADMIN_PASSWORD:-secrete}
|
|
| 100 |
+ |
|
| 101 |
+ # See files/keystone_data.sh where alt_demo user |
|
| 102 |
+ # and tenant are set up... |
|
| 103 |
+ ALT_USERNAME=${ALT_USERNAME:-alt_demo}
|
|
| 104 |
+ ALT_TENANT_NAME=${ALT_TENANT_NAME:-alt_demo}
|
|
| 105 |
+ |
|
| 106 |
+ # Check Nova for existing flavors and, if set, look for the |
|
| 107 |
+ # DEFAULT_INSTANCE_TYPE and use that. Otherwise, just use the first flavor. |
|
| 108 |
+ FLAVOR_LINES=`nova flavor-list` |
|
| 109 |
+ IFS="$(echo -e "\n\r")" |
|
| 110 |
+ FLAVORS="" |
|
| 111 |
+ for line in $FLAVOR_LINES; do |
|
| 112 |
+ if [ -z $DEFAULT_INSTANCE_TYPE ]; then |
|
| 113 |
+ FLAVORS="$FLAVORS `echo $line | grep -v "^\(|\s*ID\|+--\)" | cut -d' ' -f2`" |
|
| 114 |
+ else |
|
| 115 |
+ FLAVORS="$FLAVORS `echo $line | grep -v "^\(|\s*ID\|+--\)" | grep "$DEFAULT_INSTANCE_TYPE" | cut -d' ' -f2`" |
|
| 116 |
+ fi |
|
| 117 |
+ done |
|
| 118 |
+ |
|
| 119 |
+ IFS=" " |
|
| 120 |
+ FLAVORS=($FLAVORS) |
|
| 121 |
+ NUM_FLAVORS=${#FLAVORS[*]}
|
|
| 122 |
+ echo "Found $NUM_FLAVORS flavors" |
|
| 123 |
+ if [[ $NUM_FLAVORS -eq 0 ]]; then |
|
| 124 |
+ echo "Found no valid flavors to use!" |
|
| 125 |
+ exit 1 |
|
| 126 |
+ fi |
|
| 127 |
+ FLAVOR_REF=${FLAVORS[0]}
|
|
| 128 |
+ FLAVOR_REF_ALT=$FLAVOR_REF |
|
| 129 |
+ if [[ $NUM_FLAVORS -gt 1 ]]; then |
|
| 130 |
+ FLAVOR_REF_ALT=${FLAVORS[1]}
|
|
| 131 |
+ fi |
|
| 132 |
+ |
|
| 133 |
+ # Timeouts |
|
| 134 |
+ iniset $TEMPEST_CONF compute build_timeout $BUILD_TIMEOUT |
|
| 135 |
+ iniset $TEMPEST_CONF volume build_timeout $BUILD_TIMEOUT |
|
| 136 |
+ iniset $TEMPEST_CONF boto build_timeout $BUILD_TIMEOUT |
|
| 137 |
+ iniset $TEMPEST_CONF compute build_interval $BUILD_INTERVAL |
|
| 138 |
+ iniset $TEMPEST_CONF volume build_interval $BUILD_INTERVAL |
|
| 139 |
+ iniset $TEMPEST_CONF boto build_interval $BUILD_INTERVAL |
|
| 140 |
+ iniset $TEMPEST_CONF boto http_socket_timeout 5 |
|
| 141 |
+ |
|
| 142 |
+ iniset $TEMPEST_CONF identity use_ssl $IDENTITY_USE_SSL |
|
| 143 |
+ iniset $TEMPEST_CONF identity host $IDENTITY_HOST |
|
| 144 |
+ iniset $TEMPEST_CONF identity port $IDENTITY_PORT |
|
| 145 |
+ iniset $TEMPEST_CONF identity path $IDENTITY_PATH |
|
| 146 |
+ |
|
| 147 |
+ iniset $TEMPEST_CONF compute password "$PASSWORD" |
|
| 148 |
+ iniset $TEMPEST_CONF compute alt_username $ALT_USERNAME |
|
| 149 |
+ iniset $TEMPEST_CONF compute alt_password "$PASSWORD" |
|
| 150 |
+ iniset $TEMPEST_CONF compute alt_tenant_name $ALT_TENANT_NAME |
|
| 151 |
+ iniset $TEMPEST_CONF compute resize_available False |
|
| 152 |
+ iniset $TEMPEST_CONF compute change_password_available False |
|
| 153 |
+ iniset $TEMPEST_CONF compute compute_log_level ERROR |
|
| 154 |
+ #Skip until #1074039 is fixed |
|
| 155 |
+ iniset $TEMPEST_CONF compute run_ssh False |
|
| 156 |
+ iniset $TEMPEST_CONF compute ssh_user ${DEFAULT_INSTANCE_USER:-$OS_USERNAME}
|
|
| 157 |
+ iniset $TEMPEST_CONF compute network_for_ssh private |
|
| 158 |
+ iniset $TEMPEST_CONF compute ip_version_for_ssh 4 |
|
| 159 |
+ iniset $TEMPEST_CONF compute ssh_timeout 4 |
|
| 160 |
+ iniset $TEMPEST_CONF compute image_ref $IMAGE_UUID |
|
| 161 |
+ iniset $TEMPEST_CONF compute image_ref_alt $IMAGE_UUID_ALT |
|
| 162 |
+ iniset $TEMPEST_CONF compute flavor_ref $FLAVOR_REF |
|
| 163 |
+ iniset $TEMPEST_CONF compute flavor_ref_alt $FLAVOR_REF_ALT |
|
| 164 |
+ iniset $TEMPEST_CONF compute source_dir $NOVA_SOURCE_DIR |
|
| 165 |
+ iniset $TEMPEST_CONF compute live_migration_available ${LIVE_MIGRATION_AVAILABLE:-False}
|
|
| 166 |
+ iniset $TEMPEST_CONF compute use_block_migration_for_live_migration ${USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION:-False}
|
|
| 167 |
+ # Inherited behavior, might be wrong |
|
| 168 |
+ iniset $TEMPEST_CONF compute bin_dir $NOVA_BIN_DIR |
|
| 169 |
+ # TODO(jaypipes): Create the key file here... right now, no whitebox |
|
| 170 |
+ # tests actually use a key. |
|
| 171 |
+ iniset $TEMPEST_CONF compute path_to_private_key $TEMPEST_DIR/id_rsa |
|
| 172 |
+ iniset $TEMPEST_CONF compute db_uri $BASE_SQL_CONN/nova |
|
| 173 |
+ |
|
| 174 |
+ # image |
|
| 175 |
+ iniset $TEMPEST_CONF image host ${IMAGE_HOST:-127.0.0.1}
|
|
| 176 |
+ iniset $TEMPEST_CONF image port ${IMAGE_PORT:-9292}
|
|
| 177 |
+ iniset $TEMPEST_CONF image password "$PASSWORD" |
|
| 178 |
+ |
|
| 179 |
+ # identity-admin |
|
| 180 |
+ iniset $TEMPEST_CONF "identity-admin" password "$PASSWORD" |
|
| 181 |
+ |
|
| 182 |
+ # compute admin |
|
| 183 |
+ iniset $TEMPEST_CONF "compute-admin" password "$PASSWORD" |
|
| 184 |
+ |
|
| 185 |
+ # network |
|
| 186 |
+ iniset $TEMPEST_CONF network api_version 2.0 |
|
| 187 |
+ |
|
| 188 |
+ #boto |
|
| 189 |
+ iniset $TEMPEST_CONF boto ec2_url "http://$SERVICE_HOST:8773/services/Cloud" |
|
| 190 |
+ iniset $TEMPEST_CONF boto s3_url "http://$SERVICE_HOST:${S3_SERVICE_PORT:-3333}"
|
|
| 191 |
+ |
|
| 192 |
+ echo "Created tempest configuration file:" |
|
| 193 |
+ cat $TEMPEST_CONF |
|
| 194 |
+ |
|
| 195 |
+ # Restore IFS |
|
| 196 |
+ IFS=$ifs |
|
| 197 |
+ #Restore errexit |
|
| 198 |
+ $errexit |
|
| 46 | 199 |
} |
| 47 | 200 |
|
| 48 | 201 |
|
| ... | ... |
@@ -55,6 +226,5 @@ function install_tempest() {
|
| 55 | 55 |
pip_install -r $TEMPEST_DIR/tools/pip-requires |
| 56 | 56 |
} |
| 57 | 57 |
|
| 58 |
- |
|
| 59 | 58 |
# Restore xtrace |
| 60 | 59 |
$XTRACE |
| ... | ... |
@@ -1712,7 +1712,11 @@ fi |
| 1712 | 1712 |
# Configure Tempest last to ensure that the runtime configuration of |
| 1713 | 1713 |
# the various OpenStack services can be queried. |
| 1714 | 1714 |
if is_service_enabled tempest; then |
| 1715 |
+ echo_summary "Configuring Tempest" |
|
| 1715 | 1716 |
configure_tempest |
| 1717 |
+ echo '**************************************************' |
|
| 1718 |
+ echo_summary "Finished Configuring Tempest" |
|
| 1719 |
+ echo '**************************************************' |
|
| 1716 | 1720 |
fi |
| 1717 | 1721 |
|
| 1718 | 1722 |
|
| ... | ... |
@@ -1,309 +1,3 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 |
-# |
|
| 3 |
-# **configure_tempest.sh** |
|
| 4 | 2 |
|
| 5 |
-# Build a tempest configuration file from devstack |
|
| 6 |
- |
|
| 7 |
-echo "**************************************************" |
|
| 8 |
-echo "Configuring Tempest" |
|
| 9 |
-echo "**************************************************" |
|
| 10 |
- |
|
| 11 |
-# This script exits on an error so that errors don't compound and you see |
|
| 12 |
-# only the first error that occured. |
|
| 13 |
-set -o errexit |
|
| 14 |
- |
|
| 15 |
-# Print the commands being run so that we can see the command that triggers |
|
| 16 |
-# an error. It is also useful for following allowing as the install occurs. |
|
| 17 |
-set -o xtrace |
|
| 18 |
- |
|
| 19 |
-function usage {
|
|
| 20 |
- echo "$0 - Build tempest.conf" |
|
| 21 |
- echo "" |
|
| 22 |
- echo "Usage: $0" |
|
| 23 |
- exit 1 |
|
| 24 |
-} |
|
| 25 |
- |
|
| 26 |
-if [ "$1" = "-h" ]; then |
|
| 27 |
- usage |
|
| 28 |
-fi |
|
| 29 |
- |
|
| 30 |
-# Keep track of the current directory |
|
| 31 |
-TOOLS_DIR=$(cd $(dirname "$0") && pwd) |
|
| 32 |
-TOP_DIR=$(cd $TOOLS_DIR/..; pwd) |
|
| 33 |
- |
|
| 34 |
-# Import common functions |
|
| 35 |
-. $TOP_DIR/functions |
|
| 36 |
- |
|
| 37 |
-# Abort if localrc is not set |
|
| 38 |
-if [ ! -e $TOP_DIR/localrc ]; then |
|
| 39 |
- echo "You must have a localrc with necessary basic configuration defined before proceeding." |
|
| 40 |
- exit 1 |
|
| 41 |
-fi |
|
| 42 |
- |
|
| 43 |
-# Abort if openrc is not set |
|
| 44 |
-if [ ! -e $TOP_DIR/openrc ]; then |
|
| 45 |
- echo "You must have an openrc with ALL necessary passwords and credentials defined before proceeding." |
|
| 46 |
- exit 1 |
|
| 47 |
-fi |
|
| 48 |
- |
|
| 49 |
-# Source params |
|
| 50 |
-source $TOP_DIR/lib/database |
|
| 51 |
-source $TOP_DIR/openrc |
|
| 52 |
- |
|
| 53 |
-# Where Openstack code lives |
|
| 54 |
-DEST=${DEST:-/opt/stack}
|
|
| 55 |
- |
|
| 56 |
-NOVA_SOURCE_DIR=$DEST/nova |
|
| 57 |
-TEMPEST_DIR=$DEST/tempest |
|
| 58 |
-CONFIG_DIR=$TEMPEST_DIR/etc |
|
| 59 |
-TEMPEST_CONF=$CONFIG_DIR/tempest.conf |
|
| 60 |
- |
|
| 61 |
-DATABASE_TYPE=${DATABASE_TYPE:-mysql}
|
|
| 62 |
-initialize_database_backends |
|
| 63 |
- |
|
| 64 |
-# Use the GUEST_IP unless an explicit IP is set by ``HOST_IP`` |
|
| 65 |
-HOST_IP=${HOST_IP:-$GUEST_IP}
|
|
| 66 |
-# Use the first IP if HOST_IP still is not set |
|
| 67 |
-if [ ! -n "$HOST_IP" ]; then |
|
| 68 |
- HOST_IP=`LC_ALL=C /sbin/ifconfig | grep -m 1 'inet addr:'| cut -d: -f2 | awk '{print $1}'`
|
|
| 69 |
-fi |
|
| 70 |
- |
|
| 71 |
-# Glance should already contain images to be used in tempest |
|
| 72 |
-# testing. Here we simply look for images stored in Glance |
|
| 73 |
-# and set the appropriate variables for use in the tempest config |
|
| 74 |
-# We ignore ramdisk and kernel images, look for the default image |
|
| 75 |
-# DEFAULT_IMAGE_NAME. If not found, we set the IMAGE_UUID to the |
|
| 76 |
-# first image returned and set IMAGE_UUID_ALT to the second, |
|
| 77 |
-# if there is more than one returned... |
|
| 78 |
-# ... Also ensure we only take active images, so we don't get snapshots in process |
|
| 79 |
-IMAGE_LINES=`glance image-list` |
|
| 80 |
-IFS="$(echo -e "\n\r")" |
|
| 81 |
-IMAGES="" |
|
| 82 |
-for line in $IMAGE_LINES; do |
|
| 83 |
- if [ -z $DEFAULT_IMAGE_NAME ]; then |
|
| 84 |
- IMAGES="$IMAGES `echo $line | grep -v "^\(ID\|+--\)" | grep -v "\(aki\|ari\)" | grep 'active' | cut -d' ' -f2`" |
|
| 85 |
- else |
|
| 86 |
- IMAGES="$IMAGES `echo $line | grep -v "^\(ID\|+--\)" | grep -v "\(aki\|ari\)" | grep 'active' | grep "$DEFAULT_IMAGE_NAME" | cut -d' ' -f2`" |
|
| 87 |
- fi |
|
| 88 |
-done |
|
| 89 |
-# Create array of image UUIDs... |
|
| 90 |
-IFS=" " |
|
| 91 |
-IMAGES=($IMAGES) |
|
| 92 |
-NUM_IMAGES=${#IMAGES[*]}
|
|
| 93 |
-echo "Found $NUM_IMAGES images" |
|
| 94 |
-if [[ $NUM_IMAGES -eq 0 ]]; then |
|
| 95 |
- echo "Found no valid images to use!" |
|
| 96 |
- exit 1 |
|
| 97 |
-fi |
|
| 98 |
-IMAGE_UUID=${IMAGES[0]}
|
|
| 99 |
-IMAGE_UUID_ALT=$IMAGE_UUID |
|
| 100 |
-if [[ $NUM_IMAGES -gt 1 ]]; then |
|
| 101 |
- IMAGE_UUID_ALT=${IMAGES[1]}
|
|
| 102 |
-fi |
|
| 103 |
- |
|
| 104 |
-# Create tempest.conf from tempest.conf.tpl |
|
| 105 |
-# copy every time, because the image UUIDS are going to change |
|
| 106 |
-cp $TEMPEST_CONF.tpl $TEMPEST_CONF |
|
| 107 |
- |
|
| 108 |
-COMPUTE_ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
|
|
| 109 |
-COMPUTE_ADMIN_PASSWORD=${ADMIN_PASSWORD:-secrete}
|
|
| 110 |
-COMPUTE_ADMIN_TENANT_NAME=${ADMIN_TENANT:-admin}
|
|
| 111 |
- |
|
| 112 |
-IDENTITY_ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
|
|
| 113 |
-IDENTITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-secrete}
|
|
| 114 |
-IDENTITY_ADMIN_TENANT_NAME=${ADMIN_TENANT:-admin}
|
|
| 115 |
- |
|
| 116 |
-IDENTITY_USE_SSL=${IDENTITY_USE_SSL:-False}
|
|
| 117 |
-IDENTITY_HOST=${IDENTITY_HOST:-127.0.0.1}
|
|
| 118 |
-IDENTITY_PORT=${IDENTITY_PORT:-5000}
|
|
| 119 |
-IDENTITY_API_VERSION="v2.0" # Note: need v for now... |
|
| 120 |
-# TODO(jaypipes): This is dumb and needs to be removed |
|
| 121 |
-# from the Tempest configuration file entirely... |
|
| 122 |
-IDENTITY_PATH=${IDENTITY_PATH:-tokens}
|
|
| 123 |
-IDENTITY_STRATEGY=${IDENTITY_STRATEGY:-keystone}
|
|
| 124 |
-IDENTITY_CATALOG_TYPE=identity |
|
| 125 |
- |
|
| 126 |
-# We use regular, non-admin users in Tempest for the USERNAME |
|
| 127 |
-# substitutions and use ADMIN_USERNAME et al for the admin stuff. |
|
| 128 |
-# OS_USERNAME et all should be defined in openrc. |
|
| 129 |
-OS_USERNAME=${OS_USERNAME:-demo}
|
|
| 130 |
-OS_TENANT_NAME=${OS_TENANT_NAME:-demo}
|
|
| 131 |
-OS_PASSWORD=${OS_PASSWORD:-$ADMIN_PASSWORD}
|
|
| 132 |
- |
|
| 133 |
-# See files/keystone_data.sh where alt_demo user |
|
| 134 |
-# and tenant are set up... |
|
| 135 |
-ALT_USERNAME=${ALT_USERNAME:-alt_demo}
|
|
| 136 |
-ALT_TENANT_NAME=${ALT_TENANT_NAME:-alt_demo}
|
|
| 137 |
-ALT_PASSWORD=$OS_PASSWORD |
|
| 138 |
- |
|
| 139 |
-# Check Nova for existing flavors and, if set, look for the |
|
| 140 |
-# DEFAULT_INSTANCE_TYPE and use that. Otherwise, just use the first flavor. |
|
| 141 |
-FLAVOR_LINES=`nova flavor-list` |
|
| 142 |
-IFS="$(echo -e "\n\r")" |
|
| 143 |
-FLAVORS="" |
|
| 144 |
-for line in $FLAVOR_LINES; do |
|
| 145 |
- if [ -z $DEFAULT_INSTANCE_TYPE ]; then |
|
| 146 |
- FLAVORS="$FLAVORS `echo $line | grep -v "^\(|\s*ID\|+--\)" | cut -d' ' -f2`" |
|
| 147 |
- else |
|
| 148 |
- FLAVORS="$FLAVORS `echo $line | grep -v "^\(|\s*ID\|+--\)" | grep "$DEFAULT_INSTANCE_TYPE" | cut -d' ' -f2`" |
|
| 149 |
- fi |
|
| 150 |
-done |
|
| 151 |
-IFS=" " |
|
| 152 |
-FLAVORS=($FLAVORS) |
|
| 153 |
-NUM_FLAVORS=${#FLAVORS[*]}
|
|
| 154 |
-echo "Found $NUM_FLAVORS flavors" |
|
| 155 |
-if [[ $NUM_FLAVORS -eq 0 ]]; then |
|
| 156 |
- echo "Found no valid flavors to use!" |
|
| 157 |
- exit 1 |
|
| 158 |
-fi |
|
| 159 |
-FLAVOR_REF=${FLAVORS[0]}
|
|
| 160 |
-FLAVOR_REF_ALT=$FLAVOR_REF |
|
| 161 |
-if [[ $NUM_FLAVORS -gt 1 ]]; then |
|
| 162 |
- FLAVOR_REF_ALT=${FLAVORS[1]}
|
|
| 163 |
-fi |
|
| 164 |
- |
|
| 165 |
-# Do any of the following need to be configurable? |
|
| 166 |
-COMPUTE_CATALOG_TYPE=compute |
|
| 167 |
-COMPUTE_CREATE_IMAGE_ENABLED=True |
|
| 168 |
-COMPUTE_ALLOW_TENANT_ISOLATION=True |
|
| 169 |
-COMPUTE_ALLOW_TENANT_REUSE=True |
|
| 170 |
-COMPUTE_RESIZE_AVAILABLE=False |
|
| 171 |
-COMPUTE_CHANGE_PASSWORD_AVAILABLE=False # not supported with QEMU... |
|
| 172 |
-COMPUTE_LOG_LEVEL=ERROR |
|
| 173 |
-BUILD_INTERVAL=3 |
|
| 174 |
-BUILD_TIMEOUT=400 |
|
| 175 |
-COMPUTE_BUILD_INTERVAL=3 |
|
| 176 |
-COMPUTE_BUILD_TIMEOUT=400 |
|
| 177 |
-VOLUME_BUILD_INTERVAL=3 |
|
| 178 |
-VOLUME_BUILD_TIMEOUT=300 |
|
| 179 |
-RUN_SSH=True |
|
| 180 |
-# Check for DEFAULT_INSTANCE_USER and try to connect with that account |
|
| 181 |
-SSH_USER=${DEFAULT_INSTANCE_USER:-$OS_USERNAME}
|
|
| 182 |
-NETWORK_FOR_SSH=private |
|
| 183 |
-IP_VERSION_FOR_SSH=4 |
|
| 184 |
-SSH_TIMEOUT=4 |
|
| 185 |
-# Whitebox testing configuration for Compute... |
|
| 186 |
-COMPUTE_WHITEBOX_ENABLED=True |
|
| 187 |
-COMPUTE_SOURCE_DIR=$NOVA_SOURCE_DIR |
|
| 188 |
-COMPUTE_BIN_DIR=$NOVA_BIN_DIR |
|
| 189 |
-COMPUTE_CONFIG_PATH=/etc/nova/nova.conf |
|
| 190 |
-# TODO(jaypipes): Create the key file here... right now, no whitebox |
|
| 191 |
-# tests actually use a key. |
|
| 192 |
-COMPUTE_PATH_TO_PRIVATE_KEY=$TEMPEST_DIR/id_rsa |
|
| 193 |
-COMPUTE_DB_URI=$BASE_SQL_CONN/nova |
|
| 194 |
- |
|
| 195 |
-# Image test configuration options... |
|
| 196 |
-IMAGE_HOST=${IMAGE_HOST:-127.0.0.1}
|
|
| 197 |
-IMAGE_PORT=${IMAGE_PORT:-9292}
|
|
| 198 |
-IMAGE_API_VERSION=1 |
|
| 199 |
-IMAGE_CATALOG_TYPE=image |
|
| 200 |
- |
|
| 201 |
-# Network API test configuration |
|
| 202 |
-NETWORK_CATALOG_TYPE=network |
|
| 203 |
-NETWORK_API_VERSION=2.0 |
|
| 204 |
- |
|
| 205 |
-# Volume API test configuration |
|
| 206 |
-VOLUME_CATALOG_TYPE=volume |
|
| 207 |
- |
|
| 208 |
-# Live migration |
|
| 209 |
-LIVE_MIGRATION_AVAILABLE=${LIVE_MIGRATION_AVAILABLE:-False}
|
|
| 210 |
-USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION=${USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION:-False}
|
|
| 211 |
- |
|
| 212 |
-# Object Storage |
|
| 213 |
-OBJECT_CATALOG_TYPE="object-store" |
|
| 214 |
- |
|
| 215 |
-# EC2 and S3 test configuration |
|
| 216 |
-BOTO_EC2_URL="http://$IDENTITY_HOST:8773/services/Cloud" |
|
| 217 |
-BOTO_S3_URL="http://$IDENTITY_HOST:3333" |
|
| 218 |
-BOTO_AWS_ACCESS="" # Created in tempest... |
|
| 219 |
-BOTO_AWS_SECRET="" # Created in tempest... |
|
| 220 |
-BOTO_AWS_REGION="RegionOne" |
|
| 221 |
-BOTO_S3_MATERIALS_PATH=$DEST/devstack/files/images/s3-materials/cirros-0.3.0 |
|
| 222 |
-BOTO_ARI_MANIFEST=cirros-0.3.0-x86_64-initrd.manifest.xml |
|
| 223 |
-BOTO_AMI_MANIFEST=cirros-0.3.0-x86_64-blank.img.manifest.xml |
|
| 224 |
-BOTO_AKI_MANIFEST=cirros-0.3.0-x86_64-vmlinuz.manifest.xml |
|
| 225 |
-BOTO_FLAVOR_NAME=m1.tiny |
|
| 226 |
-BOTO_SOCKET_TIMEOUT=5 |
|
| 227 |
-BOTO_BUILD_TIMEOUT=${COMPUTE_BUILD_TIMEOUT:-400}
|
|
| 228 |
-BOTO_BUILD_INTERVAL=${COMPUTE_BUILD_INTERVAL:-3}
|
|
| 229 |
- |
|
| 230 |
-sed -e " |
|
| 231 |
- s,%IDENTITY_USE_SSL%,$IDENTITY_USE_SSL,g; |
|
| 232 |
- s,%IDENTITY_HOST%,$IDENTITY_HOST,g; |
|
| 233 |
- s,%IDENTITY_PORT%,$IDENTITY_PORT,g; |
|
| 234 |
- s,%IDENTITY_API_VERSION%,$IDENTITY_API_VERSION,g; |
|
| 235 |
- s,%IDENTITY_PATH%,$IDENTITY_PATH,g; |
|
| 236 |
- s,%IDENTITY_STRATEGY%,$IDENTITY_STRATEGY,g; |
|
| 237 |
- s,%IDENTITY_CATALOG_TYPE%,$IDENTITY_CATALOG_TYPE,g; |
|
| 238 |
- s,%USERNAME%,$OS_USERNAME,g; |
|
| 239 |
- s,%PASSWORD%,$OS_PASSWORD,g; |
|
| 240 |
- s,%TENANT_NAME%,$OS_TENANT_NAME,g; |
|
| 241 |
- s,%ALT_USERNAME%,$ALT_USERNAME,g; |
|
| 242 |
- s,%ALT_PASSWORD%,$ALT_PASSWORD,g; |
|
| 243 |
- s,%ALT_TENANT_NAME%,$ALT_TENANT_NAME,g; |
|
| 244 |
- s,%COMPUTE_CATALOG_TYPE%,$COMPUTE_CATALOG_TYPE,g; |
|
| 245 |
- s,%COMPUTE_ALLOW_TENANT_ISOLATION%,$COMPUTE_ALLOW_TENANT_ISOLATION,g; |
|
| 246 |
- s,%COMPUTE_ALLOW_TENANT_REUSE%,$COMPUTE_ALLOW_TENANT_REUSE,g; |
|
| 247 |
- s,%COMPUTE_CREATE_IMAGE_ENABLED%,$COMPUTE_CREATE_IMAGE_ENABLED,g; |
|
| 248 |
- s,%COMPUTE_RESIZE_AVAILABLE%,$COMPUTE_RESIZE_AVAILABLE,g; |
|
| 249 |
- s,%COMPUTE_CHANGE_PASSWORD_AVAILABLE%,$COMPUTE_CHANGE_PASSWORD_AVAILABLE,g; |
|
| 250 |
- s,%COMPUTE_WHITEBOX_ENABLED%,$COMPUTE_WHITEBOX_ENABLED,g; |
|
| 251 |
- s,%COMPUTE_LOG_LEVEL%,$COMPUTE_LOG_LEVEL,g; |
|
| 252 |
- s,%BUILD_INTERVAL%,$BUILD_INTERVAL,g; |
|
| 253 |
- s,%BUILD_TIMEOUT%,$BUILD_TIMEOUT,g; |
|
| 254 |
- s,%COMPUTE_BUILD_INTERVAL%,$COMPUTE_BUILD_INTERVAL,g; |
|
| 255 |
- s,%COMPUTE_BUILD_TIMEOUT%,$COMPUTE_BUILD_TIMEOUT,g; |
|
| 256 |
- s,%RUN_SSH%,$RUN_SSH,g; |
|
| 257 |
- s,%SSH_USER%,$SSH_USER,g; |
|
| 258 |
- s,%NETWORK_FOR_SSH%,$NETWORK_FOR_SSH,g; |
|
| 259 |
- s,%IP_VERSION_FOR_SSH%,$IP_VERSION_FOR_SSH,g; |
|
| 260 |
- s,%SSH_TIMEOUT%,$SSH_TIMEOUT,g; |
|
| 261 |
- s,%IMAGE_ID%,$IMAGE_UUID,g; |
|
| 262 |
- s,%IMAGE_ID_ALT%,$IMAGE_UUID_ALT,g; |
|
| 263 |
- s,%FLAVOR_REF%,$FLAVOR_REF,g; |
|
| 264 |
- s,%FLAVOR_REF_ALT%,$FLAVOR_REF_ALT,g; |
|
| 265 |
- s,%COMPUTE_CONFIG_PATH%,$COMPUTE_CONFIG_PATH,g; |
|
| 266 |
- s,%COMPUTE_SOURCE_DIR%,$COMPUTE_SOURCE_DIR,g; |
|
| 267 |
- s,%COMPUTE_BIN_DIR%,$COMPUTE_BIN_DIR,g; |
|
| 268 |
- s,%COMPUTE_PATH_TO_PRIVATE_KEY%,$COMPUTE_PATH_TO_PRIVATE_KEY,g; |
|
| 269 |
- s,%COMPUTE_DB_URI%,$COMPUTE_DB_URI,g; |
|
| 270 |
- s,%IMAGE_HOST%,$IMAGE_HOST,g; |
|
| 271 |
- s,%IMAGE_PORT%,$IMAGE_PORT,g; |
|
| 272 |
- s,%IMAGE_API_VERSION%,$IMAGE_API_VERSION,g; |
|
| 273 |
- s,%IMAGE_CATALOG_TYPE%,$IMAGE_CATALOG_TYPE,g; |
|
| 274 |
- s,%COMPUTE_ADMIN_USERNAME%,$COMPUTE_ADMIN_USERNAME,g; |
|
| 275 |
- s,%COMPUTE_ADMIN_PASSWORD%,$COMPUTE_ADMIN_PASSWORD,g; |
|
| 276 |
- s,%COMPUTE_ADMIN_TENANT_NAME%,$COMPUTE_ADMIN_TENANT_NAME,g; |
|
| 277 |
- s,%IDENTITY_ADMIN_USERNAME%,$IDENTITY_ADMIN_USERNAME,g; |
|
| 278 |
- s,%IDENTITY_ADMIN_PASSWORD%,$IDENTITY_ADMIN_PASSWORD,g; |
|
| 279 |
- s,%IDENTITY_ADMIN_TENANT_NAME%,$IDENTITY_ADMIN_TENANT_NAME,g; |
|
| 280 |
- s,%NETWORK_CATALOG_TYPE%,$NETWORK_CATALOG_TYPE,g; |
|
| 281 |
- s,%NETWORK_API_VERSION%,$NETWORK_API_VERSION,g; |
|
| 282 |
- s,%VOLUME_CATALOG_TYPE%,$VOLUME_CATALOG_TYPE,g; |
|
| 283 |
- s,%VOLUME_BUILD_INTERVAL%,$VOLUME_BUILD_INTERVAL,g; |
|
| 284 |
- s,%VOLUME_BUILD_TIMEOUT%,$VOLUME_BUILD_TIMEOUT,g; |
|
| 285 |
- s,%LIVE_MIGRATION_AVAILABLE%,$LIVE_MIGRATION_AVAILABLE,g; |
|
| 286 |
- s,%USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION%,$USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION,g; |
|
| 287 |
- s,%OBJECT_CATALOG_TYPE%,$OBJECT_CATALOG_TYPE,g; |
|
| 288 |
- s,%BOTO_EC2_URL%,$BOTO_EC2_URL,g; |
|
| 289 |
- s,%BOTO_S3_URL%,$BOTO_S3_URL,g; |
|
| 290 |
- s,%BOTO_AWS_ACCESS%,$BOTO_AWS_ACCESS,g; |
|
| 291 |
- s,%BOTO_AWS_SECRET%,$BOTO_AWS_SECRET,g; |
|
| 292 |
- s,%BOTO_AWS_REGION%,$BOTO_AWS_REGION,g; |
|
| 293 |
- s,%BOTO_S3_MATERIALS_PATH%,$BOTO_S3_MATERIALS_PATH,g; |
|
| 294 |
- s,%BOTO_ARI_MANIFEST%,$BOTO_ARI_MANIFEST,g; |
|
| 295 |
- s,%BOTO_AMI_MANIFEST%,$BOTO_AMI_MANIFEST,g; |
|
| 296 |
- s,%BOTO_AKI_MANIFEST%,$BOTO_AKI_MANIFEST,g; |
|
| 297 |
- s,%BOTO_FLAVOR_NAME%,$BOTO_FLAVOR_NAME,g; |
|
| 298 |
- s,%BOTO_SOCKET_TIMEOUT%,$BOTO_SOCKET_TIMEOUT,g; |
|
| 299 |
- s,%BOTO_BUILD_TIMEOUT%,$BOTO_BUILD_TIMEOUT,g; |
|
| 300 |
- s,%BOTO_BUILD_INTERVAL%,$BOTO_BUILD_INTERVAL,g; |
|
| 301 |
-" -i $TEMPEST_CONF |
|
| 302 |
- |
|
| 303 |
-echo "Created tempest configuration file:" |
|
| 304 |
-cat $TEMPEST_CONF |
|
| 305 |
- |
|
| 306 |
-echo "\n" |
|
| 307 |
-echo "**************************************************" |
|
| 308 |
-echo "Finished Configuring Tempest" |
|
| 309 |
-echo "**************************************************" |
|
| 3 |
+echo "$0 is scheduled for delete!!" >&2 |