Merge "localize user/project variables in tempest"
diff --git a/.gitignore b/.gitignore
index 8870bb3..a5a17c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
*.log.[1-9]
*.pem
.localrc.auto
+.localrc.password
.prereqs
.tox
.stackenv
@@ -11,6 +12,8 @@
doc/files
doc/build
files/*.gz
+files/*.rpm
+files/*.rpm.*
files/*.qcow2
files/*.img
files/images
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 e33081c..46d691c 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -108,6 +108,7 @@
# Bind hosts
KEYSTONE_ADMIN_BIND_HOST=${KEYSTONE_ADMIN_BIND_HOST:-$KEYSTONE_SERVICE_HOST}
# Set the tenant for service accounts in Keystone
+SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
SERVICE_PROJECT_NAME=${SERVICE_TENANT_NAME:-service}
# if we are running with SSL use https protocols
@@ -303,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
@@ -316,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
@@ -563,6 +562,8 @@
if is_ssl_enabled_service "key"; then
enable_mod_ssl
fi
+ elif [ "$KEYSTONE_DEPLOY" == "uwsgi" ]; then
+ pip_install uwsgi
fi
}
@@ -582,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 ebf9825..7d6e881 100644
--- a/lib/neutron-legacy
+++ b/lib/neutron-legacy
@@ -73,6 +73,16 @@
PRIVATE_SUBNET_NAME=${PRIVATE_SUBNET_NAME:-"private-subnet"}
PUBLIC_SUBNET_NAME=${PUBLIC_SUBNET_NAME:-"public-subnet"}
+# Subnetpool defaults
+SUBNETPOOL_NAME=${SUBNETPOOL_NAME:-"shared-default-subnetpool"}
+
+SUBNETPOOL_PREFIX_V4=${SUBNETPOOL_PREFIX_V4:-10.0.0.0/8}
+SUBNETPOOL_PREFIX_V6=${SUBNETPOOL_PREFIX_V6:-2001:db8:8000::/48}
+
+SUBNETPOOL_SIZE_V4=${SUBNETPOOL_SIZE_V4:-24}
+SUBNETPOOL_SIZE_V6=${SUBNETPOOL_SIZE_V6:-64}
+
+
if is_ssl_enabled_service "neutron" || is_service_enabled tls-proxy; then
Q_PROTOCOL="https"
fi
@@ -580,6 +590,8 @@
fi
fi
+ AUTO_ALLOCATE_EXT=$(neutron ext-list | grep 'auto-allocated-topology' | get_field 1)
+ SUBNETPOOL_EXT=$(neutron ext-list | grep 'subnet_allocation' | get_field 1)
if [[ "$Q_L3_ENABLED" == "True" ]]; then
# Create a router, and add the private subnet as one of its interfaces
if [[ "$Q_L3_ROUTER_PER_TENANT" == "True" ]]; then
@@ -592,11 +604,23 @@
die_if_not_set $LINENO ROUTER_ID "Failure creating ROUTER_ID for $Q_ROUTER_NAME"
fi
+ # if the extension is available, then mark the external
+ # network as default, and provision default subnetpools
+ EXTERNAL_NETWORK_FLAGS="--router:external"
+ if [[ -n $AUTO_ALLOCATE_EXT && -n $SUBNETPOOL_EXT ]]; then
+ EXTERNAL_NETWORK_FLAGS="$EXTERNAL_NETWORK_FLAGS --is-default"
+ if [[ "$IP_VERSION" =~ 4.* ]]; then
+ SUBNETPOOL_V4_ID=$(neutron subnetpool-create $SUBNETPOOL_NAME --default-prefixlen $SUBNETPOOL_SIZE_V4 --pool-prefix $SUBNETPOOL_PREFIX_V4 --shared --is-default=True | grep ' id ' | get_field 2)
+ fi
+ if [[ "$IP_VERSION" =~ .*6 ]]; then
+ SUBNETPOOL_V6_ID=$(neutron subnetpool-create $SUBNETPOOL_NAME --default-prefixlen $SUBNETPOOL_SIZE_V6 --pool-prefix $SUBNETPOOL_PREFIX_V6 --shared --is-default=True | grep ' id ' | get_field 2)
+ fi
+ fi
# Create an external network, and a subnet. Configure the external network as router gw
if [ "$Q_USE_PROVIDERNET_FOR_PUBLIC" = "True" ]; then
- EXT_NET_ID=$(neutron net-create "$PUBLIC_NETWORK_NAME" -- --router:external=True --provider:network_type=flat --provider:physical_network=${PUBLIC_PHYSICAL_NETWORK} | grep ' id ' | get_field 2)
+ EXT_NET_ID=$(neutron net-create "$PUBLIC_NETWORK_NAME" -- $EXTERNAL_NETWORK_FLAGS --provider:network_type=flat --provider:physical_network=${PUBLIC_PHYSICAL_NETWORK} | grep ' id ' | get_field 2)
else
- EXT_NET_ID=$(neutron net-create "$PUBLIC_NETWORK_NAME" -- --router:external=True | grep ' id ' | get_field 2)
+ EXT_NET_ID=$(neutron net-create "$PUBLIC_NETWORK_NAME" -- $EXTERNAL_NETWORK_FLAGS | grep ' id ' | get_field 2)
fi
die_if_not_set $LINENO EXT_NET_ID "Failure creating EXT_NET_ID for $PUBLIC_NETWORK_NAME"
@@ -689,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/neutron_plugins/vmware_dvs b/lib/neutron_plugins/vmware_dvs
deleted file mode 100644
index 587d5a6..0000000
--- a/lib/neutron_plugins/vmware_dvs
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-# This file is needed so Q_PLUGIN=vmware_dvs will work.
-
-# FIXME(salv-orlando): This function should not be here, but unfortunately
-# devstack calls it before the external plugins are fetched
-function has_neutron_plugin_security_group {
- # 0 means True here
- return 0
-}
diff --git a/lib/neutron_plugins/vmware_nsx b/lib/neutron_plugins/vmware_nsx
deleted file mode 100644
index b6c1c9c..0000000
--- a/lib/neutron_plugins/vmware_nsx
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-# This file is needed so Q_PLUGIN=vmware_nsx will work.
-
-# FIXME(salv-orlando): This function should not be here, but unfortunately
-# devstack calls it before the external plugins are fetched
-function has_neutron_plugin_security_group {
- # 0 means True here
- return 0
-}
diff --git a/lib/neutron_plugins/vmware_nsx_v b/lib/neutron_plugins/vmware_nsx_v
deleted file mode 100644
index 3d33c65..0000000
--- a/lib/neutron_plugins/vmware_nsx_v
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-#
-# This file is needed so Q_PLUGIN=vmware_nsx_v will work.
-
-# FIXME(salv-orlando): This function should not be here, but unfortunately
-# devstack calls it before the external plugins are fetched
-function has_neutron_plugin_security_group {
- # 0 means True here
- return 0
-}
diff --git a/lib/neutron_plugins/vmware_nsx_v3 b/lib/neutron_plugins/vmware_nsx_v3
deleted file mode 100644
index 6d8a6e6..0000000
--- a/lib/neutron_plugins/vmware_nsx_v3
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-# This file is needed so Q_PLUGIN=vmware_nsx_v3 will work.
-
-# FIXME(salv-orlando): This function should not be here, but unfortunately
-# devstack calls it before the external plugins are fetched
-function has_neutron_plugin_security_group {
- # 0 means True here
- return 0
-}
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