Merge "Use SCREEN_NAME variable instead of hardcode in unstack and rejoin scripts"
diff --git a/functions b/functions
index 8e9820c..5730b6c 100644
--- a/functions
+++ b/functions
@@ -94,12 +94,14 @@
local path_len
# vmdk adapter type
- local vmdk_adapter_type="$(head -25 $image | { grep -a -F -m 1 'ddb.adapterType =' $image || true; })"
+ local vmdk_adapter_type
+ vmdk_adapter_type="$(head -25 $image | { grep -a -F -m 1 'ddb.adapterType =' $image || true; })"
vmdk_adapter_type="${vmdk_adapter_type#*\"}"
vmdk_adapter_type="${vmdk_adapter_type%?}"
# vmdk disk type
- local vmdk_create_type="$(head -25 $image | { grep -a -F -m 1 'createType=' $image || true; })"
+ local vmdk_create_type
+ vmdk_create_type="$(head -25 $image | { grep -a -F -m 1 'createType=' $image || true; })"
vmdk_create_type="${vmdk_create_type#*\"}"
vmdk_create_type="${vmdk_create_type%\"*}"
@@ -109,7 +111,8 @@
vmdk_disktype="sparse"
elif [[ "$vmdk_create_type" = "monolithicFlat" || "$vmdk_create_type" = "vmfs" ]]; then
# Attempt to retrieve the ``*-flat.vmdk``
- local flat_fname="$(head -25 $image | { grep -G 'RW\|RDONLY [0-9]+ FLAT\|VMFS' $image || true; })"
+ local flat_fname
+ flat_fname="$(head -25 $image | { grep -G 'RW\|RDONLY [0-9]+ FLAT\|VMFS' $image || true; })"
flat_fname="${flat_fname#*\"}"
flat_fname="${flat_fname%?}"
if [[ -z "$flat_fname" ]]; then
@@ -407,8 +410,10 @@
function get_instance_ip {
local vm_id=$1
local network_name=$2
- local nova_result="$(nova show $vm_id)"
+ local nova_result
local ip
+
+ nova_result="$(nova show $vm_id)"
ip=$(echo "$nova_result" | grep "$network_name" | get_field 2)
if [[ $ip = "" ]];then
echo "$nova_result"
diff --git a/functions-common b/functions-common
index ed444bb..a26cc50 100644
--- a/functions-common
+++ b/functions-common
@@ -994,7 +994,7 @@
# out of tree, as it is used by nova and neutron.
# figure out a way to refactor nova/neutron code to eliminate this
function is_ironic_hardware {
- is_service_enabled ironic && [[ -n "${IRONIC_DEPLOY_DRIVER##*_ssh}" ]] && return 0
+ is_service_enabled ironic && [[ "$IRONIC_IS_HARDWARE" == "True" ]] && return 0
return 1
}
@@ -1213,7 +1213,7 @@
local files_to_parse=""
local package_dir=""
for plugin in ${DEVSTACK_PLUGINS//,/ }; do
- local package_dir="$(_get_package_dir ${GITDIR[$plugin]}/devstack/files)"
+ package_dir="$(_get_package_dir ${GITDIR[$plugin]}/devstack/files)"
files_to_parse+=" $package_dir/$plugin"
done
echo "$(_parse_package_files $files_to_parse)"
diff --git a/inc/ini-config b/inc/ini-config
index e99b088..1f12343 100644
--- a/inc/ini-config
+++ b/inc/ini-config
@@ -30,7 +30,8 @@
local option=$3
shift 3
- local values="$(iniget_multiline $file $section $option) $@"
+ local values
+ values="$(iniget_multiline $file $section $option) $@"
iniset_multiline $sudo $file $section $option $values
$xtrace
}
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index 204c257..852bac4 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -102,7 +102,7 @@
elif is_fedora || is_suse; then
install_package postgresql-server
if is_fedora; then
- sudo systemctl enable postgresql-server
+ sudo systemctl enable postgresql
fi
else
exit_distro_not_supported "postgresql installation"
diff --git a/lib/keystone b/lib/keystone
index ff9714f..5ed7de9 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -304,7 +304,6 @@
iniset "$KEYSTONE_PUBLIC_UWSGI_FILE" uwsgi wsgi-file "$KEYSTONE_BIN_DIR/keystone-wsgi-public"
# This is running standalone
- iniset "$KEYSTONE_PUBLIC_UWSGI_FILE" uwsgi master true
iniset "$KEYSTONE_PUBLIC_UWSGI_FILE" uwsgi threads $(nproc)
iniset "$KEYSTONE_PUBLIC_UWSGI_FILE" uwsgi enable-threads true
iniset "$KEYSTONE_PUBLIC_UWSGI_FILE" uwsgi plugins python
@@ -317,7 +316,6 @@
iniset "$KEYSTONE_ADMIN_UWSGI_FILE" uwsgi wsgi-file "$KEYSTONE_BIN_DIR/keystone-wsgi-admin"
# This is running standalone
- iniset "$KEYSTONE_ADMIN_UWSGI_FILE" uwsgi master true
iniset "$KEYSTONE_ADMIN_UWSGI_FILE" uwsgi threads $API_WORKERS
iniset "$KEYSTONE_ADMIN_UWSGI_FILE" uwsgi enable-threads true
iniset "$KEYSTONE_ADMIN_UWSGI_FILE" uwsgi plugins python
@@ -363,10 +361,10 @@
# alt_demo alt_demo Member, anotherrole
# invisible_to_admin demo Member
-# Group Users Roles Tenant
+# Group Users Roles Tenant
# ------------------------------------------------------------------
-# admins admin admin admin
-# nonadmins demo Member, anotherrole demo
+# admins admin admin admin
+# nonadmins demo, alt_demo Member, anotherrole demo, alt_demo
# Migrated from keystone_data.sh
@@ -564,6 +562,8 @@
if is_ssl_enabled_service "key"; then
enable_mod_ssl
fi
+ elif [ "$KEYSTONE_DEPLOY" == "uwsgi" ]; then
+ pip_install uwsgi
fi
}
@@ -583,8 +583,8 @@
tail_log key /var/log/$APACHE_NAME/keystone.log
tail_log key-access /var/log/$APACHE_NAME/keystone_access.log
elif [ "$KEYSTONE_DEPLOY" == "uwsgi" ]; then
- run_process key "uwsgi $KEYSTONE_PUBLIC_UWSGI_FILE" "" "key-p"
- run_process key "uwsgi $KEYSTONE_ADMIN_UWSGI_FILE" "" "key-a"
+ run_process key "$KEYSTONE_BIN_DIR/uwsgi $KEYSTONE_PUBLIC_UWSGI_FILE" "" "key-p"
+ run_process key "$KEYSTONE_BIN_DIR/uwsgi $KEYSTONE_ADMIN_UWSGI_FILE" "" "key-a"
else # eventlet
# Start Keystone in a screen window
run_process key "$KEYSTONE_BIN_DIR/keystone-all --config-file $KEYSTONE_CONF"
diff --git a/lib/neutron-legacy b/lib/neutron-legacy
index d288e06..7d6e881 100644
--- a/lib/neutron-legacy
+++ b/lib/neutron-legacy
@@ -713,9 +713,12 @@
# Start running processes, including screen
function start_neutron_service_and_check {
- local cfg_file_options="$(determine_config_files neutron-server)"
local service_port=$Q_PORT
local service_protocol=$Q_PROTOCOL
+ local cfg_file_options
+
+ cfg_file_options="$(determine_config_files neutron-server)"
+
if is_service_enabled tls-proxy; then
service_port=$Q_PORT_INT
service_protocol="http"
diff --git a/lib/tempest b/lib/tempest
index f75d755..caf8f11 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -176,17 +176,18 @@
sudo install -d -o $STACK_USER $TEMPEST_CONFIG_DIR
rm -f $TEMPEST_CONFIG
- password=${ADMIN_PASSWORD:-secrete}
+ local password=${ADMIN_PASSWORD:-secrete}
# See ``lib/keystone`` where these users and tenants are set up
- ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
- ADMIN_TENANT_NAME=${ADMIN_TENANT_NAME:-admin}
- ADMIN_DOMAIN_NAME=${ADMIN_DOMAIN_NAME:-Default}
- 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}
- ADMIN_TENANT_ID=$(openstack project list | awk "/ admin / { print \$2 }")
+ local admin_username=${ADMIN_USERNAME:-admin}
+ local admin_tenant_name=${ADMIN_TENANT_NAME:-admin}
+ local admin_domain_name=${ADMIN_DOMAIN_NAME:-Default}
+ local tempest_username=${TEMPEST_USERNAME:-demo}
+ local tempest_tenant_name=${TEMPEST_TENANT_NAME:-demo}
+ local alt_username=${ALT_USERNAME:-alt_demo}
+ local alt_tenant_name=${ALT_TENANT_NAME:-alt_demo}
+ local admin_tenant_id
+ admin_tenant_id=$(openstack project list | awk "/ admin / { print \$2 }")
if is_service_enabled nova; then
# If ``DEFAULT_INSTANCE_TYPE`` is not declared, use the new behavior
@@ -260,11 +261,11 @@
iniset $TEMPEST_CONFIG identity uri "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:5000/v2.0/"
iniset $TEMPEST_CONFIG identity uri_v3 "$KEYSTONE_SERVICE_URI_V3"
if [[ "$TEMPEST_HAS_ADMIN" == "True" ]]; then
- iniset $TEMPEST_CONFIG auth admin_username $ADMIN_USERNAME
+ iniset $TEMPEST_CONFIG auth admin_username $admin_username
iniset $TEMPEST_CONFIG auth admin_password "$password"
- iniset $TEMPEST_CONFIG auth admin_tenant_name $ADMIN_TENANT_NAME
- iniset $TEMPEST_CONFIG auth admin_tenant_id $ADMIN_TENANT_ID
- iniset $TEMPEST_CONFIG auth admin_domain_name $ADMIN_DOMAIN_NAME
+ iniset $TEMPEST_CONFIG auth admin_tenant_name $admin_tenant_name
+ iniset $TEMPEST_CONFIG auth admin_tenant_id $admin_tenant_id
+ iniset $TEMPEST_CONFIG auth admin_domain_name $admin_domain_name
fi
if [ "$ENABLE_IDENTITY_V2" == "False" ]; then
# Only Identity v3 is available; then skip Identity API v2 tests
@@ -531,8 +532,9 @@
# this tempest service list needs to be all the services that
# tempest supports, otherwise we can have an erroneous set of
# defaults (something defaulting true in Tempest, but not listed here).
- TEMPEST_SERVICES="key,glance,nova,neutron,cinder,swift,heat,ceilometer,horizon,sahara,ironic,trove"
- for service in ${TEMPEST_SERVICES//,/ }; do
+ local service
+ local tempest_services="key,glance,nova,neutron,cinder,swift,heat,ceilometer,horizon,sahara,ironic,trove"
+ for service in ${tempest_services//,/ }; do
if is_service_enabled $service ; then
iniset $TEMPEST_CONFIG service_available $service "True"
else
@@ -550,9 +552,9 @@
iniset $TEMPEST_CONFIG auth tempest_roles "Member"
if [[ $TEMPEST_USE_TEST_ACCOUNTS == "True" ]]; then
if [[ $TEMPEST_HAS_ADMIN == "True" ]]; then
- tempest-account-generator -c $TEMPEST_CONFIG --os-username $ADMIN_USERNAME --os-password $ADMIN_PASSWORD --os-tenant-name $ADMIN_TENANT_NAME -r $TEMPEST_CONCURRENCY --with-admin etc/accounts.yaml
+ tempest-account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password $admin_password --os-tenant-name $admin_tenant_name -r $TEMPEST_CONCURRENCY --with-admin etc/accounts.yaml
else
- tempest-account-generator -c $TEMPEST_CONFIG --os-username $ADMIN_USERNAME --os-password $ADMIN_PASSWORD --os-tenant-name $ADMIN_TENANT_NAME -r $TEMPEST_CONCURRENCY etc/accounts.yaml
+ tempest-account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password $admin_password --os-tenant-name $admin_tenant_name -r $TEMPEST_CONCURRENCY etc/accounts.yaml
fi
iniset $TEMPEST_CONFIG auth use_dynamic_credentials False
iniset $TEMPEST_CONFIG auth test_accounts_file "etc/accounts.yaml"
diff --git a/tools/worlddump.py b/tools/worlddump.py
index d129374..01f601c 100755
--- a/tools/worlddump.py
+++ b/tools/worlddump.py
@@ -18,6 +18,7 @@
import argparse
import datetime
+from distutils import spawn
import fnmatch
import os
import os.path
@@ -61,6 +62,13 @@
print "*** Failed to run: %s" % cmd
+def _find_cmd(cmd):
+ if not spawn.find_executable(cmd):
+ print "*** %s not found: skipping" % cmd
+ return False
+ return True
+
+
def _header(name):
print
print name
@@ -89,6 +97,8 @@
def ebtables_dump():
tables = ['filter', 'nat', 'broute']
_header("EB Tables Dump")
+ if not _find_cmd('ebtables'):
+ return
for table in tables:
_dump_cmd("sudo ebtables -t %s -L" % table)
@@ -124,6 +134,11 @@
def ovs_dump():
_header("Open vSwitch Dump")
+ # NOTE(cdent): If we're not using neutron + ovs these commands
+ # will not be present so
+ if not _find_cmd('ovs-vsctl'):
+ return
+
# NOTE(ihrachys): worlddump is used outside of devstack context (f.e. in
# grenade), so there is no single place to determine the bridge names from.
# Hardcode for now.
diff --git a/tools/xen/functions b/tools/xen/functions
index 8c674dc..cf14568 100644
--- a/tools/xen/functions
+++ b/tools/xen/functions
@@ -23,9 +23,10 @@
if [ -d "/boot/guest" ]; then
echo "INFO: /boot/guest directory already exists, using that" >&2
else
- local LOCALPATH="$(get_local_sr_path)/os-guest-kernels"
- mkdir -p $LOCALPATH
- ln -s $LOCALPATH /boot/guest
+ local local_path
+ local_path="$(get_local_sr_path)/os-guest-kernels"
+ mkdir -p $local_path
+ ln -s $local_path /boot/guest
fi
}
@@ -33,9 +34,10 @@
if [ -d "/images" ]; then
echo "INFO: /images directory already exists, using that" >&2
else
- local LOCALPATH="$(get_local_sr_path)/os-images"
- mkdir -p $LOCALPATH
- ln -s $LOCALPATH /images
+ local local_path
+ local_path="$(get_local_sr_path)/os-images"
+ mkdir -p $local_path
+ ln -s $local_path /images
fi
}
@@ -73,7 +75,7 @@
if [ -z "$ipaddress" ]; then
sleep $period
- ((i++))
+ i=$((i+1))
else
echo $ipaddress
break
diff --git a/tox.ini b/tox.ini
index aaae08c..ef557fb 100644
--- a/tox.ini
+++ b/tox.ini
@@ -8,6 +8,9 @@
install_command = pip install {opts} {packages}
[testenv:bashate]
+# if you want to test out some changes you have made to bashate
+# against devstack, just set BASHATE_INSTALL_PATH=/path/... to your
+# modified bashate tree
deps =
{env:BASHATE_INSTALL_PATH:bashate==0.4.0}
whitelist_externals = bash