Merge "s3_token has been moved to keystoneclient."
diff --git a/exercises/neutron-adv-test.sh b/exercises/neutron-adv-test.sh
index 1343f11..a9199e6 100755
--- a/exercises/neutron-adv-test.sh
+++ b/exercises/neutron-adv-test.sh
@@ -1,6 +1,11 @@
#!/usr/bin/env bash
#
-
+# Copyright 2012, Cisco Systems
+# Copyright 2012, VMware, Inc.
+# Copyright 2012, NTT MCL, Inc.
+#
+# Please direct any questions to dedutta@cisco.com, dwendlandt@vmware.com, nachi@nttmcl.com
+#
# **neutron-adv-test.sh**
# Perform integration testing of Nova and other components with Neutron.
@@ -406,14 +411,6 @@
main() {
echo Description
- echo
- echo Copyright 2012, Cisco Systems
- echo Copyright 2012, VMware, Inc.
- echo Copyright 2012, NTT MCL, Inc.
- echo
- echo Please direct any questions to dedutta@cisco.com, dwendlandt@vmware.com, nachi@nttmcl.com
- echo
-
if [ $# -eq 0 ] ; then
# if no args are provided, run all tests
diff --git a/extras.d/50-ironic.sh b/extras.d/50-ironic.sh
new file mode 100644
index 0000000..f68a146
--- /dev/null
+++ b/extras.d/50-ironic.sh
@@ -0,0 +1,33 @@
+# ironic.sh - Devstack extras script to install ironic
+
+if is_service_enabled ir-api ir-cond; then
+ if [[ "$1" == "source" ]]; then
+ # Initial source
+ source $TOP_DIR/lib/ironic
+ elif [[ "$1" == "stack" && "$2" == "install" ]]; then
+ echo_summary "Installing Ironic"
+ install_ironic
+ install_ironicclient
+ cleanup_ironic
+ elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
+ echo_summary "Configuring Ironic"
+ configure_ironic
+
+ if is_service_enabled key; then
+ create_ironic_accounts
+ fi
+
+ elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
+ # Initialize ironic
+ init_ironic
+
+ # Start the ironic API and ironic taskmgr components
+ echo_summary "Starting Ironic"
+ start_ironic
+ fi
+
+ if [[ "$1" == "unstack" ]]; then
+ stop_ironic
+ cleanup_ironic
+ fi
+fi
diff --git a/extras.d/70-gantt.sh b/extras.d/70-gantt.sh
new file mode 100644
index 0000000..ac1efba
--- /dev/null
+++ b/extras.d/70-gantt.sh
@@ -0,0 +1,31 @@
+# gantt.sh - Devstack extras script to install Gantt
+
+if is_service_enabled n-sch; then
+ disable_service gantt
+fi
+
+if is_service_enabled gantt; then
+ if [[ "$1" == "source" ]]; then
+ # Initial source
+ source $TOP_DIR/lib/gantt
+ elif [[ "$1" == "stack" && "$2" == "install" ]]; then
+ echo_summary "Installing Gantt"
+ install_gantt
+ cleanup_gantt
+ elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
+ echo_summary "Configuring Gantt"
+ configure_gantt
+
+ elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
+ # Initialize gantt
+ init_gantt
+
+ # Start gantt
+ echo_summary "Starting Gantt"
+ start_gantt
+ fi
+
+ if [[ "$1" == "unstack" ]]; then
+ stop_gantt
+ fi
+fi
diff --git a/extras.d/70-trove b/extras.d/70-trove.sh
similarity index 100%
rename from extras.d/70-trove
rename to extras.d/70-trove.sh
diff --git a/files/apts/n-cpu b/files/apts/n-cpu
index 29e3760..b287107 100644
--- a/files/apts/n-cpu
+++ b/files/apts/n-cpu
@@ -1,8 +1,8 @@
# Stuff for diablo volumes
-nbd-client
lvm2
open-iscsi
open-iscsi-utils # Deprecated since quantal dist:precise
genisoimage
sysfsutils
sg3-utils
+python-guestfs
diff --git a/files/keystone_data.sh b/files/keystone_data.sh
index d477c42..9a34c76 100755
--- a/files/keystone_data.sh
+++ b/files/keystone_data.sh
@@ -2,12 +2,14 @@
#
# Initial data for Keystone using python-keystoneclient
#
-# Tenant User Roles
+# Tenant User Roles
# ------------------------------------------------------------------
-# service glance admin
-# service heat service # if enabled
+# service glance service
+# service glance-swift ResellerAdmin
+# service heat service # if enabled
+# service ceilometer admin # if enabled
# Tempest Only:
-# alt_demo alt_demo Member
+# alt_demo alt_demo Member
#
# Variables set before calling this script:
# SERVICE_TOKEN - aka admin_token in keystone.conf
@@ -96,7 +98,19 @@
keystone user-role-add \
--tenant $SERVICE_TENANT_NAME \
--user glance \
- --role admin
+ --role service
+ # required for swift access
+ if [[ "$ENABLED_SERVICES" =~ "s-proxy" ]]; then
+ keystone user-create \
+ --name=glance-swift \
+ --pass="$SERVICE_PASSWORD" \
+ --tenant $SERVICE_TENANT_NAME \
+ --email=glance-swift@example.com
+ keystone user-role-add \
+ --tenant $SERVICE_TENANT_NAME \
+ --user glance-swift \
+ --role ResellerAdmin
+ fi
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
keystone service-create \
--name=glance \
diff --git a/files/ldap/manager.ldif.in b/files/ldap/manager.ldif.in
index de3b69d..2f1f139 100644
--- a/files/ldap/manager.ldif.in
+++ b/files/ldap/manager.ldif.in
@@ -12,4 +12,4 @@
replace: olcDbIndex
olcDbIndex: objectClass eq
olcDbIndex: default pres,eq
-olcDbIndex: cn,sn,givenName,co
+olcDbIndex: cn,sn,givenName
diff --git a/files/rpms-suse/general b/files/rpms-suse/general
index 98c2795..704947e 100644
--- a/files/rpms-suse/general
+++ b/files/rpms-suse/general
@@ -17,6 +17,7 @@
unzip
vim-enhanced
wget
+bc
findutils-locate # useful when debugging
lsof # useful when debugging
diff --git a/files/rpms/general b/files/rpms/general
index 40246ea..6cfe31e 100644
--- a/files/rpms/general
+++ b/files/rpms/general
@@ -21,6 +21,7 @@
unzip
wget
which
+bc
# [1] : some of installed tools have unversioned dependencies on this,
# but others have versioned (<=0.7). So if a later version (0.7.1)
diff --git a/functions b/functions
index 73d65ce..281b676 100644
--- a/functions
+++ b/functions
@@ -1450,7 +1450,7 @@
# vmdk disk type
vmdk_create_type="$(head -25 $IMAGE | grep -a -F -m 1 'createType=' $IMAGE)"
vmdk_create_type="${vmdk_create_type#*\"}"
- vmdk_create_type="${vmdk_create_type%?}"
+ vmdk_create_type="${vmdk_create_type%\"*}"
descriptor_data_pair_msg="Monolithic flat and VMFS disks "`
`"should use a descriptor-data pair."
@@ -1495,6 +1495,8 @@
IMAGE_NAME="${flat_fname}"
fi
vmdk_disktype="preallocated"
+ elif [[ "$vmdk_create_type" = "streamOptimized" ]]; then
+ vmdk_disktype="streamOptimized"
elif [[ -z "$vmdk_create_type" ]]; then
# *-flat.vmdk provided: attempt to retrieve the descriptor (*.vmdk)
# to retrieve appropriate metadata
@@ -1533,10 +1535,8 @@
vmdk_adapter_type="${vmdk_adapter_type%?}"
fi
fi
- #TODO(alegendre): handle streamOptimized once supported by the VMware driver.
vmdk_disktype="preallocated"
else
- #TODO(alegendre): handle streamOptimized once supported by the VMware driver.
vmdk_disktype="preallocated"
fi
diff --git a/lib/baremetal b/lib/baremetal
index a0df85e..d8cd7e9 100644
--- a/lib/baremetal
+++ b/lib/baremetal
@@ -431,8 +431,7 @@
function clear_baremetal_of_all_nodes() {
list=$(nova baremetal-node-list | awk -F '| ' 'NR>3 {print $2}' )
- for node in $list
- do
+ for node in $list; do
nova baremetal-node-delete $node
done
}
diff --git a/lib/ceilometer b/lib/ceilometer
index 6f3896f..f9c7691 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -52,7 +52,10 @@
CEILOMETER_SERVICE_PROTOCOL=http
CEILOMETER_SERVICE_HOST=$SERVICE_HOST
CEILOMETER_SERVICE_PORT=${CEILOMETER_SERVICE_PORT:-8777}
-#
+
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,ceilometer
+
# Functions
# ---------
@@ -102,6 +105,7 @@
# configure_ceilometerclient() - Set config files, create data dirs, etc
function configure_ceilometerclient() {
setup_develop $CEILOMETERCLIENT_DIR
+ sudo install -D -m 0644 -o $STACK_USER {$CEILOMETERCLIENT_DIR/tools/,/etc/bash_completion.d/}ceilometer.bash_completion
}
# configure_ceilometer() - Set config files, create data dirs, etc
@@ -134,7 +138,9 @@
iniset $CEILOMETER_CONF DEFAULT os_password $SERVICE_PASSWORD
iniset $CEILOMETER_CONF DEFAULT os_tenant_name $SERVICE_TENANT_NAME
- iniset $CEILOMETER_CONF keystone_authtoken auth_protocol http
+ iniset $CEILOMETER_CONF keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
+ iniset $CEILOMETER_CONF keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
+ iniset $CEILOMETER_CONF keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
iniset $CEILOMETER_CONF keystone_authtoken admin_user ceilometer
iniset $CEILOMETER_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
iniset $CEILOMETER_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
diff --git a/lib/cinder b/lib/cinder
index d76a41d..9f70b2a 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -79,6 +79,9 @@
VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,cinder
+
# Functions
# ---------
diff --git a/lib/databases/mysql b/lib/databases/mysql
index 0eb8fdd..476b4b9 100644
--- a/lib/databases/mysql
+++ b/lib/databases/mysql
@@ -87,20 +87,25 @@
default-storage-engine = InnoDB" $MY_CONF
fi
- # Turn on slow query log
- sudo sed -i '/log.slow.queries/d' $MY_CONF
- sudo sed -i -e "/^\[mysqld\]/ a \
-log-slow-queries = /var/log/mysql/mysql-slow.log" $MY_CONF
+ if [[ "$DATABASE_QUERY_LOGGING" == "True" ]]; then
+ echo_summary "Enabling MySQL query logging"
- # Log all queries (any query taking longer than 0 seconds)
- sudo sed -i '/long.query.time/d' $MY_CONF
- sudo sed -i -e "/^\[mysqld\]/ a \
-long-query-time = 0" $MY_CONF
+ # Turn on slow query log
+ sudo sed -i '/log.slow.queries/d' $MY_CONF
+ sudo sed -i -e "/^\[mysqld\]/ a \
+ log-slow-queries = /var/log/mysql/mysql-slow.log" $MY_CONF
- # Log all non-indexed queries
- sudo sed -i '/log.queries.not.using.indexes/d' $MY_CONF
- sudo sed -i -e "/^\[mysqld\]/ a \
-log-queries-not-using-indexes" $MY_CONF
+ # Log all queries (any query taking longer than 0 seconds)
+ sudo sed -i '/long.query.time/d' $MY_CONF
+ sudo sed -i -e "/^\[mysqld\]/ a \
+ long-query-time = 0" $MY_CONF
+
+ # Log all non-indexed queries
+ sudo sed -i '/log.queries.not.using.indexes/d' $MY_CONF
+ sudo sed -i -e "/^\[mysqld\]/ a \
+ log-queries-not-using-indexes" $MY_CONF
+
+ fi
restart_service $MYSQL
}
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index 60e5a33..c459feb 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -43,7 +43,13 @@
if is_fedora; then
PG_HBA=/var/lib/pgsql/data/pg_hba.conf
PG_CONF=/var/lib/pgsql/data/postgresql.conf
- sudo [ -e $PG_HBA ] || sudo postgresql-setup initdb
+ if ! sudo [ -e $PG_HBA ]; then
+ if ! [[ $DISTRO =~ (rhel6) ]]; then
+ sudo postgresql-setup initdb
+ else
+ sudo service postgresql initdb
+ fi
+ fi
elif is_ubuntu; then
PG_DIR=`find /etc/postgresql -name pg_hba.conf|xargs dirname`
PG_HBA=$PG_DIR/pg_hba.conf
diff --git a/lib/gantt b/lib/gantt
new file mode 100644
index 0000000..832d759
--- /dev/null
+++ b/lib/gantt
@@ -0,0 +1,96 @@
+# lib/gantt
+# Install and start **Gantt** scheduler service
+
+# Dependencies:
+#
+# - functions
+# - DEST, DATA_DIR, STACK_USER must be defined
+
+# stack.sh
+# ---------
+# - install_gantt
+# - configure_gantt
+# - init_gantt
+# - start_gantt
+# - stop_gantt
+# - cleanup_gantt
+
+# Save trace setting
+XTRACE=$(set +o | grep xtrace)
+set +o xtrace
+
+# Defaults
+# --------
+
+# set up default directories
+GANTT_DIR=$DEST/gantt
+GANTT_STATE_PATH=${GANTT_STATE_PATH:=$DATA_DIR/gantt}
+GANTT_REPO=${GANTT_REPO:-${GIT_BASE}/openstack/gantt.git}
+GANTT_BRANCH=${GANTT_BRANCH:-master}
+
+GANTTCLIENT_DIR=$DEST/python-ganttclient
+GANTTCLIENT_REPO=${GANTT_REPO:-${GIT_BASE}/openstack/python-ganttclient.git}
+GANTTCLIENT_BRANCH=${GANTT_BRANCH:-master}
+
+# eventually we will have a separate gantt config
+# file but for compatibility reasone stick with
+# nova.conf for now
+GANTT_CONF_DIR=${GANTT_CONF_DIR:-/etc/nova}
+GANTT_CONF=$GANTT_CONF_DIR/nova.conf
+
+# Support entry points installation of console scripts
+GANTT_BIN_DIR=$(get_python_exec_prefix)
+
+
+# Functions
+# ---------
+
+# cleanup_gantt() - Remove residual data files, anything left over from previous
+# runs that a clean run would need to clean up
+function cleanup_gantt() {
+ echo "Cleanup Gantt"
+}
+
+# configure_gantt() - Set config files, create data dirs, etc
+function configure_gantt() {
+ echo "Configure Gantt"
+}
+
+# init_gantt() - Initialize database and volume group
+function init_gantt() {
+ echo "Initialize Gantt"
+}
+
+# install_gantt() - Collect source and prepare
+function install_gantt() {
+ git_clone $GANTT_REPO $GANTT_DIR $GANTT_BRANCH
+ setup_develop $GANTT_DIR
+}
+
+# install_ganttclient() - Collect source and prepare
+function install_ganttclient() {
+ echo "Install Gantt Client"
+# git_clone $GANTTCLIENT_REPO $GANTTCLIENT_DIR $GANTTCLIENT_BRANCH
+# setup_develop $GANTTCLIENT_DIR
+}
+
+# start_gantt() - Start running processes, including screen
+function start_gantt() {
+ if is_service_enabled gantt; then
+ screen_it gantt "cd $GANTT_DIR && $GANTT_BIN_DIR/gantt-scheduler --config-file $GANTT_CONF"
+ fi
+}
+
+# stop_gantt() - Stop running processes
+function stop_gantt() {
+ echo "Stop Gantt"
+ screen_stop gantt
+}
+
+# Restore xtrace
+$XTRACE
+
+# Tell emacs to use shell-script-mode
+## Local variables:
+## mode: shell-script
+## End:
diff --git a/lib/glance b/lib/glance
index 55d5fb3..a5cb360 100644
--- a/lib/glance
+++ b/lib/glance
@@ -52,6 +52,9 @@
# Glance connection info. Note the port must be specified.
GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$SERVICE_HOST:9292}
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,glance
+
# Functions
# ---------
@@ -105,10 +108,8 @@
iniset $GLANCE_API_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
iniset $GLANCE_API_CONF keystone_authtoken admin_user glance
iniset $GLANCE_API_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
- if is_service_enabled qpid; then
- iniset $GLANCE_API_CONF DEFAULT notifier_strategy qpid
- elif [ -n "$RABBIT_HOST" ] && [ -n "$RABBIT_PASSWORD" ]; then
- iniset $GLANCE_API_CONF DEFAULT notifier_strategy rabbit
+ if is_service_enabled qpid || [ -n "$RABBIT_HOST" ] && [ -n "$RABBIT_PASSWORD" ]; then
+ iniset $GLANCE_API_CONF DEFAULT notification_driver messaging
fi
iniset_rpc_backend glance $GLANCE_API_CONF DEFAULT
iniset $GLANCE_API_CONF keystone_authtoken signing_dir $GLANCE_AUTH_CACHE_DIR/api
@@ -121,7 +122,7 @@
if is_service_enabled s-proxy; then
iniset $GLANCE_API_CONF DEFAULT default_store swift
iniset $GLANCE_API_CONF DEFAULT swift_store_auth_address $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/
- iniset $GLANCE_API_CONF DEFAULT swift_store_user $SERVICE_TENANT_NAME:glance
+ iniset $GLANCE_API_CONF DEFAULT swift_store_user $SERVICE_TENANT_NAME:glance-swift
iniset $GLANCE_API_CONF DEFAULT swift_store_key $SERVICE_PASSWORD
iniset $GLANCE_API_CONF DEFAULT swift_store_create_container_on_put True
diff --git a/lib/heat b/lib/heat
index b9b8aa6..9f5dd8b 100644
--- a/lib/heat
+++ b/lib/heat
@@ -38,6 +38,10 @@
HEAT_ENV_DIR=$HEAT_CONF_DIR/environment.d
HEAT_TEMPLATES_DIR=$HEAT_CONF_DIR/templates
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,heat
+
+
# Functions
# ---------
@@ -153,6 +157,7 @@
function install_heatclient() {
git_clone $HEATCLIENT_REPO $HEATCLIENT_DIR $HEATCLIENT_BRANCH
setup_develop $HEATCLIENT_DIR
+ sudo install -D -m 0644 -o $STACK_USER {$HEATCLIENT_DIR/tools/,/etc/bash_completion.d/}heat.bash_completion
}
# install_heat() - Collect source and prepare
@@ -181,8 +186,7 @@
local elements=$2
local arch=$3
local output=$TOP_DIR/files/$4
- if [[ -f "$output.qcow2" ]];
- then
+ if [[ -f "$output.qcow2" ]]; then
echo "Image file already exists: $output_file"
else
ELEMENTS_PATH=$elements_path disk-image-create \
diff --git a/lib/horizon b/lib/horizon
index 5bff712..2f5795d 100644
--- a/lib/horizon
+++ b/lib/horizon
@@ -31,6 +31,9 @@
# The example file in Horizon repo is used by default.
HORIZON_SETTINGS=${HORIZON_SETTINGS:-$HORIZON_DIR/openstack_dashboard/local/local_settings.py.example}
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,horizon
+
# Functions
# ---------
@@ -78,9 +81,6 @@
# init_horizon() - Initialize databases, etc.
function init_horizon() {
- # Remove stale session database.
- rm -f $HORIZON_DIR/openstack_dashboard/local/dashboard_openstack.sqlite3
-
# ``local_settings.py`` is used to override horizon default settings.
local_settings=$HORIZON_DIR/openstack_dashboard/local/local_settings.py
cp $HORIZON_SETTINGS $local_settings
@@ -103,12 +103,6 @@
_horizon_config_set $local_settings OPENSTACK_NEUTRON_NETWORK enable_vpn True
fi
- # Initialize the horizon database (it stores sessions and notices shown to
- # users). The user system is external (keystone).
- cd $HORIZON_DIR
- python manage.py syncdb --noinput
- cd $TOP_DIR
-
# Create an empty directory that apache uses as docroot
sudo mkdir -p $HORIZON_DIR/.blackhole
diff --git a/lib/ironic b/lib/ironic
index afbc3e0..0b9df57 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -42,10 +42,20 @@
IRONIC_SERVICE_PROTOCOL=http
IRONIC_HOSTPORT=${IRONIC_HOSTPORT:-$SERVICE_HOST:6385}
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,ironic
+
# Functions
# ---------
+# Test if any Ironic services are enabled
+# is_ironic_enabled
+function is_ironic_enabled {
+ [[ ,${ENABLED_SERVICES} =~ ,"ir-" ]] && return 0
+ return 1
+}
+
# install_ironic() - Collect source and prepare
function install_ironic() {
git_clone $IRONIC_REPO $IRONIC_DIR $IRONIC_BRANCH
diff --git a/lib/keystone b/lib/keystone
index 0850fb2..4f7f68b 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -178,6 +178,7 @@
# Set the URL advertised in the ``versions`` structure returned by the '/' route
iniset $KEYSTONE_CONF DEFAULT public_endpoint "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:%(public_port)s/"
iniset $KEYSTONE_CONF DEFAULT admin_endpoint "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:%(admin_port)s/"
+ iniset $KEYSTONE_CONF DEFAULT admin_bind_host "$KEYSTONE_SERVICE_HOST"
# Register SSL certificates if provided
if is_ssl_enabled_service key; then
diff --git a/lib/marconi b/lib/marconi
index 6b9ffdc..1eaebbd 100644
--- a/lib/marconi
+++ b/lib/marconi
@@ -51,6 +51,10 @@
MARCONICLIENT_REPO=${MARCONICLIENT_REPO:-${GIT_BASE}/openstack/python-marconiclient.git}
MARCONICLIENT_BRANCH=${MARCONICLIENT_BRANCH:-master}
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,marconi
+
+
# Functions
# ---------
diff --git a/lib/neutron b/lib/neutron
index 960f11b..81db2a7 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -237,6 +237,10 @@
Q_USE_SECGROUP=False
fi
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,neutron
+
+
# Functions
# ---------
@@ -505,7 +509,7 @@
[ ! -z "$pid" ] && sudo kill -9 $pid
fi
if is_service_enabled q-meta; then
- sudo pkill -9 neutron-ns-metadata-proxy || :
+ sudo pkill -9 -f neutron-ns-metadata-proxy || :
fi
if is_service_enabled q-lbaas; then
diff --git a/lib/neutron_plugins/bigswitch_floodlight b/lib/neutron_plugins/bigswitch_floodlight
index 93ec497..1e4aa00 100644
--- a/lib/neutron_plugins/bigswitch_floodlight
+++ b/lib/neutron_plugins/bigswitch_floodlight
@@ -44,16 +44,14 @@
function neutron_plugin_configure_service() {
iniset /$Q_PLUGIN_CONF_FILE restproxy servers $BS_FL_CONTROLLERS_PORT
iniset /$Q_PLUGIN_CONF_FILE restproxy servertimeout $BS_FL_CONTROLLER_TIMEOUT
- if [ "$BS_FL_VIF_DRIVER" = "ivs" ]
- then
+ if [ "$BS_FL_VIF_DRIVER" = "ivs" ]; then
iniset /$Q_PLUGIN_CONF_FILE nova vif_type ivs
fi
}
function neutron_plugin_setup_interface_driver() {
local conf_file=$1
- if [ "$BS_FL_VIF_DRIVER" = "ivs" ]
- then
+ if [ "$BS_FL_VIF_DRIVER" = "ivs" ]; then
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.IVSInterfaceDriver
else
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
diff --git a/lib/neutron_plugins/embrane b/lib/neutron_plugins/embrane
new file mode 100644
index 0000000..4206a20
--- /dev/null
+++ b/lib/neutron_plugins/embrane
@@ -0,0 +1,40 @@
+# Neutron Embrane plugin
+# ---------------------------
+
+# Save trace setting
+MY_XTRACE=$(set +o | grep xtrace)
+set +o xtrace
+
+source $TOP_DIR/lib/neutron_plugins/openvswitch
+
+save_function() {
+ local ORIG_FUNC=$(declare -f $1)
+ local NEW_FUNC="$2${ORIG_FUNC#$1}"
+ eval "$NEW_FUNC"
+}
+
+save_function neutron_plugin_configure_service _neutron_plugin_configure_service
+
+function neutron_plugin_configure_common() {
+ Q_PLUGIN_CONF_PATH=etc/neutron/plugins/embrane
+ Q_PLUGIN_CONF_FILENAME=heleos_conf.ini
+ Q_DB_NAME="ovs_neutron"
+ Q_PLUGIN_CLASS="neutron.plugins.embrane.plugins.embrane_ovs_plugin.EmbraneOvsPlugin"
+}
+
+function neutron_plugin_configure_service() {
+ _neutron_plugin_configure_service
+ iniset /$Q_PLUGIN_CONF_FILE heleos esm_mgmt $HELEOS_ESM_MGMT
+ iniset /$Q_PLUGIN_CONF_FILE heleos admin_username $HELEOS_ADMIN_USERNAME
+ iniset /$Q_PLUGIN_CONF_FILE heleos admin_password $HELEOS_ADMIN_PASSWORD
+ iniset /$Q_PLUGIN_CONF_FILE heleos router_image $HELEOS_ROUTER_IMAGE
+ iniset /$Q_PLUGIN_CONF_FILE heleos mgmt_id $HELEOS_MGMT_ID
+ iniset /$Q_PLUGIN_CONF_FILE heleos inband_id $HELEOS_INBAND_ID
+ iniset /$Q_PLUGIN_CONF_FILE heleos oob_id $HELEOS_OOB_ID
+ iniset /$Q_PLUGIN_CONF_FILE heleos dummy_utif_id $HELEOS_DUMMY_UTIF_ID
+ iniset /$Q_PLUGIN_CONF_FILE heleos resource_pool_id $HELEOS_RESOURCE_POOL_ID
+ iniset /$Q_PLUGIN_CONF_FILE heleos async_requests $HELEOS_ASYNC_REQUESTS
+}
+
+# Restore xtrace
+$MY_XTRACE
\ No newline at end of file
diff --git a/lib/neutron_plugins/nec b/lib/neutron_plugins/nec
index d8d8b7c..1cb2fef 100644
--- a/lib/neutron_plugins/nec
+++ b/lib/neutron_plugins/nec
@@ -106,8 +106,7 @@
local id=0
GRE_LOCAL_IP=${GRE_LOCAL_IP:-$HOST_IP}
if [ -n "$GRE_REMOTE_IPS" ]; then
- for ip in ${GRE_REMOTE_IPS//:/ }
- do
+ for ip in ${GRE_REMOTE_IPS//:/ }; do
if [[ "$ip" == "$GRE_LOCAL_IP" ]]; then
continue
fi
diff --git a/lib/neutron_thirdparty/bigswitch_floodlight b/lib/neutron_thirdparty/bigswitch_floodlight
index 1fd4fd8..24c1044 100644
--- a/lib/neutron_thirdparty/bigswitch_floodlight
+++ b/lib/neutron_thirdparty/bigswitch_floodlight
@@ -24,8 +24,7 @@
sudo ovs-vsctl --no-wait br-set-external-id ${OVS_BRIDGE} bridge-id ${OVS_BRIDGE}
ctrls=
- for ctrl in `echo ${BS_FL_CONTROLLERS_PORT} | tr ',' ' '`
- do
+ for ctrl in `echo ${BS_FL_CONTROLLERS_PORT} | tr ',' ' '`; do
ctrl=${ctrl%:*}
ctrls="${ctrls} tcp:${ctrl}:${BS_FL_OF_PORT}"
done
diff --git a/lib/nova b/lib/nova
index dbaa3f5..dcf1617 100644
--- a/lib/nova
+++ b/lib/nova
@@ -122,6 +122,9 @@
TEST_FLOATING_POOL=${TEST_FLOATING_POOL:-test}
TEST_FLOATING_RANGE=${TEST_FLOATING_RANGE:-192.168.253.0/29}
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,nova
+
# Functions
# ---------
@@ -237,9 +240,6 @@
sudo sysctl -w net.ipv4.ip_forward=1
if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then
- # Attempt to load modules: network block device - used to manage qcow images
- sudo modprobe nbd || true
-
# Check for kvm (hardware based virtualization). If unable to initialize
# kvm, we drop back to the slower emulation mode (qemu). Note: many systems
# come with hardware virtualization disabled in BIOS.
@@ -389,6 +389,10 @@
fi
if is_service_enabled n-api; then
+ if is_service_enabled n-api-meta; then
+ # If running n-api-meta as a separate service
+ NOVA_ENABLED_APIS=$(echo $NOVA_ENABLED_APIS | sed "s/,metadata//")
+ fi
iniset $NOVA_CONF DEFAULT enabled_apis "$NOVA_ENABLED_APIS"
if is_service_enabled tls-proxy; then
# Set the service port for a proxy to take the original
@@ -442,7 +446,7 @@
iniset $NOVA_CONF DEFAULT instance_usage_audit "True"
iniset $NOVA_CONF DEFAULT instance_usage_audit_period "hour"
iniset $NOVA_CONF DEFAULT notify_on_state_change "vm_and_task_state"
- iniset $NOVA_CONF DEFAULT notification_driver "nova.openstack.common.notifier.rpc_notifier"
+ iniset $NOVA_CONF DEFAULT notification_driver "messaging"
fi
# Provide some transition from ``EXTRA_FLAGS`` to ``EXTRA_OPTS``
@@ -495,6 +499,12 @@
iniset $NOVA_CONF DEFAULT ec2_dmz_host "$EC2_DMZ_HOST"
iniset_rpc_backend nova $NOVA_CONF DEFAULT
iniset $NOVA_CONF DEFAULT glance_api_servers "$GLANCE_HOSTPORT"
+
+ if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then
+ # File injection is being disabled by default in the near future -
+ # disable it here for now to avoid surprises later.
+ iniset $NOVA_CONF libvirt inject_partition '-2'
+ fi
}
function init_nova_cells() {
diff --git a/lib/nova_plugins/hypervisor-docker b/lib/nova_plugins/hypervisor-docker
index 0153953..bb934b8 100644
--- a/lib/nova_plugins/hypervisor-docker
+++ b/lib/nova_plugins/hypervisor-docker
@@ -31,10 +31,10 @@
DOCKER_PID_FILE=/var/run/docker.pid
DOCKER_REGISTRY_PORT=${DOCKER_REGISTRY_PORT:-5042}
-DOCKER_IMAGE=${DOCKER_IMAGE:-http://get.docker.io/images/openstack/docker-ut.tar.gz}
-DOCKER_IMAGE_NAME=docker-busybox
-DOCKER_REGISTRY_IMAGE=${DOCKER_REGISTRY_IMAGE:-http://get.docker.io/images/openstack/docker-registry.tar.gz}
-DOCKER_REGISTRY_IMAGE_NAME=docker-registry
+DOCKER_IMAGE=${DOCKER_IMAGE:-busybox:latest}
+DOCKER_IMAGE_NAME=busybox
+DOCKER_REGISTRY_IMAGE=${DOCKER_REGISTRY_IMAGE:-registry:latest}
+DOCKER_REGISTRY_IMAGE_NAME=registry
DOCKER_REPOSITORY_NAME=${SERVICE_HOST}:${DOCKER_REGISTRY_PORT}/${DOCKER_IMAGE_NAME}
DOCKER_APT_REPO=${DOCKER_APT_REPO:-https://get.docker.io/ubuntu}
diff --git a/lib/nova_plugins/hypervisor-libvirt b/lib/nova_plugins/hypervisor-libvirt
index 6f90f4a..42d3af1 100644
--- a/lib/nova_plugins/hypervisor-libvirt
+++ b/lib/nova_plugins/hypervisor-libvirt
@@ -108,6 +108,7 @@
iniset $NOVA_CONF DEFAULT libvirt_type "$LIBVIRT_TYPE"
iniset $NOVA_CONF DEFAULT libvirt_cpu_mode "none"
iniset $NOVA_CONF DEFAULT use_usb_tablet "False"
+ iniset $NOVA_CONF DEFAULT default_ephemeral_format "ext4"
iniset $NOVA_CONF DEFAULT compute_driver "libvirt.LibvirtDriver"
LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"}
iniset $NOVA_CONF DEFAULT firewall_driver "$LIBVIRT_FIREWALL_DRIVER"
diff --git a/lib/rpc_backend b/lib/rpc_backend
index f59c800..3651bc0 100644
--- a/lib/rpc_backend
+++ b/lib/rpc_backend
@@ -139,12 +139,18 @@
if is_service_enabled rabbit; then
# Start rabbitmq-server
echo_summary "Starting RabbitMQ"
- if is_fedora || is_suse; then
- # service is not started by default
- restart_service rabbitmq-server
- fi
- # change the rabbit password since the default is "guest"
- sudo rabbitmqctl change_password guest $RABBIT_PASSWORD
+ # NOTE(bnemec): Retry initial rabbitmq configuration to deal with
+ # the fact that sometimes it fails to start properly.
+ # Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1059028
+ for i in `seq 10`; do
+ if is_fedora || is_suse; then
+ # service is not started by default
+ restart_service rabbitmq-server
+ fi
+ # change the rabbit password since the default is "guest"
+ sudo rabbitmqctl change_password guest $RABBIT_PASSWORD && break
+ [[ $i -eq "10" ]] && die $LINENO "Failed to set rabbitmq password"
+ done
if is_service_enabled n-cell; then
# Add partitioned access for the child cell
if [ -z `sudo rabbitmqctl list_vhosts | grep child_cell` ]; then
diff --git a/lib/savanna b/lib/savanna
index c7d59f7..6f42311 100644
--- a/lib/savanna
+++ b/lib/savanna
@@ -26,7 +26,7 @@
# Set up default directories
SAVANNA_DIR=$DEST/savanna
SAVANNA_CONF_DIR=${SAVANNA_CONF_DIR:-/etc/savanna}
-SAVANNA_CONF_FILE=savanna.conf
+SAVANNA_CONF_FILE=${SAVANNA_CONF_DIR}/savanna.conf
SAVANNA_DEBUG=${SAVANNA_DEBUG:-True}
SAVANNA_SERVICE_HOST=${SAVANNA_SERVICE_HOST:-$SERVICE_HOST}
@@ -40,6 +40,10 @@
SAVANNA_BIN_DIR=$(get_python_exec_prefix)
fi
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,savanna
+
+
# Functions
# ---------
@@ -88,24 +92,24 @@
sudo chown $STACK_USER $SAVANNA_CONF_DIR
# Copy over savanna configuration file and configure common parameters.
- cp $SAVANNA_DIR/etc/savanna/savanna.conf.sample $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE
+ cp $SAVANNA_DIR/etc/savanna/savanna.conf.sample $SAVANNA_CONF_FILE
- iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT os_admin_password $SERVICE_PASSWORD
- iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT os_admin_username savanna
- iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT os_admin_tenant_name $SERVICE_TENANT_NAME
- iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT debug $SAVANNA_DEBUG
+ iniset $SAVANNA_CONF_FILE DEFAULT os_admin_password $SERVICE_PASSWORD
+ iniset $SAVANNA_CONF_FILE DEFAULT os_admin_username savanna
+ iniset $SAVANNA_CONF_FILE DEFAULT os_admin_tenant_name $SERVICE_TENANT_NAME
+ iniset $SAVANNA_CONF_FILE DEFAULT debug $SAVANNA_DEBUG
- iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE database connection `database_connection_url savanna`
+ iniset $SAVANNA_CONF_FILE database connection `database_connection_url savanna`
if is_service_enabled neutron; then
- iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT use_neutron true
- iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT use_floating_ips true
+ iniset $SAVANNA_CONF_FILE DEFAULT use_neutron true
+ iniset $SAVANNA_CONF_FILE DEFAULT use_floating_ips true
fi
- iniset $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE DEFAULT use_syslog $SYSLOG
+ iniset $SAVANNA_CONF_FILE DEFAULT use_syslog $SYSLOG
recreate_database savanna utf8
- $SAVANNA_BIN_DIR/savanna-db-manage --config-file $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE upgrade head
+ $SAVANNA_BIN_DIR/savanna-db-manage --config-file $SAVANNA_CONF_FILE upgrade head
}
# install_savanna() - Collect source and prepare
@@ -116,7 +120,7 @@
# start_savanna() - Start running processes, including screen
function start_savanna() {
- screen_it savanna "cd $SAVANNA_DIR && $SAVANNA_BIN_DIR/savanna-api --config-file $SAVANNA_CONF_DIR/$SAVANNA_CONF_FILE"
+ screen_it savanna "cd $SAVANNA_DIR && $SAVANNA_BIN_DIR/savanna-api --config-file $SAVANNA_CONF_FILE"
}
# stop_savanna() - Stop running processes
diff --git a/lib/swift b/lib/swift
index a182e5a..4412608 100644
--- a/lib/swift
+++ b/lib/swift
@@ -111,6 +111,9 @@
CONTAINER_PORT_BASE=${CONTAINER_PORT_BASE:-6011}
ACCOUNT_PORT_BASE=${ACCOUNT_PORT_BASE:-6012}
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,swift
+
# Functions
# ---------
@@ -258,6 +261,8 @@
SWIFT_CONFIG_PROXY_SERVER=${SWIFT_CONF_DIR}/proxy-server.conf
cp ${SWIFT_DIR}/etc/proxy-server.conf-sample ${SWIFT_CONFIG_PROXY_SERVER}
+ cp ${SWIFT_DIR}/etc/container-sync-realms.conf-sample ${SWIFT_CONF_DIR}/container-sync-realms.conf
+
iniuncomment ${SWIFT_CONFIG_PROXY_SERVER} DEFAULT user
iniset ${SWIFT_CONFIG_PROXY_SERVER} DEFAULT user ${STACK_USER}
@@ -652,10 +657,8 @@
if type -p swift-init >/dev/null; then
swift-init --run-dir=${SWIFT_DATA_DIR}/run all stop || true
fi
- for type in proxy object container account; do
- # Dump all of the servers
- pkill -f swift-
- done
+ # Dump all of the servers
+ pkill -f swift-
}
# Restore xtrace
diff --git a/lib/tempest b/lib/tempest
index ef9dfe2..76da170 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -46,8 +46,8 @@
# Set up default directories
TEMPEST_DIR=$DEST/tempest
-TEMPEST_CONF_DIR=$TEMPEST_DIR/etc
-TEMPEST_CONF=$TEMPEST_CONF_DIR/tempest.conf
+TEMPEST_CONFIG_DIR=${TEMPEST_CONFIG_DIR:-$TEMPEST_DIR/etc}
+TEMPEST_CONFIG=$TEMPEST_CONFIG_DIR/tempest.conf
TEMPEST_STATE_PATH=${TEMPEST_STATE_PATH:=$DATA_DIR/tempest}
NOVA_SOURCE_DIR=$DEST/nova
@@ -58,6 +58,10 @@
BOTO_MATERIALS_PATH="$FILES/images/s3-materials/cirros-0.3.1"
+# Cinder/Volume variables
+TEMPEST_VOLUME_DRIVER=${TEMPEST_VOLUME_DRIVER:-default}
+TEMPEST_VOLUME_VENDOR=${TEMPEST_VOLUME_VENDOR:-"Open Source"}
+TEMPEST_STORAGE_PROTOCOL=${TEMPEST_STORAGE_PROTOCOL:-iSCSI}
# Functions
# ---------
@@ -83,6 +87,11 @@
local boto_instance_type="m1.tiny"
local ssh_connect_method="fixed"
+ if [[ ! -d $TEMPEST_CONFIG_DIR ]]; then
+ sudo mkdir -p $TEMPEST_CONFIG_DIR
+ fi
+ sudo chown $STACK_USER $TEMPEST_CONFIG_DIR
+
# TODO(afazekas):
# sudo python setup.py deploy
@@ -133,7 +142,8 @@
# Create tempest.conf from tempest.conf.sample
# copy every time, because the image UUIDS are going to change
- cp $TEMPEST_CONF.sample $TEMPEST_CONF
+ sudo cp $TEMPEST_DIR/etc/tempest.conf.sample $TEMPEST_CONFIG
+ sudo chmod 644 $TEMPEST_CONFIG
password=${ADMIN_PASSWORD:-secrete}
@@ -224,121 +234,122 @@
fi
# Oslo
- iniset $TEMPEST_CONF DEFAULT lock_path $TEMPEST_STATE_PATH
+ iniset $TEMPEST_CONFIG DEFAULT lock_path $TEMPEST_STATE_PATH
mkdir -p $TEMPEST_STATE_PATH
- iniset $TEMPEST_CONF DEFAULT use_stderr False
- iniset $TEMPEST_CONF DEFAULT log_file tempest.log
- iniset $TEMPEST_CONF DEFAULT debug True
+ iniset $TEMPEST_CONFIG DEFAULT use_stderr False
+ iniset $TEMPEST_CONFIG DEFAULT log_file tempest.log
+ iniset $TEMPEST_CONFIG DEFAULT debug True
# Timeouts
- iniset $TEMPEST_CONF compute build_timeout $BUILD_TIMEOUT
- iniset $TEMPEST_CONF volume build_timeout $BUILD_TIMEOUT
- iniset $TEMPEST_CONF boto build_timeout $BUILD_TIMEOUT
- iniset $TEMPEST_CONF compute build_interval $BUILD_INTERVAL
- iniset $TEMPEST_CONF volume build_interval $BUILD_INTERVAL
- iniset $TEMPEST_CONF boto build_interval $BUILD_INTERVAL
- iniset $TEMPEST_CONF boto http_socket_timeout 5
+ iniset $TEMPEST_CONFIG compute build_timeout $BUILD_TIMEOUT
+ iniset $TEMPEST_CONFIG volume build_timeout $BUILD_TIMEOUT
+ iniset $TEMPEST_CONFIG boto build_timeout $BUILD_TIMEOUT
+ iniset $TEMPEST_CONFIG compute build_interval $BUILD_INTERVAL
+ iniset $TEMPEST_CONFIG volume build_interval $BUILD_INTERVAL
+ iniset $TEMPEST_CONFIG boto build_interval $BUILD_INTERVAL
+ iniset $TEMPEST_CONFIG boto http_socket_timeout 5
# Identity
- iniset $TEMPEST_CONF identity uri "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:5000/v2.0/"
- iniset $TEMPEST_CONF identity password "$password"
- iniset $TEMPEST_CONF identity alt_username $ALT_USERNAME
- iniset $TEMPEST_CONF identity alt_password "$password"
- iniset $TEMPEST_CONF identity alt_tenant_name $ALT_TENANT_NAME
- iniset $TEMPEST_CONF identity admin_password "$password"
+ 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 password "$password"
+ 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_password "$password"
# Image
# for the gate we want to be able to override this variable so we aren't
# doing an HTTP fetch over the wide internet for this test
if [[ ! -z "$TEMPEST_HTTP_IMAGE" ]]; then
- iniset $TEMPEST_CONF image http_image $TEMPEST_HTTP_IMAGE
+ iniset $TEMPEST_CONFIG image http_image $TEMPEST_HTTP_IMAGE
fi
# Compute
- iniset $TEMPEST_CONF compute change_password_available False
- # Note(nati) current tempest don't create network for each tenant
- # so reuse same tenant for now
- if is_service_enabled neutron; then
- TEMPEST_ALLOW_TENANT_ISOLATION=${TEMPEST_ALLOW_TENANT_ISOLATION:-False}
- fi
- iniset $TEMPEST_CONF compute allow_tenant_isolation ${TEMPEST_ALLOW_TENANT_ISOLATION:-True}
- iniset $TEMPEST_CONF compute ssh_user ${DEFAULT_INSTANCE_USER:-cirros} # DEPRECATED
- iniset $TEMPEST_CONF compute network_for_ssh $PRIVATE_NETWORK_NAME
- iniset $TEMPEST_CONF compute ip_version_for_ssh 4
- iniset $TEMPEST_CONF compute ssh_timeout $BUILD_TIMEOUT
- iniset $TEMPEST_CONF compute image_ref $image_uuid
- iniset $TEMPEST_CONF compute image_ssh_user ${DEFAULT_INSTANCE_USER:-cirros}
- iniset $TEMPEST_CONF compute image_ref_alt $image_uuid_alt
- iniset $TEMPEST_CONF compute image_alt_ssh_user ${DEFAULT_INSTANCE_USER:-cirros}
- iniset $TEMPEST_CONF compute flavor_ref $flavor_ref
- iniset $TEMPEST_CONF compute flavor_ref_alt $flavor_ref_alt
- iniset $TEMPEST_CONF compute live_migration_available ${LIVE_MIGRATION_AVAILABLE:-False}
- iniset $TEMPEST_CONF compute use_block_migration_for_live_migration ${USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION:-False}
- iniset $TEMPEST_CONF compute ssh_connect_method $ssh_connect_method
+ iniset $TEMPEST_CONFIG compute change_password_available False
+ iniset $TEMPEST_CONFIG compute allow_tenant_isolation ${TEMPEST_ALLOW_TENANT_ISOLATION:-True}
+ iniset $TEMPEST_CONFIG compute ssh_user ${DEFAULT_INSTANCE_USER:-cirros} # DEPRECATED
+ iniset $TEMPEST_CONFIG compute network_for_ssh $PRIVATE_NETWORK_NAME
+ iniset $TEMPEST_CONFIG compute ip_version_for_ssh 4
+ iniset $TEMPEST_CONFIG compute ssh_timeout $BUILD_TIMEOUT
+ iniset $TEMPEST_CONFIG compute image_ref $image_uuid
+ iniset $TEMPEST_CONFIG compute image_ssh_user ${DEFAULT_INSTANCE_USER:-cirros}
+ iniset $TEMPEST_CONFIG compute image_ref_alt $image_uuid_alt
+ iniset $TEMPEST_CONFIG compute image_alt_ssh_user ${DEFAULT_INSTANCE_USER:-cirros}
+ iniset $TEMPEST_CONFIG compute flavor_ref $flavor_ref
+ iniset $TEMPEST_CONFIG compute flavor_ref_alt $flavor_ref_alt
+ iniset $TEMPEST_CONFIG compute live_migration_available ${LIVE_MIGRATION_AVAILABLE:-False}
+ iniset $TEMPEST_CONFIG compute use_block_migration_for_live_migration ${USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION:-False}
+ iniset $TEMPEST_CONFIG compute ssh_connect_method $ssh_connect_method
# Compute admin
- iniset $TEMPEST_CONF "compute-admin" password "$password" # DEPRECATED
+ iniset $TEMPEST_CONFIG "compute-admin" password "$password" # DEPRECATED
- iniset $TEMPEST_CONF network api_version 2.0
- iniset $TEMPEST_CONF network tenant_networks_reachable "$tenant_networks_reachable"
- iniset $TEMPEST_CONF network public_network_id "$public_network_id"
- iniset $TEMPEST_CONF network public_router_id "$public_router_id"
- iniset $TEMPEST_CONF network default_network "$FIXED_RANGE"
+ iniset $TEMPEST_CONFIG network api_version 2.0
+ iniset $TEMPEST_CONFIG network tenant_networks_reachable "$tenant_networks_reachable"
+ iniset $TEMPEST_CONFIG network public_network_id "$public_network_id"
+ iniset $TEMPEST_CONFIG network public_router_id "$public_router_id"
+ iniset $TEMPEST_CONFIG network default_network "$FIXED_RANGE"
# boto
- iniset $TEMPEST_CONF boto ec2_url "http://$SERVICE_HOST:8773/services/Cloud"
- iniset $TEMPEST_CONF boto s3_url "http://$SERVICE_HOST:${S3_SERVICE_PORT:-3333}"
- iniset $TEMPEST_CONF boto s3_materials_path "$BOTO_MATERIALS_PATH"
- iniset $TEMPEST_CONF boto instance_type "$boto_instance_type"
- iniset $TEMPEST_CONF boto http_socket_timeout 30
- iniset $TEMPEST_CONF boto ssh_user ${DEFAULT_INSTANCE_USER:-cirros}
+ iniset $TEMPEST_CONFIG boto ec2_url "http://$SERVICE_HOST:8773/services/Cloud"
+ iniset $TEMPEST_CONFIG boto s3_url "http://$SERVICE_HOST:${S3_SERVICE_PORT:-3333}"
+ iniset $TEMPEST_CONFIG boto s3_materials_path "$BOTO_MATERIALS_PATH"
+ iniset $TEMPEST_CONFIG boto instance_type "$boto_instance_type"
+ iniset $TEMPEST_CONFIG boto http_socket_timeout 30
+ iniset $TEMPEST_CONFIG boto ssh_user ${DEFAULT_INSTANCE_USER:-cirros}
# Orchestration test image
if [[ ! -z "$HEAT_FETCHED_TEST_IMAGE" ]]; then
- iniset $TEMPEST_CONF orchestration image_ref "$HEAT_FETCHED_TEST_IMAGE"
+ iniset $TEMPEST_CONFIG orchestration image_ref "$HEAT_FETCHED_TEST_IMAGE"
elif [[ "$HEAT_CREATE_TEST_IMAGE" = "True" ]]; then
disk_image_create /usr/share/tripleo-image-elements "vm fedora heat-cfntools" "i386" "fedora-vm-heat-cfntools-tempest"
- iniset $TEMPEST_CONF orchestration image_ref "fedora-vm-heat-cfntools-tempest"
+ iniset $TEMPEST_CONFIG orchestration image_ref "fedora-vm-heat-cfntools-tempest"
fi
# Scenario
- iniset $TEMPEST_CONF scenario img_dir "$FILES/images/cirros-0.3.1-x86_64-uec"
+ iniset $TEMPEST_CONFIG scenario img_dir "$FILES/images/cirros-0.3.1-x86_64-uec"
# Large Ops Number
- iniset $TEMPEST_CONF scenario large_ops_number ${TEMPEST_LARGE_OPS_NUMBER:-0}
+ iniset $TEMPEST_CONFIG scenario large_ops_number ${TEMPEST_LARGE_OPS_NUMBER:-0}
# Volume
if is_service_enabled c-bak; then
- iniset $TEMPEST_CONF volume volume_backup_enabled "True"
+ iniset $TEMPEST_CONFIG volume volume_backup_enabled "True"
fi
CINDER_MULTI_LVM_BACKEND=$(trueorfalse False $CINDER_MULTI_LVM_BACKEND)
if [ $CINDER_MULTI_LVM_BACKEND == "True" ]; then
- iniset $TEMPEST_CONF volume multi_backend_enabled "True"
- iniset $TEMPEST_CONF volume backend1_name "LVM_iSCSI"
- iniset $TEMPEST_CONF volume backend2_name "LVM_iSCSI_2"
+ iniset $TEMPEST_CONFIG volume-feature-enabled multi_backend "True"
+ iniset $TEMPEST_CONFIG volume backend1_name "LVM_iSCSI"
+ iniset $TEMPEST_CONFIG volume backend2_name "LVM_iSCSI_2"
+ fi
+
+ if [ $TEMPEST_VOLUME_DRIVER != "default" ]; then
+ iniset $TEMPEST_CONFIG volume vendor_name $TEMPEST_VOLUME_VENDOR
+ iniset $TEMPEST_CONFIG volume storage_protocol $TEMPEST_STORAGE_PROTOCOL
fi
# Dashboard
- iniset $TEMPEST_CONF dashboard dashboard_url "http://$SERVICE_HOST/"
- iniset $TEMPEST_CONF dashboard login_url "http://$SERVICE_HOST/auth/login/"
+ iniset $TEMPEST_CONFIG dashboard dashboard_url "http://$SERVICE_HOST/"
+ iniset $TEMPEST_CONFIG dashboard login_url "http://$SERVICE_HOST/auth/login/"
# cli
- iniset $TEMPEST_CONF cli cli_dir $NOVA_BIN_DIR
+ iniset $TEMPEST_CONFIG cli cli_dir $NOVA_BIN_DIR
# Networking
- iniset $TEMPEST_CONF network-feature-enabled api_extensions "${NETWORK_API_EXTENSIONS:-all}"
+ iniset $TEMPEST_CONFIG network-feature-enabled api_extensions "${NETWORK_API_EXTENSIONS:-all}"
# service_available
- for service in nova cinder glance neutron swift heat horizon ceilometer ironic savanna trove marconi; do
+ for service in ${TEMPEST_SERVICES//,/ }; do
if is_service_enabled $service ; then
- iniset $TEMPEST_CONF service_available $service "True"
+ iniset $TEMPEST_CONFIG service_available $service "True"
else
- iniset $TEMPEST_CONF service_available $service "False"
+ iniset $TEMPEST_CONFIG service_available $service "False"
fi
done
echo "Created tempest configuration file:"
- cat $TEMPEST_CONF
+ cat $TEMPEST_CONFIG
# Restore IFS
IFS=$ifs
diff --git a/lib/trove b/lib/trove
index 9c91024..bb45491 100644
--- a/lib/trove
+++ b/lib/trove
@@ -38,6 +38,10 @@
TROVE_BIN_DIR=$(get_python_exec_prefix)
fi
+# Tell Tempest this project is present
+TEMPEST_SERVICES+=,trove
+
+
# Functions
# ---------
@@ -125,14 +129,14 @@
# Copy api-paste file over to the trove conf dir and configure it
cp $TROVE_LOCAL_CONF_DIR/api-paste.ini $TROVE_CONF_DIR/api-paste.ini
TROVE_API_PASTE_INI=$TROVE_CONF_DIR/api-paste.ini
- iniset $TROVE_API_PASTE_INI filter:tokenauth auth_host $KEYSTONE_AUTH_HOST
- iniset $TROVE_API_PASTE_INI filter:tokenauth auth_port $KEYSTONE_AUTH_PORT
- iniset $TROVE_API_PASTE_INI filter:tokenauth auth_protocol $KEYSTONE_AUTH_PROTOCOL
- iniset $TROVE_API_PASTE_INI filter:tokenauth cafile $KEYSTONE_SSL_CA
- iniset $TROVE_API_PASTE_INI filter:tokenauth admin_tenant_name $SERVICE_TENANT_NAME
- iniset $TROVE_API_PASTE_INI filter:tokenauth admin_user trove
- iniset $TROVE_API_PASTE_INI filter:tokenauth admin_password $SERVICE_PASSWORD
- iniset $TROVE_API_PASTE_INI filter:tokenauth signing_dir $TROVE_AUTH_CACHE_DIR
+ iniset $TROVE_API_PASTE_INI filter:authtoken auth_host $KEYSTONE_AUTH_HOST
+ iniset $TROVE_API_PASTE_INI filter:authtoken auth_port $KEYSTONE_AUTH_PORT
+ iniset $TROVE_API_PASTE_INI filter:authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
+ iniset $TROVE_API_PASTE_INI filter:authtoken cafile $KEYSTONE_SSL_CA
+ iniset $TROVE_API_PASTE_INI filter:authtoken admin_tenant_name $SERVICE_TENANT_NAME
+ iniset $TROVE_API_PASTE_INI filter:authtoken admin_user trove
+ iniset $TROVE_API_PASTE_INI filter:authtoken admin_password $SERVICE_PASSWORD
+ iniset $TROVE_API_PASTE_INI filter:authtoken signing_dir $TROVE_AUTH_CACHE_DIR
# (Re)create trove conf files
rm -f $TROVE_CONF_DIR/trove.conf
@@ -144,8 +148,6 @@
iniset $TROVE_CONF_DIR/trove.conf DEFAULT add_addresses True
iniset $TROVE_LOCAL_CONF_DIR/trove-guestagent.conf.sample DEFAULT rabbit_password $RABBIT_PASSWORD
- iniset $TROVE_LOCAL_CONF_DIR/trove-guestagent.conf.sample DEFAULT sql_connection `database_connection_url trove`
- iniset $TROVE_LOCAL_CONF_DIR/trove-guestagent.conf.sample DEFAULT control_exchange trove
sed -i "s/localhost/$NETWORK_GATEWAY/g" $TROVE_LOCAL_CONF_DIR/trove-guestagent.conf.sample
setup_trove_logging $TROVE_CONF_DIR/trove.conf
diff --git a/stack.sh b/stack.sh
index 45d47c8..1a1460d 100755
--- a/stack.sh
+++ b/stack.sh
@@ -336,7 +336,6 @@
source $TOP_DIR/lib/neutron
source $TOP_DIR/lib/baremetal
source $TOP_DIR/lib/ldap
-source $TOP_DIR/lib/ironic
# Extras Source
# --------------
@@ -746,11 +745,6 @@
# don't be naive and add to existing line!
fi
-if is_service_enabled ir-api ir-cond; then
- install_ironic
- install_ironicclient
- configure_ironic
-fi
# Extras Install
# --------------
@@ -966,15 +960,6 @@
fi
-# Ironic
-# ------
-
-if is_service_enabled ir-api ir-cond; then
- echo_summary "Configuring Ironic"
- init_ironic
-fi
-
-
# Neutron
# -------
@@ -1101,12 +1086,6 @@
start_glance
fi
-# Launch the Ironic services
-if is_service_enabled ir-api ir-cond; then
- echo_summary "Starting Ironic"
- start_ironic
-fi
-
# Create an access key and secret key for nova ec2 register image
if is_service_enabled key && is_service_enabled swift3 && is_service_enabled nova; then
NOVA_USER_ID=$(keystone user-list | grep ' nova ' | get_field 1)
@@ -1124,8 +1103,8 @@
# Create a randomized default value for the keymgr's fixed_key
if is_service_enabled nova; then
FIXED_KEY=""
- for i in $(seq 1 64);
- do FIXED_KEY+=$(echo "obase=16; $(($RANDOM % 16))" | bc);
+ for i in $(seq 1 64); do
+ FIXED_KEY+=$(echo "obase=16; $(($RANDOM % 16))" | bc);
done;
iniset $NOVA_CONF keymgr fixed_key "$FIXED_KEY"
fi
diff --git a/stackrc b/stackrc
index b138f42..7eed60c 100644
--- a/stackrc
+++ b/stackrc
@@ -37,6 +37,12 @@
# enable_service tempest
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,mysql
+# Tell Tempest which services are available. The default is set here as
+# Tempest falls late in the configuration sequence. This differs from
+# ``ENABLED_SERVICES`` in that the project names are used here rather than
+# the service names, i.e.: TEMPEST_SERVICES="key,glance,nova"
+TEMPEST_SERVICES=""
+
# Set the default Nova APIs to enable
NOVA_ENABLED_APIS=ec2,osapi_compute,metadata
@@ -59,6 +65,9 @@
source $RC_DIR/.localrc.auto
fi
+# This can be used to turn database query logging on and off
+# (currently only implemented for MySQL backend)
+DATABASE_QUERY_LOGGING=$(trueorfalse True $DATABASE_QUERY_LOGGING)
# Repositories
# ------------
diff --git a/tests/functions.sh b/tests/functions.sh
index 95dafe1..06a4134 100755
--- a/tests/functions.sh
+++ b/tests/functions.sh
@@ -49,8 +49,7 @@
ENABLED_SERVICES="$start"
enable_service $add
- if [ "$ENABLED_SERVICES" = "$finish" ]
- then
+ if [ "$ENABLED_SERVICES" = "$finish" ]; then
echo "OK: $start + $add -> $ENABLED_SERVICES"
else
echo "changing $start to $finish with $add failed: $ENABLED_SERVICES"
@@ -76,8 +75,7 @@
ENABLED_SERVICES="$start"
disable_service "$del"
- if [ "$ENABLED_SERVICES" = "$finish" ]
- then
+ if [ "$ENABLED_SERVICES" = "$finish" ]; then
echo "OK: $start - $del -> $ENABLED_SERVICES"
else
echo "changing $start to $finish with $del failed: $ENABLED_SERVICES"
@@ -102,8 +100,7 @@
ENABLED_SERVICES=a,b,c
disable_all_services
-if [[ -z "$ENABLED_SERVICES" ]]
-then
+if [[ -z "$ENABLED_SERVICES" ]]; then
echo "OK"
else
echo "disabling all services FAILED: $ENABLED_SERVICES"
@@ -118,8 +115,7 @@
ENABLED_SERVICES="$start"
disable_negated_services
- if [ "$ENABLED_SERVICES" = "$finish" ]
- then
+ if [ "$ENABLED_SERVICES" = "$finish" ]; then
echo "OK: $start + $add -> $ENABLED_SERVICES"
else
echo "changing $start to $finish failed: $ENABLED_SERVICES"
diff --git a/tools/bash8.py b/tools/bash8.py
index edf7da4..7552e0d 100755
--- a/tools/bash8.py
+++ b/tools/bash8.py
@@ -21,17 +21,37 @@
# Currently Supported checks
#
# Errors
+# Basic white space errors, for consistent indenting
# - E001: check that lines do not end with trailing whitespace
# - E002: ensure that indents are only spaces, and not hard tabs
# - E003: ensure all indents are a multiple of 4 spaces
+#
+# Structure errors
+#
+# A set of rules that help keep things consistent in control blocks.
+# These are ignored on long lines that have a continuation, because
+# unrolling that is kind of "interesting"
+#
+# - E010: *do* not on the same line as *for*
+# - E011: *then* not on the same line as *if*
import argparse
import fileinput
import re
import sys
-
ERRORS = 0
+IGNORE = None
+
+
+def register_ignores(ignores):
+ global IGNORE
+ if ignores:
+ IGNORE = '^(' + '|'.join(ignores.split(',')) + ')'
+
+
+def should_ignore(error):
+ return IGNORE and re.search(IGNORE, error)
def print_error(error, line):
@@ -41,6 +61,27 @@
print(" - %s: L%s" % (fileinput.filename(), fileinput.filelineno()))
+def not_continuation(line):
+ return not re.search('\\\\$', line)
+
+
+def check_for_do(line):
+ if not_continuation(line):
+ match = re.match('^\s*(for|while|until)\s', line)
+ if match:
+ operator = match.group(1).strip()
+ if not re.search(';\s*do(\b|$)', line):
+ print_error('E010: Do not on same line as %s' % operator,
+ line)
+
+
+def check_if_then(line):
+ if not_continuation(line):
+ if re.search('^\s*if \[', line):
+ if not re.search(';\s*then(\b|$)', line):
+ print_error('E011: Then non on same line as if', line)
+
+
def check_no_trailing_whitespace(line):
if re.search('[ \t]+$', line):
print_error('E001: Trailing Whitespace', line)
@@ -90,6 +131,8 @@
check_no_trailing_whitespace(logical_line)
check_indents(logical_line)
+ check_for_do(logical_line)
+ check_if_then(logical_line)
def get_options():
@@ -97,11 +140,13 @@
description='A bash script style checker')
parser.add_argument('files', metavar='file', nargs='+',
help='files to scan for errors')
+ parser.add_argument('-i', '--ignore', help='Rules to ignore')
return parser.parse_args()
def main():
opts = get_options()
+ register_ignores(opts.ignore)
check_files(opts.files)
if ERRORS > 0:
diff --git a/tools/create_userrc.sh b/tools/create_userrc.sh
index 5f4c486..e2d855c 100755
--- a/tools/create_userrc.sh
+++ b/tools/create_userrc.sh
@@ -71,8 +71,7 @@
ROLE=Member
USER_NAME=""
USER_PASS=""
-while [ $# -gt 0 ]
-do
+while [ $# -gt 0 ]; do
case "$1" in
-h|--help) display_help; exit 0 ;;
--os-username) export OS_USERNAME=$2; shift ;;
diff --git a/tools/docker/install_docker.sh b/tools/docker/install_docker.sh
index 375cfe9..4fa2386 100755
--- a/tools/docker/install_docker.sh
+++ b/tools/docker/install_docker.sh
@@ -55,21 +55,10 @@
die $LINENO "docker did not start"
fi
+# Get guest container image
+docker pull $DOCKER_IMAGE
+docker tag $DOCKER_IMAGE $DOCKER_IMAGE_NAME
-# Get Docker image
-if [[ ! -r $FILES/docker-ut.tar.gz ]]; then
- (cd $FILES; curl -OR $DOCKER_IMAGE)
-fi
-if [[ ! -r $FILES/docker-ut.tar.gz ]]; then
- die $LINENO "Docker image unavailable"
-fi
-docker import - $DOCKER_IMAGE_NAME <$FILES/docker-ut.tar.gz
-
-# Get Docker registry image
-if [[ ! -r $FILES/docker-registry.tar.gz ]]; then
- (cd $FILES; curl -OR $DOCKER_REGISTRY_IMAGE)
-fi
-if [[ ! -r $FILES/docker-registry.tar.gz ]]; then
- die $LINENO "Docker registry image unavailable"
-fi
-docker import - $DOCKER_REGISTRY_IMAGE_NAME <$FILES/docker-registry.tar.gz
+# Get docker-registry image
+docker pull $REGISTRY_IMAGE
+docker tag $REGISTRY_IMAGE $REGISTRY_IMAGE_NAME
diff --git a/tools/sar_filter.py b/tools/sar_filter.py
index ed8c196..24ef0e4 100755
--- a/tools/sar_filter.py
+++ b/tools/sar_filter.py
@@ -25,10 +25,10 @@
def parse_line(line):
- m = re.search('(\d\d:\d\d:\d\d \w\w)(\s+((\S+)\s*)+)', line)
+ m = re.search('(\d\d:\d\d:\d\d( \w\w)?)(\s+((\S+)\s*)+)', line)
if m:
date = m.group(1)
- data = m.group(2).rstrip()
+ data = m.group(3).rstrip()
return date, data
else:
return None, None
@@ -47,6 +47,10 @@
data_line = ""
printed_header = False
current_ts = None
+
+# print out the first sysstat line regardless
+print process.stdout.readline()
+
while True:
nextline = process.stdout.readline()
if nextline == '' and process.poll() is not None:
diff --git a/tools/xen/install_os_domU.sh b/tools/xen/install_os_domU.sh
index 41b184c..d0d81a2 100755
--- a/tools/xen/install_os_domU.sh
+++ b/tools/xen/install_os_domU.sh
@@ -191,11 +191,9 @@
domid=$(xe vm-list name-label="$GUEST_NAME" params=dom-id minimal=true)
port=$(xenstore-read /local/domain/$domid/console/vnc-port)
echo "vncviewer -via root@$mgmt_ip localhost:${port:2}"
- while true
- do
+ while true; do
state=$(xe_min vm-list name-label="$GUEST_NAME" power-state=halted)
- if [ -n "$state" ]
- then
+ if [ -n "$state" ]; then
break
else
echo -n "."
diff --git a/tools/xen/scripts/install-os-vpx.sh b/tools/xen/scripts/install-os-vpx.sh
index 7b0d891..b9b65fd 100755
--- a/tools/xen/scripts/install-os-vpx.sh
+++ b/tools/xen/scripts/install-os-vpx.sh
@@ -42,8 +42,7 @@
get_params()
{
- while getopts "hbn:r:l:t:" OPTION;
- do
+ while getopts "hbn:r:l:t:" OPTION; do
case $OPTION in
h) usage
exit 1
@@ -63,8 +62,7 @@
;;
esac
done
- if [[ -z $BRIDGE ]]
- then
+ if [[ -z $BRIDGE ]]; then
BRIDGE=xenbr0
fi
@@ -91,8 +89,7 @@
find_network()
{
result=$(xe_min network-list bridge="$1")
- if [ "$result" = "" ]
- then
+ if [ "$result" = "" ]; then
result=$(xe_min network-list name-label="$1")
fi
echo "$result"
@@ -121,8 +118,7 @@
{
local v="$1"
IFS=,
- for vif in $(xe_min vif-list vm-uuid="$v")
- do
+ for vif in $(xe_min vif-list vm-uuid="$v"); do
xe vif-destroy uuid="$vif"
done
unset IFS
diff --git a/tools/xen/scripts/on_exit.sh b/tools/xen/scripts/on_exit.sh
index a4db39c..2441e3d 100755
--- a/tools/xen/scripts/on_exit.sh
+++ b/tools/xen/scripts/on_exit.sh
@@ -7,8 +7,7 @@
on_exit()
{
- for i in $(seq $((${#on_exit_hooks[*]} - 1)) -1 0)
- do
+ for i in $(seq $((${#on_exit_hooks[*]} - 1)) -1 0); do
eval "${on_exit_hooks[$i]}"
done
}
@@ -17,8 +16,7 @@
{
local n=${#on_exit_hooks[*]}
on_exit_hooks[$n]="$*"
- if [[ $n -eq 0 ]]
- then
+ if [[ $n -eq 0 ]]; then
trap on_exit EXIT
fi
}
diff --git a/tools/xen/test_functions.sh b/tools/xen/test_functions.sh
index 373d996..838f86a 100755
--- a/tools/xen/test_functions.sh
+++ b/tools/xen/test_functions.sh
@@ -227,16 +227,14 @@
}
[ "$1" = "run_tests" ] && {
- for testname in $($0)
- do
+ for testname in $($0); do
echo "$testname"
before_each_test
(
set -eux
$testname
)
- if [ "$?" != "0" ]
- then
+ if [ "$?" != "0" ]; then
echo "FAIL"
exit 1
else
diff --git a/tools/xen/xenrc b/tools/xen/xenrc
index cd28234..b355a10 100644
--- a/tools/xen/xenrc
+++ b/tools/xen/xenrc
@@ -35,7 +35,7 @@
GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}
# Extracted variables for OpenStack VM network device numbers.
-# Make sure, they form a continous sequence starting from 0
+# Make sure they form a continuous sequence starting from 0
MGT_DEV_NR=0
VM_DEV_NR=1
PUB_DEV_NR=2
diff --git a/unstack.sh b/unstack.sh
index 92d0642..ea9c27d 100755
--- a/unstack.sh
+++ b/unstack.sh
@@ -55,7 +55,6 @@
source $TOP_DIR/lib/neutron
source $TOP_DIR/lib/baremetal
source $TOP_DIR/lib/ldap
-source $TOP_DIR/lib/ironic
# Extras Source
# --------------
@@ -118,12 +117,6 @@
cleanup_swift
fi
-# Ironic runs daemons
-if is_service_enabled ir-api ir-cond; then
- stop_ironic
- cleanup_ironic
-fi
-
# Apache has the WSGI processes
if is_service_enabled horizon; then
stop_horizon