Merge "Devstack Nuage Plugin correct the ovs_bridge parameter"
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 6c38216..2128620 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -42,8 +42,8 @@
#. Configure
- We recommend at least a `minimal
- configuration <configuration.html>`__ be set up.
+ We recommend at least a :doc:`minimal
+ configuration <configuration>` be set up.
#. Start the install
@@ -69,9 +69,9 @@
Virtual Machine
~~~~~~~~~~~~~~~
-`Run OpenStack in a VM <guides/single-vm.html>`__. The VMs launched in your cloud will be slow as
+:doc:`Run OpenStack in a VM <guides/single-vm>`. The VMs launched in your cloud will be slow as
they are running in QEMU (emulation), but it is useful if you don't have
-spare hardware laying around. `[Read] <guides/single-vm.html>`__
+spare hardware laying around. :doc:`[Read] <guides/single-vm>`
OpenStack on Hardware
---------------------
@@ -83,13 +83,13 @@
All-In-One
~~~~~~~~~~
-`Run OpenStack on dedicated hardware <guides/single-machine.html>`__ to get real performance in your VMs.
-This can include a server-class machine or a laptop at home. `[Read] <guides/single-machine.html>`__
+:doc:`Run OpenStack on dedicated hardware <guides/single-machine>` to get real performance in your VMs.
+This can include a server-class machine or a laptop at home. :doc:`[Read] <guides/single-machine>`
Multi-Node + VLANs
~~~~~~~~~~~~~~~~~~
-`Setup a multi-node cluster <guides/multinode-lab.html>`__ with dedicated VLANs for VMs & Management. `[Read] <guides/multinode-lab.html>`__
+:doc:`Setup a multi-node cluster <guides/multinode-lab>` with dedicated VLANs for VMs & Management. :doc:`[Read] <guides/multinode-lab>`
Documentation
=============
@@ -97,32 +97,32 @@
Overview
--------
-`An overview of DevStack goals and priorities <overview.html>`__
+:doc:`An overview of DevStack goals and priorities <overview>`
Configuration
-------------
-`Configuring and customizing the stack <configuration.html>`__
+:doc:`Configuring and customizing the stack <configuration>`
Plugins
-------
-`Extending DevStack with new features <plugins.html>`__
+:doc:`Extending DevStack with new features <plugins>`
Recent Changes
--------------
-`An incomplete summary of recent changes <changes.html>`__
+:doc:`An incomplete summary of recent changes <changes>`
FAQ
---
-`The DevStack FAQ <faq.html>`__
+:doc:`The DevStack FAQ <faq>`
Contributing
------------
-`Pitching in to make DevStack a better place <contributing.html>`__
+:doc:`Pitching in to make DevStack a better place <contributing>`
Code
====
diff --git a/exercises/trove.sh b/exercises/trove.sh
deleted file mode 100755
index 053f872..0000000
--- a/exercises/trove.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env bash
-
-# **trove.sh**
-
-# Sanity check that trove started if enabled
-
-echo "*********************************************************************"
-echo "Begin DevStack Exercise: $0"
-echo "*********************************************************************"
-
-# This script exits on an error so that errors don't compound and you see
-# only the first error that occurred.
-set -o errexit
-
-# Print the commands being run so that we can see the command that triggers
-# an error. It is also useful for following allowing as the install occurs.
-set -o xtrace
-
-
-# Settings
-# ========
-
-# Keep track of the current directory
-EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
-TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
-
-# Import common functions
-source $TOP_DIR/functions
-
-# Import configuration
-source $TOP_DIR/openrc
-
-# Import exercise configuration
-source $TOP_DIR/exerciserc
-
-is_service_enabled trove || exit 55
-
-# can try to get datastore id
-DSTORE_ID=$(trove datastore-list | tail -n +4 |head -3 | get_field 1)
-die_if_not_set $LINENO DSTORE_ID "Trove API not functioning!"
-
-DV_ID=$(trove datastore-version-list $DSTORE_ID | tail -n +4 | get_field 1)
-die_if_not_set $LINENO DV_ID "Trove API not functioning!"
-
-set +o xtrace
-echo "*********************************************************************"
-echo "SUCCESS: End DevStack Exercise: $0"
-echo "*********************************************************************"
-
diff --git a/extras.d/70-trove.sh b/extras.d/70-trove.sh
index a4dc7fb..f284354 100644
--- a/extras.d/70-trove.sh
+++ b/extras.d/70-trove.sh
@@ -11,7 +11,6 @@
cleanup_trove
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
echo_summary "Configuring Trove"
- configure_troveclient
configure_trove
if is_service_enabled key; then
diff --git a/functions-common b/functions-common
index 9f8476e..996d79b 100644
--- a/functions-common
+++ b/functions-common
@@ -25,7 +25,6 @@
# - ``FILES``
# - ``OFFLINE``
# - ``PIP_DOWNLOAD_CACHE``
-# - ``PIP_USE_MIRRORS``
# - ``RECLONE``
# - ``REQUIREMENTS_DIR``
# - ``STACK_USER``
@@ -1559,7 +1558,7 @@
}
# Wrapper for ``pip install`` to set cache and proxy environment variables
-# Uses globals ``OFFLINE``, ``PIP_DOWNLOAD_CACHE``, ``PIP_USE_MIRRORS``,
+# Uses globals ``OFFLINE``, ``PIP_DOWNLOAD_CACHE``,
# ``TRACK_DEPENDS``, ``*_proxy``
# pip_install package [package ...]
function pip_install {
@@ -1585,21 +1584,13 @@
local sudo_pip="sudo"
fi
- # Mirror option not needed anymore because pypi has CDN available,
- # but it's useful in certain circumstances
- PIP_USE_MIRRORS=${PIP_USE_MIRRORS:-False}
- local pip_mirror_opt=""
- if [[ "$PIP_USE_MIRRORS" != "False" ]]; then
- pip_mirror_opt="--use-mirrors"
- fi
-
$xtrace
$sudo_pip PIP_DOWNLOAD_CACHE=${PIP_DOWNLOAD_CACHE:-/var/cache/pip} \
http_proxy=$http_proxy \
https_proxy=$https_proxy \
no_proxy=$no_proxy \
$cmd_pip install \
- $pip_mirror_opt $@
+ $@
INSTALL_TESTONLY_PACKAGES=$(trueorfalse False $INSTALL_TESTONLY_PACKAGES)
if [[ "$INSTALL_TESTONLY_PACKAGES" == "True" ]]; then
@@ -1610,7 +1601,7 @@
https_proxy=$https_proxy \
no_proxy=$no_proxy \
$cmd_pip install \
- $pip_mirror_opt -r $test_req
+ -r $test_req
fi
fi
}
@@ -1624,6 +1615,7 @@
return $enabled
}
+
# setup a library by name. If we are trying to use the library from
# git, we'll do a git based install, otherwise we'll punt and the
# library should be installed by a requirements pull from another
diff --git a/lib/ceilometer b/lib/ceilometer
index 483cd27..eee3e8f 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -35,8 +35,9 @@
# --------
# Set up default directories
+GITDIR["ceilometerclient"]=$DEST/python-ceilometerclient
+
CEILOMETER_DIR=$DEST/ceilometer
-CEILOMETERCLIENT_DIR=$DEST/python-ceilometerclient
CEILOMETER_CONF_DIR=/etc/ceilometer
CEILOMETER_CONF=$CEILOMETER_CONF_DIR/ceilometer.conf
CEILOMETER_API_LOG_DIR=/var/log/ceilometer-api
@@ -268,9 +269,11 @@
# install_ceilometerclient() - Collect source and prepare
function install_ceilometerclient {
- git_clone $CEILOMETERCLIENT_REPO $CEILOMETERCLIENT_DIR $CEILOMETERCLIENT_BRANCH
- setup_develop $CEILOMETERCLIENT_DIR
- sudo install -D -m 0644 -o $STACK_USER {$CEILOMETERCLIENT_DIR/tools/,/etc/bash_completion.d/}ceilometer.bash_completion
+ if use_library_from_git "ceilometerclient"; then
+ git_clone_by_name "ceilometerclient"
+ setup_develop "ceilometerclient"
+ sudo install -D -m 0644 -o $STACK_USER {$CEILOMETERCLIENT_DIR/tools/,/etc/bash_completion.d/}ceilometer.bash_completion
+ fi
}
# start_ceilometer() - Start running processes, including screen
diff --git a/lib/ceph b/lib/ceph
index e55738c..2ddf5db 100644
--- a/lib/ceph
+++ b/lib/ceph
@@ -71,6 +71,11 @@
# Functions
# ------------
+function get_ceph_version {
+ local ceph_version_str=$(sudo ceph daemon mon.$(hostname) version | cut -d '"' -f 4)
+ echo $ceph_version_str
+}
+
# import_libvirt_secret_ceph() - Imports Cinder user key into libvirt
# so it can connect to the Ceph cluster while attaching a Cinder block device
function import_libvirt_secret_ceph {
@@ -154,10 +159,16 @@
sleep 5
done
+ # pools data and metadata were removed in the Giant release so depending on the version we apply different commands
+ local ceph_version=$(get_ceph_version)
# change pool replica size according to the CEPH_REPLICAS set by the user
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set data size ${CEPH_REPLICAS}
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set rbd size ${CEPH_REPLICAS}
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set metadata size ${CEPH_REPLICAS}
+ if [[ ${ceph_version%.*} -eq 0 ]] && [[ ${ceph_version##*.} -lt 87 ]]; then
+ sudo ceph -c ${CEPH_CONF_FILE} osd pool set rbd size ${CEPH_REPLICAS}
+ sudo ceph -c ${CEPH_CONF_FILE} osd pool set data size ${CEPH_REPLICAS}
+ sudo ceph -c ${CEPH_CONF_FILE} osd pool set metadata size ${CEPH_REPLICAS}
+ else
+ sudo ceph -c ${CEPH_CONF_FILE} osd pool set rbd size ${CEPH_REPLICAS}
+ fi
# create a simple rule to take OSDs instead of host with CRUSH
# then apply this rules to the default pool
diff --git a/lib/cinder b/lib/cinder
index 29cda42..5687864 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -36,8 +36,9 @@
fi
# set up default directories
+GITDIR["cinderclient"]=$DEST/python-cinderclient
+
CINDER_DIR=$DEST/cinder
-CINDERCLIENT_DIR=$DEST/python-cinderclient
CINDER_STATE_PATH=${CINDER_STATE_PATH:=$DATA_DIR/cinder}
CINDER_AUTH_CACHE_DIR=${CINDER_AUTH_CACHE_DIR:-/var/cache/cinder}
@@ -402,9 +403,11 @@
# install_cinderclient() - Collect source and prepare
function install_cinderclient {
- git_clone $CINDERCLIENT_REPO $CINDERCLIENT_DIR $CINDERCLIENT_BRANCH
- setup_develop $CINDERCLIENT_DIR
- sudo install -D -m 0644 -o $STACK_USER {$CINDERCLIENT_DIR/tools/,/etc/bash_completion.d/}cinder.bash_completion
+ if use_library_from_git "cinderclient"; then
+ git_clone_by_name "cinderclient"
+ setup_develop "cinderclient"
+ sudo install -D -m 0644 -o $STACK_USER {$CINDERCLIENT_DIR/tools/,/etc/bash_completion.d/}cinder.bash_completion
+ fi
}
# apply config.d approach for cinder volumes directory
diff --git a/lib/glance b/lib/glance
index 4194842..8cd48b1 100644
--- a/lib/glance
+++ b/lib/glance
@@ -27,9 +27,10 @@
# --------
# Set up default directories
+GITDIR["glanceclient"]=$DEST/python-glanceclient
+
GLANCE_DIR=$DEST/glance
GLANCE_STORE_DIR=$DEST/glance_store
-GLANCECLIENT_DIR=$DEST/python-glanceclient
GLANCE_CACHE_DIR=${GLANCE_CACHE_DIR:=$DATA_DIR/glance/cache}
GLANCE_IMAGE_DIR=${GLANCE_IMAGE_DIR:=$DATA_DIR/glance/images}
GLANCE_AUTH_CACHE_DIR=${GLANCE_AUTH_CACHE_DIR:-/var/cache/glance}
@@ -286,8 +287,10 @@
# install_glanceclient() - Collect source and prepare
function install_glanceclient {
- git_clone $GLANCECLIENT_REPO $GLANCECLIENT_DIR $GLANCECLIENT_BRANCH
- setup_develop $GLANCECLIENT_DIR
+ if use_library_from_git "glanceclient"; then
+ git_clone_by_name "glanceclient"
+ setup_develop "glanceclient"
+ fi
}
# install_glance() - Collect source and prepare
diff --git a/lib/heat b/lib/heat
index 53eca25..ed5181b 100644
--- a/lib/heat
+++ b/lib/heat
@@ -29,8 +29,9 @@
# --------
# set up default directories
+GITDIR["heatclient"]=$DEST/python-heatclient
+
HEAT_DIR=$DEST/heat
-HEATCLIENT_DIR=$DEST/python-heatclient
HEAT_CFNTOOLS_DIR=$DEST/heat-cfntools
HEAT_TEMPLATES_REPO_DIR=$DEST/heat-templates
HEAT_AUTH_CACHE_DIR=${HEAT_AUTH_CACHE_DIR:-/var/cache/heat}
@@ -183,9 +184,11 @@
# install_heatclient() - Collect source and prepare
function install_heatclient {
- git_clone $HEATCLIENT_REPO $HEATCLIENT_DIR $HEATCLIENT_BRANCH
- setup_develop $HEATCLIENT_DIR
- sudo install -D -m 0644 -o $STACK_USER {$HEATCLIENT_DIR/tools/,/etc/bash_completion.d/}heat.bash_completion
+ if use_library_from_git "heatclient"; then
+ git_clone_by_name "heatclient"
+ setup_develop "heatclient"
+ sudo install -D -m 0644 -o $STACK_USER {$HEATCLIENT_DIR/tools/,/etc/bash_completion.d/}heat.bash_completion
+ fi
}
# install_heat() - Collect source and prepare
diff --git a/lib/ironic b/lib/ironic
index cf005a7..c90482a 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -28,11 +28,12 @@
# --------
# Set up default directories
+GITDIR["ironicclient"]=$DEST/python-ironicclient
+
IRONIC_DIR=$DEST/ironic
IRONIC_PYTHON_AGENT_DIR=$DEST/ironic-python-agent
IRONIC_DATA_DIR=$DATA_DIR/ironic
IRONIC_STATE_PATH=/var/lib/ironic
-IRONICCLIENT_DIR=$DEST/python-ironicclient
IRONIC_AUTH_CACHE_DIR=${IRONIC_AUTH_CACHE_DIR:-/var/cache/ironic}
IRONIC_CONF_DIR=${IRONIC_CONF_DIR:-/etc/ironic}
IRONIC_CONF_FILE=$IRONIC_CONF_DIR/ironic.conf
@@ -150,9 +151,14 @@
# install_ironicclient() - Collect sources and prepare
function install_ironicclient {
- git_clone $IRONICCLIENT_REPO $IRONICCLIENT_DIR $IRONICCLIENT_BRANCH
- setup_develop $IRONICCLIENT_DIR
- sudo install -D -m 0644 -o $STACK_USER {$IRONICCLIENT_DIR/tools/,/etc/bash_completion.d/}ironic.bash_completion
+ if use_library_from_git "ironicclient"; then
+ git_clone_by_name "ironicclient"
+ setup_develop "ironicclient"
+ sudo install -D -m 0644 -o $STACK_USER {$IRONICCLIENT_DIR/tools/,/etc/bash_completion.d/}ironic.bash_completion
+ else
+ # nothing actually "requires" ironicclient, so force instally from pypi
+ pip_install python-ironicclient
+ fi
}
# _cleanup_ironic_apache_wsgi() - Remove wsgi files, disable and remove apache vhost file
diff --git a/lib/keystone b/lib/keystone
index 276e971..6341ce2 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -33,6 +33,8 @@
# --------
# Set up default directories
+GITDIR["keystoneclient"]=$DEST/python-keystoneclient
+
KEYSTONE_DIR=$DEST/keystone
KEYSTONE_CONF_DIR=${KEYSTONE_CONF_DIR:-/etc/keystone}
KEYSTONE_CONF=$KEYSTONE_CONF_DIR/keystone.conf
@@ -45,7 +47,6 @@
fi
KEYSTONEMIDDLEWARE_DIR=$DEST/keystonemiddleware
-KEYSTONECLIENT_DIR=$DEST/python-keystoneclient
# Set up additional extensions, such as oauth1, federation
# Example of KEYSTONE_EXTENSIONS=oauth1,federation
@@ -479,9 +480,11 @@
# install_keystoneclient() - Collect source and prepare
function install_keystoneclient {
- git_clone $KEYSTONECLIENT_REPO $KEYSTONECLIENT_DIR $KEYSTONECLIENT_BRANCH
- setup_develop $KEYSTONECLIENT_DIR
- sudo install -D -m 0644 -o $STACK_USER {$KEYSTONECLIENT_DIR/tools/,/etc/bash_completion.d/}keystone.bash_completion
+ if use_library_from_git "keystoneclient"; then
+ git_clone_by_name "keystoneclient"
+ setup_develop "keystoneclient"
+ sudo install -D -m 0644 -o $STACK_USER {$KEYSTONECLIENT_DIR/tools/,/etc/bash_completion.d/}keystone.bash_completion
+ fi
}
# install_keystonemiddleware() - Collect source and prepare
diff --git a/lib/neutron b/lib/neutron
index eb07f40..8f1bbf2 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -67,8 +67,10 @@
# Set up default directories
+GITDIR["neutronclient"]=$DEST/python-neutronclient
+
+
NEUTRON_DIR=$DEST/neutron
-NEUTRONCLIENT_DIR=$DEST/python-neutronclient
NEUTRON_AUTH_CACHE_DIR=${NEUTRON_AUTH_CACHE_DIR:-/var/cache/neutron}
# Support entry points installation of console scripts
@@ -131,6 +133,8 @@
Q_NOTIFY_NOVA_PORT_DATA_CHANGES=${Q_NOTIFY_NOVA_PORT_DATA_CHANGES:-True}
VIF_PLUGGING_IS_FATAL=${VIF_PLUGGING_IS_FATAL:-True}
VIF_PLUGGING_TIMEOUT=${VIF_PLUGGING_TIMEOUT:-300}
+# Specify if the initial private and external networks should be created
+NEUTRON_CREATE_INITIAL_NETWORKS=${NEUTRON_CREATE_INITIAL_NETWORKS:-True}
## Provider Network Information
PROVIDER_SUBNET_NAME=${PROVIDER_SUBNET_NAME:-"provider_net"}
@@ -616,9 +620,11 @@
# install_neutronclient() - Collect source and prepare
function install_neutronclient {
- git_clone $NEUTRONCLIENT_REPO $NEUTRONCLIENT_DIR $NEUTRONCLIENT_BRANCH
- setup_develop $NEUTRONCLIENT_DIR
- sudo install -D -m 0644 -o $STACK_USER {$NEUTRONCLIENT_DIR/tools/,/etc/bash_completion.d/}neutron.bash_completion
+ if use_library_from_git "neutronclient"; then
+ git_clone_by_name "neutronclient"
+ setup_develop "neutronclient"
+ sudo install -D -m 0644 -o $STACK_USER {$NEUTRONCLIENT_DIR/tools/,/etc/bash_completion.d/}neutron.bash_completion
+ fi
}
# install_neutron_agent_packages() - Collect source and prepare
diff --git a/lib/neutron_plugins/ml2 b/lib/neutron_plugins/ml2
index 44b947f..f9a9774 100644
--- a/lib/neutron_plugins/ml2
+++ b/lib/neutron_plugins/ml2
@@ -84,6 +84,11 @@
fi
fi
+
+ # Allow for setup the flat type network
+ if [[ -z "$Q_ML2_PLUGIN_FLAT_TYPE_OPTIONS" && -n "$PHYSICAL_NETWORK" ]]; then
+ Q_ML2_PLUGIN_FLAT_TYPE_OPTIONS="flat_networks=$Q_ML2_FLAT_PHYSNET_OPTIONS"
+ fi
# REVISIT(rkukura): Setting firewall_driver here for
# neutron.agent.securitygroups_rpc.is_firewall_enabled() which is
# used in the server, in case no L2 agent is configured on the
@@ -110,6 +115,8 @@
populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_type_vxlan $Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS
+ populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_type_flat $Q_ML2_PLUGIN_FLAT_TYPE_OPTIONS
+
populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2_type_vlan $Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS
if [[ "$Q_DVR_MODE" != "legacy" ]]; then
diff --git a/lib/nova b/lib/nova
index 0f83807..d5f1192 100644
--- a/lib/nova
+++ b/lib/nova
@@ -29,8 +29,10 @@
# --------
# Set up default directories
+GITDIR["novaclient"]=$DEST/python-novaclient
+
+
NOVA_DIR=$DEST/nova
-NOVACLIENT_DIR=$DEST/python-novaclient
NOVA_STATE_PATH=${NOVA_STATE_PATH:=$DATA_DIR/nova}
# INSTANCES_PATH is the previous name for this
NOVA_INSTANCES_PATH=${NOVA_INSTANCES_PATH:=${INSTANCES_PATH:=$NOVA_STATE_PATH/instances}}
@@ -637,9 +639,11 @@
# install_novaclient() - Collect source and prepare
function install_novaclient {
- git_clone $NOVACLIENT_REPO $NOVACLIENT_DIR $NOVACLIENT_BRANCH
- setup_develop $NOVACLIENT_DIR
- sudo install -D -m 0644 -o $STACK_USER {$NOVACLIENT_DIR/tools/,/etc/bash_completion.d/}nova.bash_completion
+ if use_library_from_git "novaclient"; then
+ git_clone_by_name "novaclient"
+ setup_develop "novaclient"
+ sudo install -D -m 0644 -o $STACK_USER {$NOVACLIENT_DIR/tools/,/etc/bash_completion.d/}nova.bash_completion
+ fi
}
# install_nova() - Collect source and prepare
diff --git a/lib/opendaylight b/lib/opendaylight
index 374de95..bdebe58 100644
--- a/lib/opendaylight
+++ b/lib/opendaylight
@@ -44,6 +44,9 @@
# The ODL password
ODL_PASSWORD=${ODL_PASSWORD:-admin}
+# Short name of ODL package
+ODL_NAME=${ODL_NAME:-distribution-karaf-0.2.0-Helium}
+
# <define global variables here that belong to this project>
ODL_DIR=$DEST/opendaylight
@@ -87,23 +90,23 @@
# configure_opendaylight() - Set config files, create data dirs, etc
function configure_opendaylight {
# Add odl-ovsdb-openstack if it's not already there
- local ODLOVSDB=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/org.apache.karaf.features.cfg | grep featuresBoot= | grep odl)
+ local ODLOVSDB=$(cat $ODL_DIR/$ODL_NAME/etc/org.apache.karaf.features.cfg | grep featuresBoot= | grep odl)
if [ "$ODLOVSDB" == "" ]; then
- sed -i '/^featuresBoot=/ s/$/,odl-ovsdb-openstack/' $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/org.apache.karaf.features.cfg
+ sed -i '/^featuresBoot=/ s/$/,odl-ovsdb-openstack/' $ODL_DIR/$ODL_NAME/etc/org.apache.karaf.features.cfg
fi
# Configure OpenFlow 1.3 if it's not there
- local OFLOW13=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties | grep ^of.version)
+ local OFLOW13=$(cat $ODL_DIR/$ODL_NAME/etc/custom.properties | grep ^of.version)
if [ "$OFLOW13" == "" ]; then
- echo "ovsdb.of.version=1.3" >> $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties
+ echo "ovsdb.of.version=1.3" >> $ODL_DIR/$ODL_NAME/etc/custom.properties
fi
# Configure L3 if the user wants it
if [ "${ODL_L3}" == "True" ]; then
# Configure L3 FWD if it's not there
- local L3FWD=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties | grep ^ovsdb.l3.fwd.enabled)
+ local L3FWD=$(cat $ODL_DIR/$ODL_NAME/etc/custom.properties | grep ^ovsdb.l3.fwd.enabled)
if [ "$L3FWD" == "" ]; then
- echo "ovsdb.l3.fwd.enabled=yes" >> $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties
+ echo "ovsdb.l3.fwd.enabled=yes" >> $ODL_DIR/$ODL_NAME/etc/custom.properties
fi
fi
}
@@ -156,7 +159,7 @@
# -of13: runs ODL using OpenFlow 1.3 protocol support.
# -virt ovsdb: Runs ODL in "virtualization" mode with OVSDB support
- run_process odl-server "cd $ODL_DIR/distribution-karaf-0.2.0-Helium && JAVA_HOME=$JHOME bin/karaf"
+ run_process odl-server "cd $ODL_DIR/$ODL_NAME && JAVA_HOME=$JHOME bin/karaf"
# Sleep a bit to let OpenDaylight finish starting up
sleep $ODL_BOOT_WAIT
diff --git a/lib/swift b/lib/swift
index 7ef4496..8016282 100644
--- a/lib/swift
+++ b/lib/swift
@@ -34,8 +34,10 @@
fi
# Set up default directories
+GITDIR["swiftclient"]=$DEST/python-swiftclient
+
+
SWIFT_DIR=$DEST/swift
-SWIFTCLIENT_DIR=$DEST/python-swiftclient
SWIFT_AUTH_CACHE_DIR=${SWIFT_AUTH_CACHE_DIR:-/var/cache/swift}
SWIFT_APACHE_WSGI_DIR=${SWIFT_APACHE_WSGI_DIR:-/var/www/swift}
SWIFT3_DIR=$DEST/swift3
@@ -675,8 +677,10 @@
}
function install_swiftclient {
- git_clone $SWIFTCLIENT_REPO $SWIFTCLIENT_DIR $SWIFTCLIENT_BRANCH
- setup_develop $SWIFTCLIENT_DIR
+ if use_library_from_git "swiftclient"; then
+ git_clone_by_name "swiftclient"
+ setup_develop "swiftclient"
+ fi
}
# start_swift() - Start running processes, including screen
diff --git a/lib/tempest b/lib/tempest
index 66f1a78..25dc171 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -45,11 +45,12 @@
# --------
# Set up default directories
+GITDIR["tempest_lib"]=$DEST/tempest-lib
+
TEMPEST_DIR=$DEST/tempest
TEMPEST_CONFIG_DIR=${TEMPEST_CONFIG_DIR:-$TEMPEST_DIR/etc}
TEMPEST_CONFIG=$TEMPEST_CONFIG_DIR/tempest.conf
TEMPEST_STATE_PATH=${TEMPEST_STATE_PATH:=$DATA_DIR/tempest}
-TEMPEST_LIB_DIR=$DEST/tempest-lib
NOVA_SOURCE_DIR=$DEST/nova
@@ -441,8 +442,10 @@
# install_tempest_lib() - Collect source, prepare, and install tempest-lib
function install_tempest_lib {
- git_clone $TEMPEST_LIB_REPO $TEMPEST_LIB_DIR $TEMPEST_LIB_BRANCH
- setup_develop $TEMPEST_LIB_DIR
+ if use_library_from_git "tempest_lib"; then
+ git_clone_by_name "tempest_lib"
+ setup_develop "tempest_lib"
+ fi
}
# install_tempest() - Collect source and prepare
diff --git a/lib/trove b/lib/trove
index 4ac7293..50bd684 100644
--- a/lib/trove
+++ b/lib/trove
@@ -28,8 +28,9 @@
fi
# Set up default configuration
+GITDIR["troveclient"]=$DEST/python-troveclient
+
TROVE_DIR=$DEST/trove
-TROVECLIENT_DIR=$DEST/python-troveclient
TROVE_CONF_DIR=/etc/trove
TROVE_LOCAL_CONF_DIR=$TROVE_DIR/etc/trove
TROVE_AUTH_CACHE_DIR=${TROVE_AUTH_CACHE_DIR:-/var/cache/trove}
@@ -109,10 +110,6 @@
rm -fr $TROVE_CONF_DIR/*
}
-# configure_troveclient() - Set config files, create data dirs, etc
-function configure_troveclient {
- setup_develop $TROVECLIENT_DIR
-}
# configure_trove() - Set config files, create data dirs, etc
function configure_trove {
@@ -184,7 +181,10 @@
# install_troveclient() - Collect source and prepare
function install_troveclient {
- git_clone $TROVECLIENT_REPO $TROVECLIENT_DIR $TROVECLIENT_BRANCH
+ if use_library_from_git "troveclient"; then
+ git_clone_by_name "troveclient"
+ setup_develop "troveclient"
+ fi
}
# install_trove() - Collect source and prepare
diff --git a/stack.sh b/stack.sh
index ec13338..2f04511 100755
--- a/stack.sh
+++ b/stack.sh
@@ -90,16 +90,6 @@
# and ``DISTRO``
GetDistro
-# Warn users who aren't on an explicitly supported distro, but allow them to
-# override check and attempt installation with ``FORCE=yes ./stack``
-if [[ ! ${DISTRO} =~ (precise|trusty|7.0|wheezy|sid|testing|jessie|f19|f20|rhel6|rhel7) ]]; then
- echo "WARNING: this script has not been tested on $DISTRO"
- if [[ "$FORCE" != "yes" ]]; then
- die $LINENO "If you wish to run this script anyway run with FORCE=yes"
- fi
-fi
-
-
# Global Settings
# ---------------
@@ -151,6 +141,15 @@
fi
source $TOP_DIR/stackrc
+# Warn users who aren't on an explicitly supported distro, but allow them to
+# override check and attempt installation with ``FORCE=yes ./stack``
+if [[ ! ${DISTRO} =~ (precise|trusty|7.0|wheezy|sid|testing|jessie|f19|f20|rhel6|rhel7) ]]; then
+ echo "WARNING: this script has not been tested on $DISTRO"
+ if [[ "$FORCE" != "yes" ]]; then
+ die $LINENO "If you wish to run this script anyway run with FORCE=yes"
+ fi
+fi
+
# Check to see if we are already running DevStack
# Note that this may fail if USE_SCREEN=False
if type -p screen > /dev/null && screen -ls | egrep -q "[0-9]\.$SCREEN_NAME"; then
@@ -585,7 +584,7 @@
fi
# Set the destination directories for other OpenStack projects
-OPENSTACKCLIENT_DIR=$DEST/python-openstackclient
+GITDIR["openstackclient"]=$DEST/python-openstackclient
# Interactive Configuration
# -------------------------
@@ -788,8 +787,14 @@
# Install middleware
install_keystonemiddleware
-git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH
-setup_develop $OPENSTACKCLIENT_DIR
+# install the OpenStack client, needed for most setup commands
+if use_library_from_git "openstackclient"; then
+ git_clone_by_name "openstackclient"
+ setup_develop "openstackclient"
+else
+ pip_install python-openstackclient
+fi
+
if is_service_enabled key; then
if [ "$KEYSTONE_AUTH_HOST" == "$SERVICE_HOST" ]; then
@@ -1275,7 +1280,7 @@
start_neutron_agents
fi
# Once neutron agents are started setup initial network elements
-if is_service_enabled q-svc; then
+if is_service_enabled q-svc && [[ "$NEUTRON_CREATE_INITIAL_NETWORKS" == "True" ]]; then
echo_summary "Creating initial neutron network elements"
create_neutron_initial_network
setup_neutron_debug
diff --git a/stackrc b/stackrc
index 15b0951..2f08c73 100644
--- a/stackrc
+++ b/stackrc
@@ -199,8 +199,8 @@
TEMPEST_BRANCH=${TEMPEST_BRANCH:-master}
# TODO(sdague): this should end up as a library component like below
-TEMPEST_LIB_REPO=${TEMPEST_LIB_REPO:-${GIT_BASE}/openstack/tempest-lib.git}
-TEMPEST_LIB_BRANCH=${TEMPEST_LIB_BRANCH:-master}
+GITREPO["tempest_lib"]=${TEMPEST_LIB_REPO:-${GIT_BASE}/openstack/tempest-lib.git}
+GITBRANCH["tempest_lib"]=${TEMPEST_LIB_BRANCH:-master}
##############
@@ -210,48 +210,48 @@
##############
# ceilometer client library
-CEILOMETERCLIENT_REPO=${CEILOMETERCLIENT_REPO:-${GIT_BASE}/openstack/python-ceilometerclient.git}
-CEILOMETERCLIENT_BRANCH=${CEILOMETERCLIENT_BRANCH:-master}
+GITREPO["ceilometerclient"]=${CEILOMETERCLIENT_REPO:-${GIT_BASE}/openstack/python-ceilometerclient.git}
+GITBRANCH["ceilometerclient"]=${CEILOMETERCLIENT_BRANCH:-master}
# volume client
-CINDERCLIENT_REPO=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
-CINDERCLIENT_BRANCH=${CINDERCLIENT_BRANCH:-master}
+GITREPO["cinderclient"]=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
+GITBRACH["cinderclient"]=${CINDERCLIENT_BRANCH:-master}
# python glance client library
-GLANCECLIENT_REPO=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
-GLANCECLIENT_BRANCH=${GLANCECLIENT_BRANCH:-master}
+GITREPO["glanceclient"]=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
+GITBRANCH["glanceclient"]=${GLANCECLIENT_BRANCH:-master}
# python heat client library
-HEATCLIENT_REPO=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
-HEATCLIENT_BRANCH=${HEATCLIENT_BRANCH:-master}
+GITREPO["heatclient"]=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
+GITBRANCH["heatclient"]=${HEATCLIENT_BRANCH:-master}
# ironic client
-IRONICCLIENT_REPO=${IRONICCLIENT_REPO:-${GIT_BASE}/openstack/python-ironicclient.git}
-IRONICCLIENT_BRANCH=${IRONICCLIENT_BRANCH:-master}
+GITREPO["ironicclient"]=${IRONICCLIENT_REPO:-${GIT_BASE}/openstack/python-ironicclient.git}
+GITBRANCH["ironicclient"]=${IRONICCLIENT_BRANCH:-master}
# python keystone client library to nova that horizon uses
-KEYSTONECLIENT_REPO=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
-KEYSTONECLIENT_BRANCH=${KEYSTONECLIENT_BRANCH:-master}
+GITREPO["keystoneclient"]=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
+GITBRANCH["keystoneclient"]=${KEYSTONECLIENT_BRANCH:-master}
# neutron client
-NEUTRONCLIENT_REPO=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
-NEUTRONCLIENT_BRANCH=${NEUTRONCLIENT_BRANCH:-master}
+GITREPO["neutronclient"]=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
+GITBRANCH["neutronclient"]=${NEUTRONCLIENT_BRANCH:-master}
# python client library to nova that horizon (and others) use
-NOVACLIENT_REPO=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
-NOVACLIENT_BRANCH=${NOVACLIENT_BRANCH:-master}
+GITREPO["novaclient"]=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
+GITBRANCH["novaclient"]=${NOVACLIENT_BRANCH:-master}
# python swift client library
-SWIFTCLIENT_REPO=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
-SWIFTCLIENT_BRANCH=${SWIFTCLIENT_BRANCH:-master}
+GITREPO["swiftclient"]=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
+GITBRANCH["swiftclient"]=${SWIFTCLIENT_BRANCH:-master}
# trove client library test
-TROVECLIENT_REPO=${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git}
-TROVECLIENT_BRANCH=${TROVECLIENT_BRANCH:-master}
+GITREPO["troveclient"]=${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git}
+GITBRANCH["troveclient"]=${TROVECLIENT_BRANCH:-master}
# consolidated openstack python client
-OPENSTACKCLIENT_REPO=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
-OPENSTACKCLIENT_BRANCH=${OPENSTACKCLIENT_BRANCH:-master}
+GITREPO["openstackclient"]=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
+GITBRANCH["openstackclient"]=${OPENSTACKCLIENT_BRANCH:-master}
###################
#