Merge "Add an ability to configure debug-level for ceilometer"
diff --git a/extras.d/80-opendaylight.sh b/extras.d/80-opendaylight.sh
new file mode 100644
index 0000000..cc5c8de
--- /dev/null
+++ b/extras.d/80-opendaylight.sh
@@ -0,0 +1,67 @@
+# opendaylight.sh - DevStack extras script
+
+# Need this first to get the is_***_enabled for ODL
+source $TOP_DIR/lib/opendaylight
+
+if is_service_enabled odl-server; then
+ if [[ "$1" == "source" ]]; then
+ # no-op
+ :
+ elif [[ "$1" == "stack" && "$2" == "install" ]]; then
+ install_opendaylight
+ configure_opendaylight
+ init_opendaylight
+ elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
+ # This has to start before Neutron
+ start_opendaylight
+ elif [[ "$1" == "stack" && "$2" == "post-extra" ]]; then
+ # no-op
+ :
+ fi
+
+ if [[ "$1" == "unstack" ]]; then
+ stop_opendaylight
+ cleanup_opendaylight
+ fi
+
+ if [[ "$1" == "clean" ]]; then
+ # no-op
+ :
+ fi
+fi
+
+if is_service_enabled odl-compute; then
+ if [[ "$1" == "source" ]]; then
+ # no-op
+ :
+ elif [[ "$1" == "stack" && "$2" == "install" ]]; then
+ install_opendaylight-compute
+ elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
+ create_nova_conf_neutron
+ elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
+ echo_summary "Initializing OpenDaylight"
+ ODL_LOCAL_IP=${ODL_LOCAL_IP:-$HOST_IP}
+ ODL_MGR_PORT=${ODL_MGR_PORT:-6640}
+ read ovstbl <<< $(sudo ovs-vsctl get Open_vSwitch . _uuid)
+ sudo ovs-vsctl set-manager tcp:$ODL_MGR_IP:$ODL_MGR_PORT
+ sudo ovs-vsctl set Open_vSwitch $ovstbl other_config={"local_ip"="$ODL_LOCAL_IP"}
+ elif [[ "$1" == "stack" && "$2" == "post-extra" ]]; then
+ # no-op
+ :
+ fi
+
+ if [[ "$1" == "unstack" ]]; then
+ sudo ovs-vsctl del-manager
+ BRIDGES=$(sudo ovs-vsctl list-br)
+ for bridge in $BRIDGES ; do
+ sudo ovs-vsctl del-controller $bridge
+ done
+
+ stop_opendaylight-compute
+ fi
+
+ if [[ "$1" == "clean" ]]; then
+ # no-op
+ :
+ fi
+fi
diff --git a/files/apts/opendaylight b/files/apts/opendaylight
new file mode 100644
index 0000000..ec3cc9d
--- /dev/null
+++ b/files/apts/opendaylight
@@ -0,0 +1,2 @@
+openvswitch-datapath-dkms # NOPRIME
+openvswitch-switch # NOPRIME
diff --git a/files/keystone_data.sh b/files/keystone_data.sh
index 9a34c76..fc1e813 100755
--- a/files/keystone_data.sh
+++ b/files/keystone_data.sh
@@ -53,41 +53,6 @@
--role ResellerAdmin
fi
-# Heat
-if [[ "$ENABLED_SERVICES" =~ "heat" ]]; then
- keystone user-create --name=heat \
- --pass="$SERVICE_PASSWORD" \
- --tenant $SERVICE_TENANT_NAME \
- --email=heat@example.com
- keystone user-role-add --tenant $SERVICE_TENANT_NAME \
- --user heat \
- --role service
- # heat_stack_user role is for users created by Heat
- keystone role-create --name heat_stack_user
- if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- keystone service-create \
- --name=heat-cfn \
- --type=cloudformation \
- --description="Heat CloudFormation Service"
- keystone endpoint-create \
- --region RegionOne \
- --service heat-cfn \
- --publicurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1" \
- --adminurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1" \
- --internalurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1"
- keystone service-create \
- --name=heat \
- --type=orchestration \
- --description="Heat Service"
- keystone endpoint-create \
- --region RegionOne \
- --service heat \
- --publicurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
- --adminurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
- --internalurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s"
- fi
-fi
-
# Glance
if [[ "$ENABLED_SERVICES" =~ "g-api" ]]; then
keystone user-create \
diff --git a/files/rpms-suse/baremetal b/files/rpms-suse/baremetal
new file mode 100644
index 0000000..61f73ee
--- /dev/null
+++ b/files/rpms-suse/baremetal
@@ -0,0 +1 @@
+dnsmasq
diff --git a/files/rpms-suse/general b/files/rpms-suse/general
index 704947e..6d994ea 100644
--- a/files/rpms-suse/general
+++ b/files/rpms-suse/general
@@ -1,15 +1,20 @@
+bc
bridge-utils
ca-certificates-mozilla
curl
euca2ools
+findutils-locate # useful when debugging
git-core
iputils
+libopenssl-devel # to rebuild pyOpenSSL if needed
+lsof # useful when debugging
+make
openssh
openssl
psmisc
-python-setuptools # instead of python-distribute; dist:sle11sp2
python-cmd2 # dist:opensuse-12.3
python-pylint
+python-setuptools # instead of python-distribute; dist:sle11sp2
python-unittest2
screen
tar
@@ -17,7 +22,3 @@
unzip
vim-enhanced
wget
-bc
-
-findutils-locate # useful when debugging
-lsof # useful when debugging
diff --git a/files/rpms-suse/opendaylight b/files/rpms-suse/opendaylight
new file mode 100644
index 0000000..d6c7146
--- /dev/null
+++ b/files/rpms-suse/opendaylight
@@ -0,0 +1,4 @@
+openvswitch # NOPRIME
+openvswitch-controller # NOPRIME
+openvswitch-switch # NOPRIME
+
diff --git a/files/rpms/opendaylight b/files/rpms/opendaylight
new file mode 100644
index 0000000..98aaaf4
--- /dev/null
+++ b/files/rpms/opendaylight
@@ -0,0 +1 @@
+openvswitch # NOPRIME
diff --git a/functions b/functions
index ab8319b..1d30922 100644
--- a/functions
+++ b/functions
@@ -163,38 +163,37 @@
if [[ ${IMAGE_NAME: -5} != "-flat" ]]; then
warn $LINENO "Expected filename suffix: '-flat'."`
`" Filename provided: ${IMAGE_NAME}"
- else
- descriptor_fname="${IMAGE_NAME:0:${#IMAGE_NAME} - 5}.vmdk"
- path_len=`expr ${#image_url} - ${#IMAGE_FNAME}`
- flat_path="${image_url:0:$path_len}"
- descriptor_url=$flat_path$descriptor_fname
- warn $LINENO "$descriptor_data_pair_msg"`
- `" Attempt to retrieve the descriptor *.vmdk: $descriptor_url"
- if [[ $flat_path != file* ]]; then
- if [[ ! -f $FILES/$descriptor_fname || \
- "$(stat -c "%s" $FILES/$descriptor_fname)" = "0" ]]; then
- wget -c $descriptor_url -O $FILES/$descriptor_fname
- if [[ $? -ne 0 ]]; then
- warn $LINENO "Descriptor not found $descriptor_url"
- descriptor_found=false
- fi
- fi
- descriptor_url="$FILES/$descriptor_fname"
- else
- descriptor_url=$(echo $descriptor_url | sed "s/^file:\/\///g")
- if [[ ! -f $descriptor_url || \
- "$(stat -c "%s" $descriptor_url)" == "0" ]]; then
+ fi
+
+ descriptor_fname="${IMAGE_NAME:0:${#IMAGE_NAME} - 5}.vmdk"
+ path_len=`expr ${#image_url} - ${#IMAGE_FNAME}`
+ flat_path="${image_url:0:$path_len}"
+ descriptor_url=$flat_path$descriptor_fname
+ warn $LINENO "$descriptor_data_pair_msg"`
+ `" Attempt to retrieve the descriptor *.vmdk: $descriptor_url"
+ if [[ $flat_path != file* ]]; then
+ if [[ ! -f $FILES/$descriptor_fname || \
+ "$(stat -c "%s" $FILES/$descriptor_fname)" = "0" ]]; then
+ wget -c $descriptor_url -O $FILES/$descriptor_fname
+ if [[ $? -ne 0 ]]; then
warn $LINENO "Descriptor not found $descriptor_url"
descriptor_found=false
fi
fi
- if $descriptor_found; then
- vmdk_adapter_type="$(head -25 $descriptor_url |"`
- `" { grep -a -F -m 1 'ddb.adapterType =' $descriptor_url || true; })"
- vmdk_adapter_type="${vmdk_adapter_type#*\"}"
- vmdk_adapter_type="${vmdk_adapter_type%?}"
+ descriptor_url="$FILES/$descriptor_fname"
+ else
+ descriptor_url=$(echo $descriptor_url | sed "s/^file:\/\///g")
+ if [[ ! -f $descriptor_url || \
+ "$(stat -c "%s" $descriptor_url)" == "0" ]]; then
+ warn $LINENO "Descriptor not found $descriptor_url"
+ descriptor_found=false
fi
fi
+ if $descriptor_found; then
+ vmdk_adapter_type="$(head -25 $descriptor_url | { grep -a -F -m 1 'ddb.adapterType =' $descriptor_url || true; })"
+ vmdk_adapter_type="${vmdk_adapter_type#*\"}"
+ vmdk_adapter_type="${vmdk_adapter_type%?}"
+ fi
vmdk_disktype="preallocated"
else
vmdk_disktype="preallocated"
diff --git a/lib/heat b/lib/heat
index d0c0302..42d1057 100644
--- a/lib/heat
+++ b/lib/heat
@@ -197,8 +197,49 @@
}
# create_heat_accounts() - Set up common required heat accounts
-# Note this is in addition to what is in files/keystone_data.sh
function create_heat_accounts {
+ # migrated from files/keystone_data.sh
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
+
+ HEAT_USER=$(openstack user create \
+ heat \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email heat@example.com \
+ | grep " id " | get_field 2)
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $HEAT_USER
+ if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
+ HEAT_SERVICE=$(openstack service create \
+ heat \
+ --type=orchestration \
+ --description="Heat Orchestration Service" \
+ | grep " id " | get_field 2)
+ openstack endpoint create \
+ $HEAT_SERVICE \
+ --region RegionOne \
+ --publicurl "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
+ --adminurl "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
+ --internalurl "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s"
+ HEAT_CFN_SERVICE=$(openstack service create \
+ heat \
+ --type=cloudformation \
+ --description="Heat CloudFormation Service" \
+ | grep " id " | get_field 2)
+ openstack endpoint create \
+ $HEAT_CFN_SERVICE \
+ --region RegionOne \
+ --publicurl "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1" \
+ --adminurl "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1" \
+ --internalurl "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1"
+ fi
+
+ # heat_stack_user role is for users created by Heat
+ openstack role create heat_stack_user
+
# Note we have to pass token/endpoint here because the current endpoint and
# version negotiation in OSC means just --os-identity-api-version=3 won't work
KS_ENDPOINT_V3="$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v3"
diff --git a/lib/ironic b/lib/ironic
index 4e5edc9..b346de1 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -124,7 +124,7 @@
cp $IRONIC_DIR/etc/ironic/rootwrap.conf $IRONIC_ROOTWRAP_CONF
cp -r $IRONIC_DIR/etc/ironic/rootwrap.d $IRONIC_CONF_DIR
- iniset $IRONIC_CONF DEFAULT rootwrap_config $IRONIC_ROOTWRAP_CONF
+ iniset $IRONIC_CONF_FILE DEFAULT rootwrap_config $IRONIC_ROOTWRAP_CONF
}
# create_ironic_cache_dir() - Part of the init_ironic() process
diff --git a/lib/ldap b/lib/ldap
index 51d0251..efe2f09 100644
--- a/lib/ldap
+++ b/lib/ldap
@@ -154,7 +154,7 @@
# clear_ldap_state() - Clear LDAP State
function clear_ldap_state {
- ldapdelete -x -w $LDAP_PASSWORD -D "$LDAP_MANAGER_DN" -H $LDAP_URL -r "$LDAP_BASE_DN"
+ ldapdelete -x -w $LDAP_PASSWORD -D "$LDAP_MANAGER_DN" -H $LDAP_URL -r "$LDAP_BASE_DN" || :
}
# Restore xtrace
diff --git a/lib/marconi b/lib/marconi
index 29ae386..1e0cc7d 100644
--- a/lib/marconi
+++ b/lib/marconi
@@ -104,8 +104,12 @@
iniset $MARCONI_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
iniset $MARCONI_CONF keystone_authtoken signing_dir $MARCONI_AUTH_CACHE_DIR
- if [[ "$MARCONI_BACKEND" = 'mongodb' ]]; then
- iniset $MARCONI_CONF database connection mongodb://localhost:27017/marconi
+ if [ "$MARCONI_BACKEND" = 'mysql' ] || [ "$MARCONI_BACKEND" = 'postgresql' ] ; then
+ iniset $MARCONI_CONF drivers storage sqlalchemy
+ iniset $MARCONI_CONF 'drivers:storage:sqlalchemy' uri `database_connection_url marconi`
+ else
+ iniset $MARCONI_CONF drivers storage mongodb
+ iniset $MARCONI_CONF 'drivers:storage:mongodb' uri mongodb://localhost:27017/marconi
configure_mongodb
cleanup_marconi
fi
diff --git a/lib/nova_plugins/hypervisor-docker b/lib/nova_plugins/hypervisor-docker
index cdbc4d1..fd3c4fe 100644
--- a/lib/nova_plugins/hypervisor-docker
+++ b/lib/nova_plugins/hypervisor-docker
@@ -57,6 +57,18 @@
iniset $GLANCE_API_CONF DEFAULT container_formats ami,ari,aki,bare,ovf,docker
}
+# is_docker_running - Return 0 (true) if Docker is running, otherwise 1
+function is_docker_running {
+ local docker_pid
+ if [ -f "$DOCKER_PID_FILE" ]; then
+ docker_pid=$(cat "$DOCKER_PID_FILE")
+ fi
+ if [[ -z "$docker_pid" ]] || ! ps -p "$docker_pid" | grep [d]ocker; then
+ return 1
+ fi
+ return 0
+}
+
# install_nova_hypervisor() - Install external components
function install_nova_hypervisor {
# So far this is Ubuntu only
@@ -69,19 +81,15 @@
die $LINENO "Docker is not installed. Please run tools/docker/install_docker.sh"
fi
- local docker_pid
- read docker_pid <$DOCKER_PID_FILE
- if [[ -z $docker_pid ]] || ! ps -p $docker_pid | grep [d]ocker; then
+ if ! (is_docker_running); then
die $LINENO "Docker not running"
fi
}
# start_nova_hypervisor - Start any required external services
function start_nova_hypervisor {
- local docker_pid
- read docker_pid <$DOCKER_PID_FILE
- if [[ -z $docker_pid ]] || ! ps -p $docker_pid | grep [d]ocker; then
- die $LINENO "Docker not running, start the daemon"
+ if ! (is_docker_running); then
+ die $LINENO "Docker not running"
fi
# Start the Docker registry container
diff --git a/lib/opendaylight b/lib/opendaylight
new file mode 100644
index 0000000..ca81c20
--- /dev/null
+++ b/lib/opendaylight
@@ -0,0 +1,167 @@
+# lib/opendaylight
+# Functions to control the configuration and operation of the opendaylight service
+
+# Dependencies:
+#
+# - ``functions`` file
+# # ``DEST`` must be defined
+# # ``STACK_USER`` must be defined
+
+# ``stack.sh`` calls the entry points in this order:
+#
+# - is_opendaylight_enabled
+# - is_opendaylight-compute_enabled
+# - install_opendaylight
+# - install_opendaylight-compute
+# - configure_opendaylight
+# - init_opendaylight
+# - start_opendaylight
+# - stop_opendaylight-compute
+# - stop_opendaylight
+# - cleanup_opendaylight
+
+# Save trace setting
+XTRACE=$(set +o | grep xtrace)
+set +o xtrace
+
+
+# For OVS_BRIDGE and PUBLIC_BRIDGE
+source $TOP_DIR/lib/neutron_plugins/ovs_base
+
+# Defaults
+# --------
+
+# The IP address of ODL. Set this in local.conf.
+# ODL_MGR_IP=
+ODL_MGR_IP=${ODL_MGR_IP:-$SERVICE_HOST}
+
+# <define global variables here that belong to this project>
+ODL_DIR=$DEST/opendaylight
+
+# The OpenDaylight Package, currently using 'Hydrogen' release
+ODL_PKG=${ODL_PKG:-distributions-virtualization-0.1.1-osgipackage.zip}
+
+# The OpenDaylight URL
+ODL_URL=${ODL_URL:-https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distributions-virtualization/0.1.1}
+
+# Default arguments for OpenDaylight. This is typically used to set
+# Java memory options.
+# ODL_ARGS=Xmx1024m -XX:MaxPermSize=512m
+ODL_ARGS=${ODL_ARGS:-"-XX:MaxPermSize=384m"}
+
+# How long to pause after ODL starts to let it complete booting
+ODL_BOOT_WAIT=${ODL_BOOT_WAIT:-60}
+
+# Set up default directories
+
+
+# Entry Points
+# ------------
+
+# Test if OpenDaylight is enabled
+# is_opendaylight_enabled
+function is_opendaylight_enabled {
+ [[ ,${ENABLED_SERVICES} =~ ,"odl-" ]] && return 0
+ return 1
+}
+
+# cleanup_opendaylight() - Remove residual data files, anything left over from previous
+# runs that a clean run would need to clean up
+function cleanup_opendaylight {
+ :
+}
+
+# configure_opendaylight() - Set config files, create data dirs, etc
+function configure_opendaylight {
+ # Remove simple forwarder
+ rm -f $ODL_DIR/opendaylight/plugins/org.opendaylight.controller.samples.simpleforwarding*
+
+ # Configure OpenFlow 1.3
+ echo "ovsdb.of.version=1.3" >> $ODL_DIR/opendaylight/configuration/config.ini
+}
+
+# init_opendaylight() - Initialize databases, etc.
+function init_opendaylight {
+ # clean up from previous (possibly aborted) runs
+ # create required data files
+ :
+}
+
+# install_opendaylight() - Collect source and prepare
+function install_opendaylight {
+ local _pwd=$(pwd)
+
+ if is_ubuntu; then
+ install_package maven openjdk-7-jre openjdk-7-jdk
+ else
+ yum_install maven java-1.7.0-openjdk
+ fi
+
+ # Download OpenDaylight
+ mkdir -p $ODL_DIR
+ cd $ODL_DIR
+ wget -N $ODL_URL/$ODL_PKG
+ unzip -u $ODL_PKG
+}
+
+# install_opendaylight-compute - Make sure OVS is install
+function install_opendaylight-compute {
+ local kernel_version
+ # Install deps
+ # FIXME add to ``files/apts/neutron``, but don't install if not needed!
+ if is_ubuntu; then
+ kernel_version=`cat /proc/version | cut -d " " -f3`
+ install_package make fakeroot dkms openvswitch-switch openvswitch-datapath-dkms linux-headers-$kernel_version
+ elif is_fedora; then
+ install_package openvswitch
+ # Ensure that the service is started
+ restart_service openvswitch
+ elif is_suse; then
+ install_package openvswitch
+ restart_service openvswitch-switch
+ restart_service openvswitch-controller
+ fi
+}
+
+# start_opendaylight() - Start running processes, including screen
+function start_opendaylight {
+ if is_ubuntu; then
+ JHOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
+ else
+ JHOME=/usr/lib/jvm/java-1.7.0-openjdk
+ fi
+
+ # The flags to ODL have the following meaning:
+ # -of13: runs ODL using OpenFlow 1.3 protocol support.
+ # -virt ovsdb: Runs ODL in "virtualization" mode with OVSDB support
+ screen_it odl-server "cd $ODL_DIR/opendaylight && JAVE_HOME=$JHOME ./run.sh $ODL_ARGS -of13 -virt ovsdb"
+
+ # Sleep a bit to let OpenDaylight finish starting up
+ sleep $ODL_BOOT_WAIT
+}
+
+# stop_opendaylight() - Stop running processes (non-screen)
+function stop_opendaylight {
+ screen_stop odl-server
+}
+
+# stop_opendaylight-compute() - Remove OVS bridges
+function stop_opendaylight-compute {
+ # remove all OVS ports that look like Neutron created ports
+ for port in $(sudo ovs-vsctl list port | grep -o -e tap[0-9a-f\-]* -e q[rg]-[0-9a-f\-]*); do
+ sudo ovs-vsctl del-port ${port}
+ done
+
+ # remove all OVS bridges created by Neutron
+ for bridge in $(sudo ovs-vsctl list-br | grep -o -e ${OVS_BRIDGE} -e ${PUBLIC_BRIDGE}); do
+ sudo ovs-vsctl del-br ${bridge}
+ done
+}
+
+# Restore xtrace
+$XTRACE
+
+# Tell emacs to use shell-script-mode
+## Local variables:
+## mode: shell-script
+## End:
diff --git a/lib/tempest b/lib/tempest
index 16f8744..c84a3ee 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -149,8 +149,12 @@
password=${ADMIN_PASSWORD:-secrete}
- # See files/keystone_data.sh where alt_demo user
- # and tenant are set up...
+ # See files/keystone_data.sh and stack.sh where admin, demo and alt_demo
+ # user and tenant are set up...
+ ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
+ ADMIN_TENANT_NAME=${ADMIN_TENANT_NAME:-admin}
+ TEMPEST_USERNAME=${TEMPEST_USERNAME:-demo}
+ TEMPEST_TENANT_NAME=${TEMPEST_TENANT_NAME:-demo}
ALT_USERNAME=${ALT_USERNAME:-alt_demo}
ALT_TENANT_NAME=${ALT_TENANT_NAME:-alt_demo}
@@ -254,11 +258,16 @@
# Identity
iniset $TEMPEST_CONFIG identity uri "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:5000/v2.0/"
iniset $TEMPEST_CONFIG identity uri_v3 "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:5000/v3/"
+ iniset $TEMPEST_CONFIG identity username $TEMPEST_USERNAME
iniset $TEMPEST_CONFIG identity password "$password"
+ iniset $TEMPEST_CONFIG identity tenant_name $TEMPEST_TENANT_NAME
iniset $TEMPEST_CONFIG identity alt_username $ALT_USERNAME
iniset $TEMPEST_CONFIG identity alt_password "$password"
iniset $TEMPEST_CONFIG identity alt_tenant_name $ALT_TENANT_NAME
+ iniset $TEMPEST_CONFIG identity admin_username $ADMIN_USERNAME
iniset $TEMPEST_CONFIG identity admin_password "$password"
+ iniset $TEMPEST_CONFIG identity admin_tenant_name $ADMIN_TENANT_NAME
+ iniset $TEMPEST_CONFIG identity auth_version ${TEMPEST_AUTH_VERSION:-v2}
# Image
# for the gate we want to be able to override this variable so we aren't
@@ -285,7 +294,9 @@
iniset $TEMPEST_CONFIG compute ssh_connect_method $ssh_connect_method
# Compute admin
- iniset $TEMPEST_CONFIG "compute-admin" password "$password" # DEPRECATED
+ iniset $TEMPEST_CONFIG "compute-admin" username $ADMIN_USERNAME
+ iniset $TEMPEST_CONFIG "compute-admin" password "$password"
+ iniset $TEMPEST_CONFIG "compute-admin" tenant_name $ADMIN_TENANT_NAME
# Network
iniset $TEMPEST_CONFIG network api_version 2.0
diff --git a/stack.sh b/stack.sh
index ab1e8fe..c990a1c 100755
--- a/stack.sh
+++ b/stack.sh
@@ -934,8 +934,7 @@
ADMIN_PASSWORD=$ADMIN_PASSWORD SERVICE_TENANT_NAME=$SERVICE_TENANT_NAME SERVICE_PASSWORD=$SERVICE_PASSWORD \
SERVICE_TOKEN=$SERVICE_TOKEN SERVICE_ENDPOINT=$SERVICE_ENDPOINT SERVICE_HOST=$SERVICE_HOST \
S3_SERVICE_PORT=$S3_SERVICE_PORT KEYSTONE_CATALOG_BACKEND=$KEYSTONE_CATALOG_BACKEND \
- DEVSTACK_DIR=$TOP_DIR ENABLED_SERVICES=$ENABLED_SERVICES HEAT_API_CFN_PORT=$HEAT_API_CFN_PORT \
- HEAT_API_PORT=$HEAT_API_PORT \
+ DEVSTACK_DIR=$TOP_DIR ENABLED_SERVICES=$ENABLED_SERVICES \
bash -x $FILES/keystone_data.sh
# Set up auth creds now that keystone is bootstrapped