Merge "Default to xenserver driver if xenserver-core is installed"
diff --git a/clean.sh b/clean.sh
index 493c449..f7d15df 100755
--- a/clean.sh
+++ b/clean.sh
@@ -56,6 +56,7 @@
fi
# Clean projects
+cleanup_oslo
cleanup_cinder
cleanup_glance
cleanup_keystone
diff --git a/files/apts/general b/files/apts/general
index fdf8e20..fcf0b5b 100644
--- a/files/apts/general
+++ b/files/apts/general
@@ -1,6 +1,6 @@
bridge-utils
pylint
-python-pip
+python-setuptools
screen
unzip
wget
diff --git a/files/apts/keystone b/files/apts/keystone
index c98409f..564921b 100644
--- a/files/apts/keystone
+++ b/files/apts/keystone
@@ -1,4 +1,3 @@
-python-setuptools
python-dev
python-lxml
python-pastescript
diff --git a/files/apts/ryu b/files/apts/ryu
index 4a4fc52..e8ed926 100644
--- a/files/apts/ryu
+++ b/files/apts/ryu
@@ -1,4 +1,3 @@
-python-setuptools
python-gevent
python-gflags
python-netifaces
diff --git a/files/apts/swift b/files/apts/swift
index 1c283cf..37d5bc0 100644
--- a/files/apts/swift
+++ b/files/apts/swift
@@ -10,7 +10,6 @@
python-netifaces
python-nose
python-pastedeploy
-python-setuptools
python-simplejson
python-webob
python-xattr
diff --git a/files/rpms-suse/general b/files/rpms-suse/general
index f28267c..355af88 100644
--- a/files/rpms-suse/general
+++ b/files/rpms-suse/general
@@ -6,8 +6,8 @@
openssh
openssl
psmisc
+python-setuptools # instead of python-distribute; dist:sle11sp2
python-cmd2 # dist:opensuse-12.3
-python-pip
python-pylint
python-unittest2
python-virtualenv
diff --git a/files/rpms-suse/keystone b/files/rpms-suse/keystone
index 7d9a7bf..403d82f 100644
--- a/files/rpms-suse/keystone
+++ b/files/rpms-suse/keystone
@@ -7,8 +7,6 @@
python-SQLAlchemy
python-WebOb
python-devel
-python-distribute
-python-setuptools # instead of python-distribute; dist:sle11sp2
python-greenlet
python-lxml
python-mysql
diff --git a/files/rpms-suse/ryu b/files/rpms-suse/ryu
index 90b43a4..3797b6c 100644
--- a/files/rpms-suse/ryu
+++ b/files/rpms-suse/ryu
@@ -1,5 +1,3 @@
-python-distribute
-python-setuptools # instead of python-distribute; dist:sle11sp2
python-Sphinx
python-gevent
python-netifaces
diff --git a/files/rpms-suse/swift b/files/rpms-suse/swift
index db379bb..f3c95aa 100644
--- a/files/rpms-suse/swift
+++ b/files/rpms-suse/swift
@@ -6,8 +6,6 @@
python-configobj
python-coverage
python-devel
-python-distribute
-python-setuptools # instead of python-distribute; dist:sle11sp2
python-eventlet
python-greenlet
python-netifaces
diff --git a/files/rpms/general b/files/rpms/general
index 9fa305c..2db31d1 100644
--- a/files/rpms/general
+++ b/files/rpms/general
@@ -11,7 +11,7 @@
libxslt-devel # dist:rhel6 [2]
psmisc
pylint
-python-pip
+python-setuptools
python-prettytable # dist:rhel6 [1]
python-unittest2
python-virtualenv
diff --git a/files/rpms/keystone b/files/rpms/keystone
index 33a4f47..52dbf47 100644
--- a/files/rpms/keystone
+++ b/files/rpms/keystone
@@ -4,10 +4,9 @@
python-paste-deploy #dist:f16,f17,f18,f19
python-paste-script #dist:f16,f17,f18,f19
python-routes
-python-setuptools #dist:f16,f17,f18,f19
python-sqlalchemy
python-sqlite2
python-webob
sqlite
-# Deps installed via pip for RHEL
\ No newline at end of file
+# Deps installed via pip for RHEL
diff --git a/files/rpms/ryu b/files/rpms/ryu
index 0f62f9f..e8ed926 100644
--- a/files/rpms/ryu
+++ b/files/rpms/ryu
@@ -1,5 +1,4 @@
python-gevent
python-gflags
python-netifaces
-python-setuptools #dist:f16,f17,f18,f19
python-sphinx
diff --git a/files/rpms/swift b/files/rpms/swift
index 2cc4a0b..b137f30 100644
--- a/files/rpms/swift
+++ b/files/rpms/swift
@@ -10,7 +10,6 @@
python-netifaces
python-nose
python-paste-deploy # dist:f16,f17,f18,f19
-python-setuptools # dist:f16,f17,f18,f19
python-simplejson
python-webob
pyxattr
diff --git a/functions b/functions
index fe37e4c..e9c6061 100644
--- a/functions
+++ b/functions
@@ -76,6 +76,19 @@
}
+# Prints backtrace info
+# filename:lineno:function
+function backtrace {
+ local level=$1
+ local deep=$((${#BASH_SOURCE[@]} - 1))
+ echo "[Call Trace]"
+ while [ $level -le $deep ]; do
+ echo "${BASH_SOURCE[$deep]}:${BASH_LINENO[$deep-1]}:${FUNCNAME[$deep-1]}"
+ deep=$((deep - 1))
+ done
+}
+
+
# Prints line number and "message" then exits
# die $LINENO "message"
function die() {
@@ -85,6 +98,7 @@
if [ $exitcode == 0 ]; then
exitcode=1
fi
+ backtrace 2
err $line "$*"
exit $exitcode
}
@@ -113,7 +127,7 @@
local exitcode=$?
errXTRACE=$(set +o | grep xtrace)
set +o xtrace
- local msg="[ERROR] $0:$1 $2"
+ local msg="[ERROR] ${BASH_SOURCE[2]}:$1 $2"
echo $msg 1>&2;
if [[ -n ${SCREEN_LOGDIR} ]]; then
echo $msg >> "${SCREEN_LOGDIR}/error.log"
@@ -1140,8 +1154,11 @@
echo "cd $REQUIREMENTS_DIR; $SUDO_CMD python update.py $project_dir"
- (cd $REQUIREMENTS_DIR; \
- $SUDO_CMD python update.py $project_dir)
+ # Don't update repo if local changes exist
+ if (cd $project_dir && git diff --quiet); then
+ (cd $REQUIREMENTS_DIR; \
+ $SUDO_CMD python update.py $project_dir)
+ fi
pip_install -e $project_dir
# ensure that further actions can do things like setup.py sdist
diff --git a/lib/baremetal b/lib/baremetal
index 145544d..8f6c3f1 100644
--- a/lib/baremetal
+++ b/lib/baremetal
@@ -138,9 +138,12 @@
BM_IMAGE_BUILD_DIR=${BM_IMAGE_BUILD_DIR:-$DEST/diskimage-builder}
BM_POSEUR_DIR=${BM_POSEUR_DIR:-$DEST/bm_poseur}
-BM_HOST_CURRENT_KERNEL=$(uname -r)
-BM_DEPLOY_RAMDISK=${BM_DEPLOY_RAMDISK:-bm-deploy-$BM_HOST_CURRENT_KERNEL-initrd}
-BM_DEPLOY_KERNEL=${BM_DEPLOY_KERNEL:-bm-deploy-$BM_HOST_CURRENT_KERNEL-vmlinuz}
+# Use DIB to create deploy ramdisk and kernel.
+BM_BUILD_DEPLOY_RAMDISK=`trueorfalse True $BM_BUILD_DEPLOY_RAMDISK`
+# If not use DIB, these files are used as deploy ramdisk/kernel.
+# (The value must be a relative path from $TOP_DIR/files/)
+BM_DEPLOY_RAMDISK=${BM_DEPLOY_RAMDISK:-}
+BM_DEPLOY_KERNEL=${BM_DEPLOY_KERNEL:-}
# If you need to add any extra flavors to the deploy ramdisk image
# eg, specific network drivers, specify them here
@@ -233,13 +236,13 @@
function upload_baremetal_deploy() {
token=$1
- if [ ! -e $TOP_DIR/files/$BM_DEPLOY_KERNEL -a -e /boot/vmlinuz-$BM_HOST_CURRENT_KERNEL ]; then
- sudo cp /boot/vmlinuz-$BM_HOST_CURRENT_KERNEL $TOP_DIR/files/$BM_DEPLOY_KERNEL
- sudo chmod a+r $TOP_DIR/files/$BM_DEPLOY_KERNEL
- fi
- if [ ! -e $TOP_DIR/files/$BM_DEPLOY_RAMDISK ]; then
- $BM_IMAGE_BUILD_DIR/bin/ramdisk-image-create $BM_DEPLOY_FLAVOR deploy \
- -o $TOP_DIR/files/$BM_DEPLOY_RAMDISK -k $BM_HOST_CURRENT_KERNEL
+ if [ "$BM_BUILD_DEPLOY_RAMDISK" = "True" ]; then
+ BM_DEPLOY_KERNEL=bm-deploy.kernel
+ BM_DEPLOY_RAMDISK=bm-deploy.initramfs
+ if [ ! -e "$TOP_DIR/files/$BM_DEPLOY_KERNEL" -o ! -e "$TOP_DIR/files/$BM_DEPLOY_RAMDISK" ]; then
+ $BM_IMAGE_BUILD_DIR/bin/ramdisk-image-create $BM_DEPLOY_FLAVOR deploy \
+ -o $TOP_DIR/files/bm-deploy
+ fi
fi
# load them into glance
diff --git a/lib/cinder b/lib/cinder
index ef7e3dc..3472dcd 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -296,6 +296,10 @@
-e 's/snapshot_autoextend_percent =.*/snapshot_autoextend_percent = 20/' \
/etc/lvm/lvm.conf
fi
+ iniset $CINDER_CONF keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT
+ iniset $CINDER_CONF keystone_authtoken admin_user cinder
+ iniset $CINDER_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
+ iniset $CINDER_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
}
diff --git a/lib/neutron b/lib/neutron
index c546f37..306140a 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -525,7 +525,6 @@
# be cleaned.
iniset $NEUTRON_TEST_CONFIG_FILE agent root_helper "$Q_RR_COMMAND"
- _neutron_setup_keystone $NEUTRON_TEST_CONFIG_FILE DEFAULT set_auth_url
_neutron_setup_interface_driver $NEUTRON_TEST_CONFIG_FILE
neutron_plugin_configure_debug_command
@@ -542,7 +541,6 @@
iniset $Q_DHCP_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
iniset $Q_DHCP_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
- _neutron_setup_keystone $Q_DHCP_CONF_FILE DEFAULT set_auth_url
_neutron_setup_interface_driver $Q_DHCP_CONF_FILE
neutron_plugin_configure_dhcp_agent
@@ -563,7 +561,6 @@
iniset $Q_L3_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
iniset $Q_L3_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
- _neutron_setup_keystone $Q_L3_CONF_FILE DEFAULT set_auth_url
_neutron_setup_interface_driver $Q_L3_CONF_FILE
neutron_plugin_configure_l3_agent
@@ -580,7 +577,6 @@
iniset $Q_META_CONF_FILE DEFAULT nova_metadata_ip $Q_META_DATA_IP
iniset $Q_META_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
- _neutron_setup_keystone $Q_META_CONF_FILE DEFAULT set_auth_url
}
function _configure_neutron_lbaas() {
diff --git a/lib/neutron_plugins/ml2 b/lib/neutron_plugins/ml2
index ff49d8e..00bd716 100644
--- a/lib/neutron_plugins/ml2
+++ b/lib/neutron_plugins/ml2
@@ -20,7 +20,7 @@
source $TOP_DIR/lib/neutron_plugins/${Q_AGENT}_agent
# List of MechanismDrivers to load
-Q_ML2_PLUGIN_MECHANISM_DRIVERS=${Q_PLUGIN_MECHANISM_DRIVERS:-}
+Q_ML2_PLUGIN_MECHANISM_DRIVERS=${Q_ML2_PLUGIN_MECHANISM_DRIVERS:-}
# List of Type Drivers to load
Q_ML2_PLUGIN_TYPE_DRIVERS=${Q_ML2_PLUGIN_TYPE_DRIVERS:-local,flat,vlan,gre,vxlan}
# Default GRE TypeDriver options
@@ -92,6 +92,8 @@
# Since we enable the tunnel TypeDrivers, also enable a local_ip
iniset /$Q_PLUGIN_CONF_FILE ovs local_ip $HOST_IP
+ populate_ml2_config mechanism_drivers=$Q_ML2_PLUGIN_MECHANISM_DRIVERS /$Q_PLUGIN_CONF_FILE ml2
+
populate_ml2_config type_drivers=$Q_ML2_PLUGIN_TYPE_DRIVERS /$Q_PLUGIN_CONF_FILE ml2
populate_ml2_config $Q_SRV_EXTRA_OPTS /$Q_PLUGIN_CONF_FILE ml2
diff --git a/lib/oslo b/lib/oslo
index 1eb13db..de5ec4e 100644
--- a/lib/oslo
+++ b/lib/oslo
@@ -27,6 +27,10 @@
# install_oslo() - Collect source and prepare
function install_oslo() {
+ # TODO(sdague): remove this once we get to Icehouse, this just makes
+ # for a smoother transition of existing users.
+ cleanup_oslo
+
git_clone $OSLOCFG_REPO $OSLOCFG_DIR $OSLOCFG_BRANCH
setup_develop $OSLOCFG_DIR
@@ -34,6 +38,17 @@
setup_develop $OSLOMSG_DIR
}
+# cleanup_oslo() - purge possibly old versions of oslo
+function cleanup_oslo() {
+ # this means we've got an old olso installed, lets get rid of it
+ if find /usr | grep oslo.config | grep -v oslo.config.egg-link > /dev/null; then
+ echo "Found old oslo.config... removing to ensure consistency"
+ local PIP_CMD=$(get_pip_command)
+ pip_install olso.config
+ sudo $PIP_CMD uninstall -y olso.config
+ fi
+}
+
# Restore xtrace
$XTRACE
diff --git a/stack.sh b/stack.sh
index 880529d..22a23c8 100755
--- a/stack.sh
+++ b/stack.sh
@@ -578,18 +578,8 @@
echo_summary "Installing package prerequisites"
source $TOP_DIR/tools/install_prereqs.sh
-install_rpc_backend
-
-if is_service_enabled $DATABASE_BACKENDS; then
- install_database
-fi
-
-if is_service_enabled neutron; then
- install_neutron_agent_packages
-fi
-
-# Unbreak the giant mess that is the current state of setuptools
-unfubar_setuptools
+# Configure an appropriate python environment
+$TOP_DIR/tools/install_pip.sh
# System-specific preconfigure
# ============================
@@ -648,6 +638,16 @@
sudo ln -sf /usr/bin/nosetests1.1 /usr/local/bin/nosetests
fi
+install_rpc_backend
+
+if is_service_enabled $DATABASE_BACKENDS; then
+ install_database
+fi
+
+if is_service_enabled neutron; then
+ install_neutron_agent_packages
+fi
+
TRACK_DEPENDS=${TRACK_DEPENDS:-False}
# Install python packages into a virtualenv so that we can track them
diff --git a/tools/install_pip.sh b/tools/install_pip.sh
new file mode 100755
index 0000000..0ea8f53
--- /dev/null
+++ b/tools/install_pip.sh
@@ -0,0 +1,118 @@
+#!/usr/bin/env bash
+
+# **install_pip.sh**
+
+# install_pip.sh [--pip-version <version>] [--use-get-pip] [--setuptools] [--force]
+#
+# Update pip and friends to a known common version
+
+# Assumptions:
+# - currently we try to leave the system setuptools alone, install
+# the system package if it is not already present
+# - update pip to $INSTALL_PIP_VERSION
+
+# Keep track of the current directory
+TOOLS_DIR=$(cd $(dirname "$0") && pwd)
+TOP_DIR=`cd $TOOLS_DIR/..; pwd`
+
+# Change dir to top of devstack
+cd $TOP_DIR
+
+# Import common functions
+source $TOP_DIR/functions
+
+FILES=$TOP_DIR/files
+
+# Handle arguments
+
+INSTALL_PIP_VERSION=${INSTALL_PIP_VERSION:-"1.4"}
+while [[ -n "$1" ]]; do
+ case $1 in
+ --force)
+ FORCE=1
+ ;;
+ --pip-version)
+ INSTALL_PIP_VERSION="$2"
+ shift
+ ;;
+ --setuptools)
+ SETUPTOOLS=1
+ ;;
+ --use-get-pip)
+ USE_GET_PIP=1;
+ ;;
+ esac
+ shift
+done
+
+SETUPTOOLS_EZ_SETUP_URL=https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
+PIP_GET_PIP_URL=https://raw.github.com/pypa/pip/master/contrib/get-pip.py
+PIP_TAR_URL=https://pypi.python.org/packages/source/p/pip/pip-$INSTALL_PIP_VERSION.tar.gz
+
+GetDistro
+echo "Distro: $DISTRO"
+
+function get_versions() {
+ PIP=$(which pip 2>/dev/null || which pip-python 2>/dev/null)
+ if [[ -n $PIP ]]; then
+ DISTRIBUTE_VERSION=$($PIP freeze | grep 'distribute==')
+ SETUPTOOLS_VERSION=$($PIP freeze | grep 'setuptools==')
+ PIP_VERSION=$($PIP --version | awk '{ print $2}')
+ echo "pip: $PIP_VERSION setuptools: $SETUPTOOLS_VERSION distribute: $DISTRIBUTE_VERSION"
+ fi
+}
+
+function setuptools_ez_setup() {
+ if [[ ! -r $FILES/ez_setup.py ]]; then
+ (cd $FILES; \
+ curl -OR $SETUPTOOLS_EZ_SETUP_URL; \
+ )
+ fi
+ sudo python $FILES/ez_setup.py
+}
+
+function install_get_pip() {
+ if [[ ! -r $FILES/get-pip.py ]]; then
+ (cd $FILES; \
+ curl $PIP_GET_PIP_URL; \
+ )
+ fi
+ sudo python $FILES/get-pip.py
+}
+
+function install_pip_tarball() {
+ curl -O $PIP_TAR_URL
+ tar xvfz pip-$INSTALL_PIP_VERSION.tar.gz
+ cd pip-$INSTALL_PIP_VERSION
+ sudo python setup.py install
+}
+
+# Show starting versions
+get_versions
+
+# Do setuptools
+if [[ -n "$SETUPTOOLS" ]]; then
+ # We want it from source
+ uninstall_package python-setuptools
+ setuptools_ez_setup
+else
+ # See about installing the distro setuptools
+ if ! python -c "import setuptools"; then
+ install_package python-setuptools
+ fi
+fi
+
+# Do pip
+if [[ -z $PIP || "$PIP_VERSION" != "$INSTALL_PIP_VERSION" || -n $FORCE ]]; then
+
+ # Eradicate any and all system packages
+ uninstall_package python-pip
+
+ if [[ -n "$USE_GET_PIP" ]]; then
+ install_get_pip
+ else
+ install_pip_tarball
+ fi
+
+ get_versions
+fi