diff --git a/lib/stackforge b/lib/stackforge new file mode 100644 index 0000000000..4b79de0c94 --- /dev/null +++ b/lib/stackforge @@ -0,0 +1,67 @@ +# lib/stackforge +# +# Functions to install stackforge libraries that we depend on so +# that we can try their git versions during devstack gate. +# +# This is appropriate for python libraries that release to pypi and are +# expected to be used beyond OpenStack like, but are requirements +# for core services in global-requirements. +# * wsme +# * pecan +# +# This is not appropriate for stackforge projects which are early stage +# OpenStack tools + +# Dependencies: +# ``functions`` file + +# ``stack.sh`` calls the entry points in this order: +# +# install_stackforge + +# Save trace setting +XTRACE=$(set +o | grep xtrace) +set +o xtrace + + +# Defaults +# -------- +WSME_DIR=$DEST/wsme +PECAN_DIR=$DEST/pecan + +# Entry Points +# ------------ + +# install_stackforge() - Collect source and prepare +function install_stackforge() { + # TODO(sdague): remove this once we get to Icehouse, this just makes + # for a smoother transition of existing users. + cleanup_stackforge + + git_clone $WSME_REPO $WSME_DIR $WSME_BRANCH + setup_develop $WSME_DIR + + git_clone $PECAN_REPO $PECAN_DIR $PECAN_BRANCH + setup_develop $PECAN_DIR +} + +# cleanup_stackforge() - purge possibly old versions of stackforge libraries +function cleanup_stackforge() { + # this means we've got an old version installed, lets get rid of it + # otherwise python hates itself + for lib in wsme pecan; do + if ! python -c "import $lib" 2>/dev/null; then + echo "Found old $lib... removing to ensure consistency" + local PIP_CMD=$(get_pip_command) + pip_install $lib + sudo $PIP_CMD uninstall -y $lib + fi + done +} + +# Restore xtrace +$XTRACE + +# Local variables: +# mode: shell-script +# End: diff --git a/stack.sh b/stack.sh index aa0efea487..df5cd4cc47 100755 --- a/stack.sh +++ b/stack.sh @@ -299,6 +299,7 @@ source $TOP_DIR/lib/apache source $TOP_DIR/lib/tls source $TOP_DIR/lib/infra source $TOP_DIR/lib/oslo +source $TOP_DIR/lib/stackforge source $TOP_DIR/lib/horizon source $TOP_DIR/lib/keystone source $TOP_DIR/lib/glance @@ -627,6 +628,9 @@ install_infra # Install oslo libraries that have graduated install_oslo +# Install stackforge libraries for testing +install_stackforge + # Install clients libraries install_keystoneclient install_glanceclient diff --git a/stackrc b/stackrc index 3f740b5678..b9d636a2b3 100644 --- a/stackrc +++ b/stackrc @@ -193,6 +193,16 @@ TROVE_BRANCH=${TROVE_BRANCH:-master} TROVECLIENT_REPO=${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git} TROVECLIENT_BRANCH=${TROVECLIENT_BRANCH:-master} +# stackforge libraries that are used by OpenStack core services +# wsme +WSME_REPO=${WSME_REPO:-${GIT_BASE}/stackforge/wsme.git} +WSME_BRANCH=${WSME_BRANCH:-master} + +# pecan +PECAN_REPO=${PECAN_REPO:-${GIT_BASE}/stackforge/pecan.git} +PECAN_BRANCH=${PECAN_BRANCH:-master} + + # Nova hypervisor configuration. We default to libvirt with **kvm** but will # drop back to **qemu** if we are unable to load the kvm module. ``stack.sh`` can # also install an **LXC**, **OpenVZ** or **XenAPI** based system. If xenserver-core