Merge "Support for single interface Neutron networking with OVS"
diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst
index 7d06658..79d911c 100644
--- a/doc/source/configuration.rst
+++ b/doc/source/configuration.rst
@@ -247,6 +247,21 @@
RECLONE=yes
+Upgrade packages installed by pip
+---------------------------------
+
+ | *Default: ``PIP_UPGRADE=""``*
+ | By default ``stack.sh`` only installs Python packages if no version
+ is currently installed or the current version does not match a specified
+ requirement. If ``PIP_UPGRADE`` is set to ``True`` then existing required
+ Python packages will be upgraded to the most recent version that
+ matches requirements.
+ |
+
+ ::
+
+ PIP_UPGRADE=True
+
Swift
-----
diff --git a/functions-common b/functions-common
index 48e400d..9bad981 100644
--- a/functions-common
+++ b/functions-common
@@ -1501,6 +1501,33 @@
done
}
+# plugin_override_defaults
+#
+# Run an extremely early setting phase for plugins that allows default
+# overriding of services.
+function plugin_override_defaults {
+ local plugins="${DEVSTACK_PLUGINS}"
+ local plugin
+
+ # short circuit if nothing to do
+ if [[ -z $plugins ]]; then
+ return
+ fi
+
+ echo "Overriding Configuration Defaults"
+ for plugin in ${plugins//,/ }; do
+ local dir=${GITDIR[$plugin]}
+ # source any overrides
+ if [[ -f $dir/devstack/override-defaults ]]; then
+ # be really verbose that an override is happening, as it
+ # may not be obvious if things fail later.
+ echo "$plugin has overriden the following defaults"
+ cat $dir/devstack/override-defaults
+ source $dir/devstack/override-defaults
+ fi
+ done
+}
+
# run_plugins
#
# Run the devstack/plugin.sh in all the plugin directories. These are
@@ -1530,6 +1557,8 @@
# the source phase corresponds to settings loading in plugins
if [[ "$mode" == "source" ]]; then
load_plugin_settings
+ elif [[ "$mode" == "override_defaults" ]]; then
+ plugin_override_defaults
else
run_plugins $mode $phase
fi
diff --git a/inc/python b/inc/python
index 2d76081..d00eb0c 100644
--- a/inc/python
+++ b/inc/python
@@ -54,17 +54,23 @@
# Wrapper for ``pip install`` to set cache and proxy environment variables
# Uses globals ``INSTALL_TESTONLY_PACKAGES``, ``OFFLINE``, ``PIP_VIRTUAL_ENV``,
-# ``TRACK_DEPENDS``, ``*_proxy``
+# ``PIP_UPGRADE``, ``TRACK_DEPENDS``, ``*_proxy``
# pip_install package [package ...]
function pip_install {
local xtrace=$(set +o | grep xtrace)
set +o xtrace
+ local upgrade=""
local offline=${OFFLINE:-False}
if [[ "$offline" == "True" || -z "$@" ]]; then
$xtrace
return
fi
+ PIP_UPGRADE=$(trueorfalse False PIP_UPGRADE)
+ if [[ "$PIP_UPGRADE" = "True" ]] ; then
+ upgrade="--upgrade"
+ fi
+
if [[ -z "$os_PACKAGE" ]]; then
GetOSVersion
fi
@@ -98,7 +104,7 @@
https_proxy="${https_proxy:-}" \
no_proxy="${no_proxy:-}" \
PIP_FIND_LINKS=$PIP_FIND_LINKS \
- $cmd_pip install \
+ $cmd_pip install $upgrade \
$@
# Also install test requirements
@@ -110,7 +116,7 @@
https_proxy=${https_proxy:-} \
no_proxy=${no_proxy:-} \
PIP_FIND_LINKS=$PIP_FIND_LINKS \
- $cmd_pip install \
+ $cmd_pip install $upgrade \
-r $test_req
fi
}
diff --git a/lib/ironic b/lib/ironic
index 58cc2fa..b99e325 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -181,7 +181,11 @@
# install_ironic() - Collect source and prepare
function install_ironic {
# make sure all needed service were enabled
- for srv in nova glance key; do
+ local req_services="mysql rabbit key"
+ if [[ "$VIRT_DRIVER" == "ironic" ]]; then
+ req_services+=" nova glance neutron"
+ fi
+ for srv in $req_services; do
if ! is_service_enabled "$srv"; then
die $LINENO "$srv should be enabled for Ironic."
fi
diff --git a/lib/nova_plugins/hypervisor-ironic b/lib/nova_plugins/hypervisor-ironic
index 0169d73..b9e286d 100644
--- a/lib/nova_plugins/hypervisor-ironic
+++ b/lib/nova_plugins/hypervisor-ironic
@@ -54,9 +54,7 @@
# install_nova_hypervisor() - Install external components
function install_nova_hypervisor {
- if ! is_service_enabled neutron; then
- die $LINENO "Neutron should be enabled for usage of the Ironic Nova driver."
- elif is_ironic_hardware; then
+ if is_ironic_hardware; then
return
fi
install_libvirt
diff --git a/lib/sahara b/lib/sahara
index a965f55..0651b0a 100644
--- a/lib/sahara
+++ b/lib/sahara
@@ -113,12 +113,13 @@
configure_auth_token_middleware $SAHARA_CONF_FILE sahara $SAHARA_AUTH_CACHE_DIR
+ iniset_rpc_backend sahara $SAHARA_CONF_FILE DEFAULT
+
# Set configuration to send notifications
if is_service_enabled ceilometer; then
iniset $SAHARA_CONF_FILE DEFAULT enable_notifications "true"
iniset $SAHARA_CONF_FILE DEFAULT notification_driver "messaging"
- iniset_rpc_backend sahara $SAHARA_CONF_FILE
fi
iniset $SAHARA_CONF_FILE DEFAULT verbose True
@@ -203,12 +204,16 @@
# start_sahara() - Start running processes, including screen
function start_sahara {
run_process sahara "$SAHARA_BIN_DIR/sahara-all --config-file $SAHARA_CONF_FILE"
+ run_process sahara-api "$SAHARA_BIN_DIR/sahara-api --config-file $SAHARA_CONF_FILE"
+ run_process sahara-eng "$SAHARA_BIN_DIR/sahara-engine --config-file $SAHARA_CONF_FILE"
}
# stop_sahara() - Stop running processes
function stop_sahara {
# Kill the Sahara screen windows
stop_process sahara
+ stop_process sahara-api
+ stop_process sahara-eng
}
diff --git a/lib/tempest b/lib/tempest
index 4ece349..8672a14 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -175,6 +175,10 @@
password=${ADMIN_PASSWORD:-secrete}
+ # Do we want to make a configuration where Tempest has admin on
+ # the cloud. We don't always want to so that we can ensure Tempest
+ # would work on a public cloud.
+ TEMPEST_HAS_ADMIN=$(trueorfalse True TEMPEST_HAS_ADMIN)
# 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}
@@ -292,11 +296,13 @@
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 admin_tenant_id $ADMIN_TENANT_ID
- iniset $TEMPEST_CONFIG identity admin_domain_name $ADMIN_DOMAIN_NAME
+ if [[ "$TEMPEST_HAS_ADMIN" == "True" ]]; then
+ 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 admin_tenant_id $ADMIN_TENANT_ID
+ iniset $TEMPEST_CONFIG identity admin_domain_name $ADMIN_DOMAIN_NAME
+ fi
iniset $TEMPEST_CONFIG identity auth_version ${TEMPEST_AUTH_VERSION:-v2}
if is_ssl_enabled_service "key" || is_service_enabled tls-proxy; then
iniset $TEMPEST_CONFIG identity ca_certificates_file $SSL_BUNDLE_FILE
@@ -310,6 +316,9 @@
fi
# Auth
+ #
+ #
+ TEMPEST_ALLOW_TENANT_ISOLATION=${TEMPEST_ALLOW_TENANT_ISOLATION:-$TEMPEST_HAS_ADMIN}
iniset $TEMPEST_CONFIG auth allow_tenant_isolation ${TEMPEST_ALLOW_TENANT_ISOLATION:-True}
iniset $TEMPEST_CONFIG auth tempest_roles "Member"
@@ -331,7 +340,7 @@
# NOTE(mtreinish): This must be done after auth settings are added to the tempest config
local tmp_cfg_file=$(mktemp)
cd $TEMPEST_DIR
- tox -evenv -- verify-tempest-config -uro $tmp_cfg_file
+ tox -revenv -- verify-tempest-config -uro $tmp_cfg_file
local compute_api_extensions=${COMPUTE_API_EXTENSIONS:-"all"}
if [[ ! -z "$DISABLE_COMPUTE_API_EXTENSIONS" ]]; then
diff --git a/stack.sh b/stack.sh
index 9069367..93c42b8 100755
--- a/stack.sh
+++ b/stack.sh
@@ -89,6 +89,9 @@
exit 1
fi
+# Print the kernel version
+uname -a
+
# Prepare the environment
# -----------------------
@@ -507,6 +510,10 @@
# Configure Projects
# ==================
+# Plugin Phase 0: override_defaults - allow pluggins to override
+# defaults before other services are run
+run_phase override_defaults
+
# Import apache functions
source $TOP_DIR/lib/apache
diff --git a/unstack.sh b/unstack.sh
index a66370b..c45af74 100755
--- a/unstack.sh
+++ b/unstack.sh
@@ -45,6 +45,10 @@
# Configure Projects
# ==================
+# Plugin Phase 0: override_defaults - allow pluggins to override
+# defaults before other services are run
+run_phase override_defaults
+
# Import apache functions
source $TOP_DIR/lib/apache