This patch provides a new path for installing libraries in devstack so
that it's possible to either test with upstream released libraries, or
with git versions of individual libraries.
Libraries are added by name to 3 associative arrays GITREPO,
GITBRANCH, GITDIR. When we get to the library install phase we inspect
LIBS_FROM_GIT and look for libraries by name (i.e. "oslo.config") and
if they exist we'll clone and install those libraries from
git. Otherwise we won't, and just let pip pull them as dependencies
when it needs them.
This patch provides the conversion of the oslo libraries, including
pbr.
Devstack-gate jobs for these libraries will need to change to support
actually forward testing their content.
restructure stackrc into groupings
in order to support installing from stable libraries we first need to
actually sort out all the categories our giant list of git repos fit
into. This will make it much easier to not lose one in the process.
support installing clients and supporting libraries at released versions
expand the devstack support for libraries from released versions to
support python-* clients and supporting libraries. This is a collapse
of the master patch series that took a while to get correct.
(This is a collapsed patchset for backport to make backport fixups easier)
add unit tests for GIT* definitions
This adds unit tests for all the GIT* definitions, ensuring that for
libraries we think should be defined, they are. It exposed a bug in
glance_store definitions in the process.
The GITDIR definition for python-openstackclient is moved to stackrc
for testability.
Conflicts:
lib/glance
Change-Id: I26fac0ccf8fd4818e24618d56bf04b32306f88f6
| ... | ... |
@@ -36,6 +36,11 @@ |
| 36 | 36 |
XTRACE=$(set +o | grep xtrace) |
| 37 | 37 |
set +o xtrace |
| 38 | 38 |
|
| 39 |
+# Global Config Variables |
|
| 40 |
+declare -A GITREPO |
|
| 41 |
+declare -A GITBRANCH |
|
| 42 |
+declare -A GITDIR |
|
| 43 |
+ |
|
| 39 | 44 |
|
| 40 | 45 |
# Config Functions |
| 41 | 46 |
# ================ |
| ... | ... |
@@ -577,6 +582,18 @@ function git_clone {
|
| 577 | 577 |
cd $orig_dir |
| 578 | 578 |
} |
| 579 | 579 |
|
| 580 |
+# A variation on git clone that lets us specify a project by it's |
|
| 581 |
+# actual name, like oslo.config. This is exceptionally useful in the |
|
| 582 |
+# library installation case |
|
| 583 |
+function git_clone_by_name {
|
|
| 584 |
+ local name=$1 |
|
| 585 |
+ local repo=${GITREPO[$name]}
|
|
| 586 |
+ local dir=${GITDIR[$name]}
|
|
| 587 |
+ local branch=${GITBRANCH[$name]}
|
|
| 588 |
+ git_clone $repo $dir $branch |
|
| 589 |
+} |
|
| 590 |
+ |
|
| 591 |
+ |
|
| 580 | 592 |
# git can sometimes get itself infinitely stuck with transient network |
| 581 | 593 |
# errors or other issues with the remote end. This wraps git in a |
| 582 | 594 |
# timeout/retry loop and is intended to watch over non-local git |
| ... | ... |
@@ -1369,6 +1386,37 @@ function pip_install {
|
| 1369 | 1369 |
&& $SUDO_PIP rm -rf ${pip_build_tmp}
|
| 1370 | 1370 |
} |
| 1371 | 1371 |
|
| 1372 |
+# should we use this library from their git repo, or should we let it |
|
| 1373 |
+# get pulled in via pip dependencies. |
|
| 1374 |
+function use_library_from_git {
|
|
| 1375 |
+ local name=$1 |
|
| 1376 |
+ local enabled=1 |
|
| 1377 |
+ [[ ,${LIBS_FROM_GIT}, =~ ,${name}, ]] && enabled=0
|
|
| 1378 |
+ return $enabled |
|
| 1379 |
+} |
|
| 1380 |
+ |
|
| 1381 |
+# setup a library by name. If we are trying to use the library from |
|
| 1382 |
+# git, we'll do a git based install, otherwise we'll punt and the |
|
| 1383 |
+# library should be installed by a requirements pull from another |
|
| 1384 |
+# project. |
|
| 1385 |
+function setup_lib {
|
|
| 1386 |
+ local name=$1 |
|
| 1387 |
+ local dir=${GITDIR[$name]}
|
|
| 1388 |
+ setup_install $dir |
|
| 1389 |
+} |
|
| 1390 |
+ |
|
| 1391 |
+# setup a library by name in editiable mode. If we are trying to use |
|
| 1392 |
+# the library from git, we'll do a git based install, otherwise we'll |
|
| 1393 |
+# punt and the library should be installed by a requirements pull from |
|
| 1394 |
+# another project. |
|
| 1395 |
+# |
|
| 1396 |
+# use this for non namespaced libraries |
|
| 1397 |
+function setup_dev_lib {
|
|
| 1398 |
+ local name=$1 |
|
| 1399 |
+ local dir=${GITDIR[$name]}
|
|
| 1400 |
+ setup_develop $dir |
|
| 1401 |
+} |
|
| 1402 |
+ |
|
| 1372 | 1403 |
# this should be used if you want to install globally, all libraries should |
| 1373 | 1404 |
# use this, especially *oslo* ones |
| 1374 | 1405 |
function setup_install {
|
| ... | ... |
@@ -35,8 +35,9 @@ set +o xtrace |
| 35 | 35 |
# -------- |
| 36 | 36 |
|
| 37 | 37 |
# Set up default directories |
| 38 |
+GITDIR["python-ceilometerclient"]=$DEST/python-ceilometerclient |
|
| 39 |
+ |
|
| 38 | 40 |
CEILOMETER_DIR=$DEST/ceilometer |
| 39 |
-CEILOMETERCLIENT_DIR=$DEST/python-ceilometerclient |
|
| 40 | 41 |
CEILOMETER_CONF_DIR=/etc/ceilometer |
| 41 | 42 |
CEILOMETER_CONF=$CEILOMETER_CONF_DIR/ceilometer.conf |
| 42 | 43 |
CEILOMETER_API_LOG_DIR=/var/log/ceilometer-api |
| ... | ... |
@@ -123,12 +124,6 @@ function cleanup_ceilometer {
|
| 123 | 123 |
fi |
| 124 | 124 |
} |
| 125 | 125 |
|
| 126 |
-# configure_ceilometerclient() - Set config files, create data dirs, etc |
|
| 127 |
-function configure_ceilometerclient {
|
|
| 128 |
- setup_develop $CEILOMETERCLIENT_DIR |
|
| 129 |
- sudo install -D -m 0644 -o $STACK_USER {$CEILOMETERCLIENT_DIR/tools/,/etc/bash_completion.d/}ceilometer.bash_completion
|
|
| 130 |
-} |
|
| 131 |
- |
|
| 132 | 126 |
# configure_ceilometer() - Set config files, create data dirs, etc |
| 133 | 127 |
function configure_ceilometer {
|
| 134 | 128 |
setup_develop $CEILOMETER_DIR |
| ... | ... |
@@ -230,7 +225,11 @@ function install_ceilometer {
|
| 230 | 230 |
|
| 231 | 231 |
# install_ceilometerclient() - Collect source and prepare |
| 232 | 232 |
function install_ceilometerclient {
|
| 233 |
- git_clone $CEILOMETERCLIENT_REPO $CEILOMETERCLIENT_DIR $CEILOMETERCLIENT_BRANCH |
|
| 233 |
+ if use_library_from_git "python-ceilometerclient"; then |
|
| 234 |
+ git_clone_by_name "python-ceilometerclient" |
|
| 235 |
+ setup_dev_lib "python-ceilometerclient" |
|
| 236 |
+ sudo install -D -m 0644 -o $STACK_USER {${GITDIR["python-ceilometerclient"]}/tools/,/etc/bash_completion.d/}ceilometer.bash_completion
|
|
| 237 |
+ fi |
|
| 234 | 238 |
} |
| 235 | 239 |
|
| 236 | 240 |
# start_ceilometer() - Start running processes, including screen |
| ... | ... |
@@ -35,8 +35,9 @@ if [[ -r $CINDER_PLUGINS/$CINDER_DRIVER ]]; then |
| 35 | 35 |
fi |
| 36 | 36 |
|
| 37 | 37 |
# set up default directories |
| 38 |
+GITDIR["python-cinderclient"]=$DEST/python-cinderclient |
|
| 39 |
+ |
|
| 38 | 40 |
CINDER_DIR=$DEST/cinder |
| 39 |
-CINDERCLIENT_DIR=$DEST/python-cinderclient |
|
| 40 | 41 |
CINDER_STATE_PATH=${CINDER_STATE_PATH:=$DATA_DIR/cinder}
|
| 41 | 42 |
CINDER_AUTH_CACHE_DIR=${CINDER_AUTH_CACHE_DIR:-/var/cache/cinder}
|
| 42 | 43 |
|
| ... | ... |
@@ -475,9 +476,11 @@ function install_cinder {
|
| 475 | 475 |
|
| 476 | 476 |
# install_cinderclient() - Collect source and prepare |
| 477 | 477 |
function install_cinderclient {
|
| 478 |
- git_clone $CINDERCLIENT_REPO $CINDERCLIENT_DIR $CINDERCLIENT_BRANCH |
|
| 479 |
- setup_develop $CINDERCLIENT_DIR |
|
| 480 |
- sudo install -D -m 0644 -o $STACK_USER {$CINDERCLIENT_DIR/tools/,/etc/bash_completion.d/}cinder.bash_completion
|
|
| 478 |
+ if use_library_from_git "python-cinderclient"; then |
|
| 479 |
+ git_clone_by_name "python-cinderclient" |
|
| 480 |
+ setup_dev_lib "python-cinderclient" |
|
| 481 |
+ sudo install -D -m 0644 -o $STACK_USER {${GITDIR["python-cinderclient"]}/tools/,/etc/bash_completion.d/}cinder.bash_completion
|
|
| 482 |
+ fi |
|
| 481 | 483 |
} |
| 482 | 484 |
|
| 483 | 485 |
# apply config.d approach for cinder volumes directory |
| ... | ... |
@@ -27,8 +27,9 @@ set +o xtrace |
| 27 | 27 |
# -------- |
| 28 | 28 |
|
| 29 | 29 |
# Set up default directories |
| 30 |
+GITDIR["python-glanceclient"]=$DEST/python-glanceclient |
|
| 31 |
+ |
|
| 30 | 32 |
GLANCE_DIR=$DEST/glance |
| 31 |
-GLANCECLIENT_DIR=$DEST/python-glanceclient |
|
| 32 | 33 |
GLANCE_CACHE_DIR=${GLANCE_CACHE_DIR:=$DATA_DIR/glance/cache}
|
| 33 | 34 |
GLANCE_IMAGE_DIR=${GLANCE_IMAGE_DIR:=$DATA_DIR/glance/images}
|
| 34 | 35 |
GLANCE_AUTH_CACHE_DIR=${GLANCE_AUTH_CACHE_DIR:-/var/cache/glance}
|
| ... | ... |
@@ -234,8 +235,10 @@ function init_glance {
|
| 234 | 234 |
|
| 235 | 235 |
# install_glanceclient() - Collect source and prepare |
| 236 | 236 |
function install_glanceclient {
|
| 237 |
- git_clone $GLANCECLIENT_REPO $GLANCECLIENT_DIR $GLANCECLIENT_BRANCH |
|
| 238 |
- setup_develop $GLANCECLIENT_DIR |
|
| 237 |
+ if use_library_from_git "python-glanceclient"; then |
|
| 238 |
+ git_clone_by_name "python-glanceclient" |
|
| 239 |
+ setup_dev_lib "python-glanceclient" |
|
| 240 |
+ fi |
|
| 239 | 241 |
} |
| 240 | 242 |
|
| 241 | 243 |
# install_glance() - Collect source and prepare |
| ... | ... |
@@ -29,8 +29,9 @@ set +o xtrace |
| 29 | 29 |
# -------- |
| 30 | 30 |
|
| 31 | 31 |
# set up default directories |
| 32 |
+GITDIR["python-heatclient"]=$DEST/python-heatclient |
|
| 33 |
+ |
|
| 32 | 34 |
HEAT_DIR=$DEST/heat |
| 33 |
-HEATCLIENT_DIR=$DEST/python-heatclient |
|
| 34 | 35 |
HEAT_AUTH_CACHE_DIR=${HEAT_AUTH_CACHE_DIR:-/var/cache/heat}
|
| 35 | 36 |
HEAT_STANDALONE=`trueorfalse False $HEAT_STANDALONE` |
| 36 | 37 |
HEAT_CONF_DIR=/etc/heat |
| ... | ... |
@@ -165,9 +166,11 @@ function create_heat_cache_dir {
|
| 165 | 165 |
|
| 166 | 166 |
# install_heatclient() - Collect source and prepare |
| 167 | 167 |
function install_heatclient {
|
| 168 |
- git_clone $HEATCLIENT_REPO $HEATCLIENT_DIR $HEATCLIENT_BRANCH |
|
| 169 |
- setup_develop $HEATCLIENT_DIR |
|
| 170 |
- sudo install -D -m 0644 -o $STACK_USER {$HEATCLIENT_DIR/tools/,/etc/bash_completion.d/}heat.bash_completion
|
|
| 168 |
+ if use_library_from_git "python-heatclient"; then |
|
| 169 |
+ git_clone_by_name "python-heatclient" |
|
| 170 |
+ setup_dev_lib "python-heatclient" |
|
| 171 |
+ sudo install -D -m 0644 -o $STACK_USER {${GITDIR["python-heatclient"]}/tools/,/etc/bash_completion.d/}heat.bash_completion
|
|
| 172 |
+ fi |
|
| 171 | 173 |
} |
| 172 | 174 |
|
| 173 | 175 |
# install_heat() - Collect source and prepare |
| ... | ... |
@@ -25,8 +25,9 @@ set +o xtrace |
| 25 | 25 |
# -------- |
| 26 | 26 |
|
| 27 | 27 |
# Set up default directories |
| 28 |
+GITDIR["django_openstack_auth"]=$DEST/django_openstack_auth |
|
| 29 |
+ |
|
| 28 | 30 |
HORIZON_DIR=$DEST/horizon |
| 29 |
-HORIZONAUTH_DIR=$DEST/django_openstack_auth |
|
| 30 | 31 |
|
| 31 | 32 |
# local_settings.py is used to customize Dashboard settings. |
| 32 | 33 |
# The example file in Horizon repo is used by default. |
| ... | ... |
@@ -144,8 +145,12 @@ function init_horizon {
|
| 144 | 144 |
|
| 145 | 145 |
# install_django_openstack_auth() - Collect source and prepare |
| 146 | 146 |
function install_django_openstack_auth {
|
| 147 |
- git_clone $HORIZONAUTH_REPO $HORIZONAUTH_DIR $HORIZONAUTH_BRANCH |
|
| 148 |
- setup_install $HORIZONAUTH_DIR |
|
| 147 |
+ if use_library_from_git "django_openstack_auth"; then |
|
| 148 |
+ local dir=${GITDIR["django_openstack_auth"]}
|
|
| 149 |
+ git_clone_by_name "django_openstack_auth" |
|
| 150 |
+ fi |
|
| 151 |
+ # if we aren't using this library from git, then we just let it |
|
| 152 |
+ # get dragged in by the horizon setup. |
|
| 149 | 153 |
} |
| 150 | 154 |
|
| 151 | 155 |
# install_horizon() - Collect source and prepare |
| ... | ... |
@@ -20,7 +20,7 @@ set +o xtrace |
| 20 | 20 |
|
| 21 | 21 |
# Defaults |
| 22 | 22 |
# -------- |
| 23 |
-PBR_DIR=$DEST/pbr |
|
| 23 |
+GITDIR["pbr"]=$DEST/pbr |
|
| 24 | 24 |
REQUIREMENTS_DIR=$DEST/requirements |
| 25 | 25 |
|
| 26 | 26 |
# Entry Points |
| ... | ... |
@@ -45,8 +45,12 @@ function install_infra {
|
| 45 | 45 |
git_clone $REQUIREMENTS_REPO $REQUIREMENTS_DIR $REQUIREMENTS_BRANCH |
| 46 | 46 |
|
| 47 | 47 |
# Install pbr |
| 48 |
- git_clone $PBR_REPO $PBR_DIR $PBR_BRANCH |
|
| 49 |
- setup_install $PBR_DIR |
|
| 48 |
+ if use_library_from_git "pbr"; then |
|
| 49 |
+ git_clone_by_name "pbr" |
|
| 50 |
+ setup_lib "pbr" |
|
| 51 |
+ else |
|
| 52 |
+ pip_install "pbr" |
|
| 53 |
+ fi |
|
| 50 | 54 |
} |
| 51 | 55 |
|
| 52 | 56 |
# Restore xtrace |
| ... | ... |
@@ -28,10 +28,11 @@ set +o pipefail |
| 28 | 28 |
# -------- |
| 29 | 29 |
|
| 30 | 30 |
# Set up default directories |
| 31 |
+GITDIR["python-ironicclient"]=$DEST/python-ironicclient |
|
| 32 |
+ |
|
| 31 | 33 |
IRONIC_DIR=$DEST/ironic |
| 32 | 34 |
IRONIC_DATA_DIR=$DATA_DIR/ironic |
| 33 | 35 |
IRONIC_STATE_PATH=/var/lib/ironic |
| 34 |
-IRONICCLIENT_DIR=$DEST/python-ironicclient |
|
| 35 | 36 |
IRONIC_AUTH_CACHE_DIR=${IRONIC_AUTH_CACHE_DIR:-/var/cache/ironic}
|
| 36 | 37 |
IRONIC_CONF_DIR=${IRONIC_CONF_DIR:-/etc/ironic}
|
| 37 | 38 |
IRONIC_CONF_FILE=$IRONIC_CONF_DIR/ironic.conf |
| ... | ... |
@@ -108,8 +109,22 @@ function install_ironic {
|
| 108 | 108 |
|
| 109 | 109 |
# install_ironicclient() - Collect sources and prepare |
| 110 | 110 |
function install_ironicclient {
|
| 111 |
- git_clone $IRONICCLIENT_REPO $IRONICCLIENT_DIR $IRONICCLIENT_BRANCH |
|
| 112 |
- setup_develop $IRONICCLIENT_DIR |
|
| 111 |
+ if use_library_from_git "python-ironicclient"; then |
|
| 112 |
+ git_clone_by_name "python-ironicclient" |
|
| 113 |
+ setup_dev_lib "python-ironicclient" |
|
| 114 |
+ sudo install -D -m 0644 -o $STACK_USER {${GITDIR["python-ironicclient"]}/tools/,/etc/bash_completion.d/}ironic.bash_completion
|
|
| 115 |
+ else |
|
| 116 |
+ # nothing actually "requires" ironicclient, so force instally from pypi |
|
| 117 |
+ pip_install python-ironicclient |
|
| 118 |
+ fi |
|
| 119 |
+} |
|
| 120 |
+ |
|
| 121 |
+# _cleanup_ironic_apache_wsgi() - Remove wsgi files, disable and remove apache vhost file |
|
| 122 |
+function _cleanup_ironic_apache_wsgi {
|
|
| 123 |
+ sudo rm -rf $IRONIC_HTTP_DIR |
|
| 124 |
+ disable_apache_site ironic |
|
| 125 |
+ sudo rm -f $(apache_site_config_for ironic) |
|
| 126 |
+ restart_apache_server |
|
| 113 | 127 |
} |
| 114 | 128 |
|
| 115 | 129 |
# cleanup_ironic() - Remove residual data files, anything left over from previous |
| ... | ... |
@@ -32,6 +32,9 @@ set +o xtrace |
| 32 | 32 |
# -------- |
| 33 | 33 |
|
| 34 | 34 |
# Set up default directories |
| 35 |
+GITDIR["python-keystoneclient"]=$DEST/python-keystoneclient |
|
| 36 |
+GITDIR["keystonemiddleware"]=$DEST/keystonemiddleware |
|
| 37 |
+ |
|
| 35 | 38 |
KEYSTONE_DIR=$DEST/keystone |
| 36 | 39 |
KEYSTONE_CONF_DIR=${KEYSTONE_CONF_DIR:-/etc/keystone}
|
| 37 | 40 |
KEYSTONE_CONF=$KEYSTONE_CONF_DIR/keystone.conf |
| ... | ... |
@@ -39,8 +42,6 @@ KEYSTONE_PASTE_INI=${KEYSTONE_PASTE_INI:-$KEYSTONE_CONF_DIR/keystone-paste.ini}
|
| 39 | 39 |
KEYSTONE_AUTH_CACHE_DIR=${KEYSTONE_AUTH_CACHE_DIR:-/var/cache/keystone}
|
| 40 | 40 |
KEYSTONE_WSGI_DIR=${KEYSTONE_WSGI_DIR:-/var/www/keystone}
|
| 41 | 41 |
|
| 42 |
-KEYSTONECLIENT_DIR=$DEST/python-keystoneclient |
|
| 43 |
- |
|
| 44 | 42 |
# Select the backend for Keystone's service catalog |
| 45 | 43 |
KEYSTONE_CATALOG_BACKEND=${KEYSTONE_CATALOG_BACKEND:-sql}
|
| 46 | 44 |
KEYSTONE_CATALOG=$KEYSTONE_CONF_DIR/default_catalog.templates |
| ... | ... |
@@ -389,9 +390,19 @@ function init_keystone {
|
| 389 | 389 |
|
| 390 | 390 |
# install_keystoneclient() - Collect source and prepare |
| 391 | 391 |
function install_keystoneclient {
|
| 392 |
- git_clone $KEYSTONECLIENT_REPO $KEYSTONECLIENT_DIR $KEYSTONECLIENT_BRANCH |
|
| 393 |
- setup_develop $KEYSTONECLIENT_DIR |
|
| 394 |
- sudo install -D -m 0644 -o $STACK_USER {$KEYSTONECLIENT_DIR/tools/,/etc/bash_completion.d/}keystone.bash_completion
|
|
| 392 |
+ if use_library_from_git "python-keystoneclient"; then |
|
| 393 |
+ git_clone_by_name "python-keystoneclient" |
|
| 394 |
+ setup_dev_lib "python-keystoneclient" |
|
| 395 |
+ sudo install -D -m 0644 -o $STACK_USER {${GITDIR["python-keystoneclient"]}/tools/,/etc/bash_completion.d/}keystone.bash_completion
|
|
| 396 |
+ fi |
|
| 397 |
+} |
|
| 398 |
+ |
|
| 399 |
+# install_keystonemiddleware() - Collect source and prepare |
|
| 400 |
+function install_keystonemiddleware {
|
|
| 401 |
+ if use_library_from_git "keystonemiddleware"; then |
|
| 402 |
+ git_clone_by_name "keystonemiddleware" |
|
| 403 |
+ setup_dev_lib "keystonemiddleware" |
|
| 404 |
+ fi |
|
| 395 | 405 |
} |
| 396 | 406 |
|
| 397 | 407 |
# install_keystone() - Collect source and prepare |
| ... | ... |
@@ -70,8 +70,10 @@ PRIVATE_SUBNET_NAME=${PRIVATE_SUBNET_NAME:-"private-subnet"}
|
| 70 | 70 |
PUBLIC_SUBNET_NAME=${PUBLIC_SUBNET_NAME:-"public-subnet"}
|
| 71 | 71 |
|
| 72 | 72 |
# Set up default directories |
| 73 |
+GITDIR["python-neutronclient"]=$DEST/python-neutronclient |
|
| 74 |
+ |
|
| 75 |
+ |
|
| 73 | 76 |
NEUTRON_DIR=$DEST/neutron |
| 74 |
-NEUTRONCLIENT_DIR=$DEST/python-neutronclient |
|
| 75 | 77 |
NEUTRON_AUTH_CACHE_DIR=${NEUTRON_AUTH_CACHE_DIR:-/var/cache/neutron}
|
| 76 | 78 |
|
| 77 | 79 |
# Support entry points installation of console scripts |
| ... | ... |
@@ -450,9 +452,11 @@ function install_neutron {
|
| 450 | 450 |
|
| 451 | 451 |
# install_neutronclient() - Collect source and prepare |
| 452 | 452 |
function install_neutronclient {
|
| 453 |
- git_clone $NEUTRONCLIENT_REPO $NEUTRONCLIENT_DIR $NEUTRONCLIENT_BRANCH |
|
| 454 |
- setup_develop $NEUTRONCLIENT_DIR |
|
| 455 |
- sudo install -D -m 0644 -o $STACK_USER {$NEUTRONCLIENT_DIR/tools/,/etc/bash_completion.d/}neutron.bash_completion
|
|
| 453 |
+ if use_library_from_git "python-neutronclient"; then |
|
| 454 |
+ git_clone_by_name "python-neutronclient" |
|
| 455 |
+ setup_dev_lib "python-neutronclient" |
|
| 456 |
+ sudo install -D -m 0644 -o $STACK_USER {${GITDIR["python-neutronclient"]}/tools/,/etc/bash_completion.d/}neutron.bash_completion
|
|
| 457 |
+ fi |
|
| 456 | 458 |
} |
| 457 | 459 |
|
| 458 | 460 |
# install_neutron_agent_packages() - Collect source and prepare |
| ... | ... |
@@ -29,8 +29,10 @@ set +o xtrace |
| 29 | 29 |
# -------- |
| 30 | 30 |
|
| 31 | 31 |
# Set up default directories |
| 32 |
+GITDIR["python-novaclient"]=$DEST/python-novaclient |
|
| 33 |
+ |
|
| 34 |
+ |
|
| 32 | 35 |
NOVA_DIR=$DEST/nova |
| 33 |
-NOVACLIENT_DIR=$DEST/python-novaclient |
|
| 34 | 36 |
NOVA_STATE_PATH=${NOVA_STATE_PATH:=$DATA_DIR/nova}
|
| 35 | 37 |
# INSTANCES_PATH is the previous name for this |
| 36 | 38 |
NOVA_INSTANCES_PATH=${NOVA_INSTANCES_PATH:=${INSTANCES_PATH:=$NOVA_STATE_PATH/instances}}
|
| ... | ... |
@@ -650,9 +652,11 @@ function init_nova {
|
| 650 | 650 |
|
| 651 | 651 |
# install_novaclient() - Collect source and prepare |
| 652 | 652 |
function install_novaclient {
|
| 653 |
- git_clone $NOVACLIENT_REPO $NOVACLIENT_DIR $NOVACLIENT_BRANCH |
|
| 654 |
- setup_develop $NOVACLIENT_DIR |
|
| 655 |
- sudo install -D -m 0644 -o $STACK_USER {$NOVACLIENT_DIR/tools/,/etc/bash_completion.d/}nova.bash_completion
|
|
| 653 |
+ if use_library_from_git "python-novaclient"; then |
|
| 654 |
+ git_clone_by_name "python-novaclient" |
|
| 655 |
+ setup_dev_lib "python-novaclient" |
|
| 656 |
+ sudo install -D -m 0644 -o $STACK_USER {${GITDIR["python-novaclient"]}/tools/,/etc/bash_completion.d/}nova.bash_completion
|
|
| 657 |
+ fi |
|
| 656 | 658 |
} |
| 657 | 659 |
|
| 658 | 660 |
# install_nova() - Collect source and prepare |
| ... | ... |
@@ -20,59 +20,52 @@ set +o xtrace |
| 20 | 20 |
|
| 21 | 21 |
# Defaults |
| 22 | 22 |
# -------- |
| 23 |
-CLIFF_DIR=$DEST/cliff |
|
| 24 |
-OSLOCFG_DIR=$DEST/oslo.config |
|
| 25 |
-OSLOMSG_DIR=$DEST/oslo.messaging |
|
| 26 |
-OSLORWRAP_DIR=$DEST/oslo.rootwrap |
|
| 27 |
-OSLOVMWARE_DIR=$DEST/oslo.vmware |
|
| 28 |
-PYCADF_DIR=$DEST/pycadf |
|
| 29 |
-STEVEDORE_DIR=$DEST/stevedore |
|
| 30 |
-TASKFLOW_DIR=$DEST/taskflow |
|
| 23 |
+GITDIR["cliff"]=$DEST/cliff |
|
| 24 |
+GITDIR["oslo.config"]=$DEST/oslo.config |
|
| 25 |
+GITDIR["oslo.concurrency"]=$DEST/oslo.concurrency |
|
| 26 |
+GITDIR["oslo.db"]=$DEST/oslo.db |
|
| 27 |
+GITDIR["oslo.i18n"]=$DEST/oslo.i18n |
|
| 28 |
+GITDIR["oslo.log"]=$DEST/oslo.log |
|
| 29 |
+GITDIR["oslo.middleware"]=$DEST/oslo.middleware |
|
| 30 |
+GITDIR["oslo.messaging"]=$DEST/oslo.messaging |
|
| 31 |
+GITDIR["oslo.rootwrap"]=$DEST/oslo.rootwrap |
|
| 32 |
+GITDIR["oslo.serialization"]=$DEST/oslo.serialization |
|
| 33 |
+GITDIR["oslo.utils"]=$DEST/oslo.utils |
|
| 34 |
+GITDIR["oslo.vmware"]=$DEST/oslo.vmware |
|
| 35 |
+GITDIR["pycadf"]=$DEST/pycadf |
|
| 36 |
+GITDIR["stevedore"]=$DEST/stevedore |
|
| 37 |
+GITDIR["taskflow"]=$DEST/taskflow |
|
| 31 | 38 |
|
| 32 | 39 |
# Entry Points |
| 33 | 40 |
# ------------ |
| 34 | 41 |
|
| 42 |
+function _do_install_oslo_lib {
|
|
| 43 |
+ local name=$1 |
|
| 44 |
+ if use_library_from_git "$name"; then |
|
| 45 |
+ git_clone_by_name "$name" |
|
| 46 |
+ setup_lib "$name" |
|
| 47 |
+ fi |
|
| 48 |
+} |
|
| 49 |
+ |
|
| 35 | 50 |
# install_oslo() - Collect source and prepare |
| 36 | 51 |
function install_oslo {
|
| 37 |
- # TODO(sdague): remove this once we get to Icehouse, this just makes |
|
| 38 |
- # for a smoother transition of existing users. |
|
| 39 |
- cleanup_oslo |
|
| 40 |
- |
|
| 41 |
- git_clone $CLIFF_REPO $CLIFF_DIR $CLIFF_BRANCH |
|
| 42 |
- setup_install $CLIFF_DIR |
|
| 43 |
- |
|
| 44 |
- git_clone $OSLOCFG_REPO $OSLOCFG_DIR $OSLOCFG_BRANCH |
|
| 45 |
- setup_install $OSLOCFG_DIR |
|
| 46 |
- |
|
| 47 |
- git_clone $OSLOMSG_REPO $OSLOMSG_DIR $OSLOMSG_BRANCH |
|
| 48 |
- setup_install $OSLOMSG_DIR |
|
| 49 |
- |
|
| 50 |
- git_clone $OSLORWRAP_REPO $OSLORWRAP_DIR $OSLORWRAP_BRANCH |
|
| 51 |
- setup_install $OSLORWRAP_DIR |
|
| 52 |
- |
|
| 53 |
- git_clone $OSLOVMWARE_REPO $OSLOVMWARE_DIR $OSLOVMWARE_BRANCH |
|
| 54 |
- setup_install $OSLOVMWARE_DIR |
|
| 55 |
- |
|
| 56 |
- git_clone $PYCADF_REPO $PYCADF_DIR $PYCADF_BRANCH |
|
| 57 |
- setup_install $PYCADF_DIR |
|
| 58 |
- |
|
| 59 |
- git_clone $STEVEDORE_REPO $STEVEDORE_DIR $STEVEDORE_BRANCH |
|
| 60 |
- setup_install $STEVEDORE_DIR |
|
| 61 |
- |
|
| 62 |
- git_clone $TASKFLOW_REPO $TASKFLOW_DIR $TASKFLOW_BRANCH |
|
| 63 |
- setup_install $TASKFLOW_DIR |
|
| 52 |
+ _do_install_oslo_lib "cliff" |
|
| 53 |
+ _do_install_oslo_lib "oslo.i18n" |
|
| 54 |
+ _do_install_oslo_lib "oslo.utils" |
|
| 55 |
+ _do_install_oslo_lib "oslo.serialization" |
|
| 56 |
+ _do_install_oslo_lib "oslo.config" |
|
| 57 |
+ _do_install_oslo_lib "oslo.concurrency" |
|
| 58 |
+ _do_install_oslo_lib "oslo.log" |
|
| 59 |
+ _do_install_oslo_lib "oslo.middleware" |
|
| 60 |
+ _do_install_oslo_lib "oslo.messaging" |
|
| 61 |
+ _do_install_oslo_lib "oslo.rootwrap" |
|
| 62 |
+ _do_install_oslo_lib "oslo.db" |
|
| 63 |
+ _do_install_oslo_lib "oslo.vmware" |
|
| 64 |
+ _do_install_oslo_lib "pycadf" |
|
| 65 |
+ _do_install_oslo_lib "stevedore" |
|
| 66 |
+ _do_install_oslo_lib "taskflow" |
|
| 64 | 67 |
} |
| 65 | 68 |
|
| 66 |
-# cleanup_oslo() - purge possibly old versions of oslo |
|
| 67 |
-function cleanup_oslo {
|
|
| 68 |
- # this means we've got an old oslo installed, lets get rid of it |
|
| 69 |
- if ! python -c 'import oslo.config' 2>/dev/null; then |
|
| 70 |
- echo "Found old oslo.config... removing to ensure consistency" |
|
| 71 |
- local PIP_CMD=$(get_pip_command) |
|
| 72 |
- pip_install oslo.config |
|
| 73 |
- sudo $PIP_CMD uninstall -y oslo.config |
|
| 74 |
- fi |
|
| 75 |
-} |
|
| 76 | 69 |
|
| 77 | 70 |
# Restore xtrace |
| 78 | 71 |
$XTRACE |
| ... | ... |
@@ -20,12 +20,10 @@ set +o xtrace |
| 20 | 20 |
# Defaults |
| 21 | 21 |
# -------- |
| 22 | 22 |
|
| 23 |
-# Set up default repos |
|
| 24 |
-SAHARA_REPO=${SAHARA_REPO:-${GIT_BASE}/openstack/sahara.git}
|
|
| 25 |
-SAHARA_BRANCH=${SAHARA_BRANCH:-master}
|
|
| 26 |
- |
|
| 27 | 23 |
# Set up default directories |
| 24 |
+GITDIR["python-saharaclient"]=$DEST/python-saharaclient |
|
| 28 | 25 |
SAHARA_DIR=$DEST/sahara |
| 26 |
+ |
|
| 29 | 27 |
SAHARA_CONF_DIR=${SAHARA_CONF_DIR:-/etc/sahara}
|
| 30 | 28 |
SAHARA_CONF_FILE=${SAHARA_CONF_DIR}/sahara.conf
|
| 31 | 29 |
|
| ... | ... |
@@ -157,6 +155,14 @@ function install_sahara {
|
| 157 | 157 |
setup_develop $SAHARA_DIR |
| 158 | 158 |
} |
| 159 | 159 |
|
| 160 |
+# install_python_saharaclient() - Collect source and prepare |
|
| 161 |
+function install_python_saharaclient {
|
|
| 162 |
+ if use_library_from_git "python-saharaclient"; then |
|
| 163 |
+ git_clone_by_name "python-saharaclient" |
|
| 164 |
+ setup_dev_lib "python-saharaclient" |
|
| 165 |
+ fi |
|
| 166 |
+} |
|
| 167 |
+ |
|
| 160 | 168 |
# start_sahara() - Start running processes, including screen |
| 161 | 169 |
function start_sahara {
|
| 162 | 170 |
run_process sahara "$SAHARA_BIN_DIR/sahara-api --config-file $SAHARA_CONF_FILE" |
| ... | ... |
@@ -30,8 +30,10 @@ set +o xtrace |
| 30 | 30 |
# -------- |
| 31 | 31 |
|
| 32 | 32 |
# Set up default directories |
| 33 |
+GITDIR["python-swiftclient"]=$DEST/python-swiftclient |
|
| 34 |
+ |
|
| 35 |
+ |
|
| 33 | 36 |
SWIFT_DIR=$DEST/swift |
| 34 |
-SWIFTCLIENT_DIR=$DEST/python-swiftclient |
|
| 35 | 37 |
SWIFT_AUTH_CACHE_DIR=${SWIFT_AUTH_CACHE_DIR:-/var/cache/swift}
|
| 36 | 38 |
SWIFT_APACHE_WSGI_DIR=${SWIFT_APACHE_WSGI_DIR:-/var/www/swift}
|
| 37 | 39 |
SWIFT3_DIR=$DEST/swift3 |
| ... | ... |
@@ -630,8 +632,10 @@ function install_swift {
|
| 630 | 630 |
} |
| 631 | 631 |
|
| 632 | 632 |
function install_swiftclient {
|
| 633 |
- git_clone $SWIFTCLIENT_REPO $SWIFTCLIENT_DIR $SWIFTCLIENT_BRANCH |
|
| 634 |
- setup_develop $SWIFTCLIENT_DIR |
|
| 633 |
+ if use_library_from_git "python-swiftclient"; then |
|
| 634 |
+ git_clone_by_name "python-swiftclient" |
|
| 635 |
+ setup_dev_lib "python-swiftclient" |
|
| 636 |
+ fi |
|
| 635 | 637 |
} |
| 636 | 638 |
|
| 637 | 639 |
# start_swift() - Start running processes, including screen |
| ... | ... |
@@ -45,6 +45,8 @@ set +o xtrace |
| 45 | 45 |
# -------- |
| 46 | 46 |
|
| 47 | 47 |
# Set up default directories |
| 48 |
+GITDIR["tempest-lib"]=$DEST/tempest-lib |
|
| 49 |
+ |
|
| 48 | 50 |
TEMPEST_DIR=$DEST/tempest |
| 49 | 51 |
TEMPEST_CONFIG_DIR=${TEMPEST_CONFIG_DIR:-$TEMPEST_DIR/etc}
|
| 50 | 52 |
TEMPEST_CONFIG=$TEMPEST_CONFIG_DIR/tempest.conf |
| ... | ... |
@@ -417,6 +419,14 @@ function create_tempest_accounts {
|
| 417 | 417 |
fi |
| 418 | 418 |
} |
| 419 | 419 |
|
| 420 |
+# install_tempest_lib() - Collect source, prepare, and install tempest-lib |
|
| 421 |
+function install_tempest_lib {
|
|
| 422 |
+ if use_library_from_git "tempest-lib"; then |
|
| 423 |
+ git_clone_by_name "tempest-lib" |
|
| 424 |
+ setup_dev_lib "tempest-lib" |
|
| 425 |
+ fi |
|
| 426 |
+} |
|
| 427 |
+ |
|
| 420 | 428 |
# install_tempest() - Collect source and prepare |
| 421 | 429 |
function install_tempest {
|
| 422 | 430 |
git_clone $TEMPEST_REPO $TEMPEST_DIR $TEMPEST_BRANCH |
| ... | ... |
@@ -25,8 +25,9 @@ set +o xtrace |
| 25 | 25 |
NETWORK_GATEWAY=${NETWORK_GATEWAY:-10.0.0.1}
|
| 26 | 26 |
|
| 27 | 27 |
# Set up default configuration |
| 28 |
+GITDIR["python-troveclient"]=$DEST/python-troveclient |
|
| 29 |
+ |
|
| 28 | 30 |
TROVE_DIR=$DEST/trove |
| 29 |
-TROVECLIENT_DIR=$DEST/python-troveclient |
|
| 30 | 31 |
TROVE_CONF_DIR=/etc/trove |
| 31 | 32 |
TROVE_LOCAL_CONF_DIR=$TROVE_DIR/etc/trove |
| 32 | 33 |
TROVE_AUTH_CACHE_DIR=${TROVE_AUTH_CACHE_DIR:-/var/cache/trove}
|
| ... | ... |
@@ -112,10 +113,6 @@ function cleanup_trove {
|
| 112 | 112 |
rm -fr $TROVE_CONF_DIR/* |
| 113 | 113 |
} |
| 114 | 114 |
|
| 115 |
-# configure_troveclient() - Set config files, create data dirs, etc |
|
| 116 |
-function configure_troveclient {
|
|
| 117 |
- setup_develop $TROVECLIENT_DIR |
|
| 118 |
-} |
|
| 119 | 115 |
|
| 120 | 116 |
# configure_trove() - Set config files, create data dirs, etc |
| 121 | 117 |
function configure_trove {
|
| ... | ... |
@@ -189,7 +186,10 @@ function configure_trove {
|
| 189 | 189 |
|
| 190 | 190 |
# install_troveclient() - Collect source and prepare |
| 191 | 191 |
function install_troveclient {
|
| 192 |
- git_clone $TROVECLIENT_REPO $TROVECLIENT_DIR $TROVECLIENT_BRANCH |
|
| 192 |
+ if use_library_from_git "python-troveclient"; then |
|
| 193 |
+ git_clone_by_name "python-troveclient" |
|
| 194 |
+ setup_dev_lib "python-troveclient" |
|
| 195 |
+ fi |
|
| 193 | 196 |
} |
| 194 | 197 |
|
| 195 | 198 |
# install_trove() - Collect source and prepare |
| ... | ... |
@@ -360,9 +360,6 @@ if [[ -d $TOP_DIR/extras.d ]]; then |
| 360 | 360 |
done |
| 361 | 361 |
fi |
| 362 | 362 |
|
| 363 |
-# Set the destination directories for other OpenStack projects |
|
| 364 |
-OPENSTACKCLIENT_DIR=$DEST/python-openstackclient |
|
| 365 |
- |
|
| 366 | 363 |
# Interactive Configuration |
| 367 | 364 |
# ------------------------- |
| 368 | 365 |
|
| ... | ... |
@@ -693,8 +690,13 @@ if is_service_enabled heat horizon; then |
| 693 | 693 |
install_heatclient |
| 694 | 694 |
fi |
| 695 | 695 |
|
| 696 |
-git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH |
|
| 697 |
-setup_develop $OPENSTACKCLIENT_DIR |
|
| 696 |
+# install the OpenStack client, needed for most setup commands |
|
| 697 |
+if use_library_from_git "python-openstackclient"; then |
|
| 698 |
+ git_clone_by_name "python-openstackclient" |
|
| 699 |
+ setup_dev_lib "python-openstackclient" |
|
| 700 |
+else |
|
| 701 |
+ pip_install python-openstackclient |
|
| 702 |
+fi |
|
| 698 | 703 |
|
| 699 | 704 |
if is_service_enabled key; then |
| 700 | 705 |
install_keystone |
| ... | ... |
@@ -750,7 +752,6 @@ if is_service_enabled ceilometer; then |
| 750 | 750 |
install_ceilometer |
| 751 | 751 |
echo_summary "Configuring Ceilometer" |
| 752 | 752 |
configure_ceilometer |
| 753 |
- configure_ceilometerclient |
|
| 754 | 753 |
fi |
| 755 | 754 |
|
| 756 | 755 |
if is_service_enabled heat; then |
| ... | ... |
@@ -97,160 +97,246 @@ GIT_TIMEOUT=${GIT_TIMEOUT:-0}
|
| 97 | 97 |
# Another option is http://review.openstack.org/p |
| 98 | 98 |
GIT_BASE=${GIT_BASE:-git://git.openstack.org}
|
| 99 | 99 |
|
| 100 |
+############## |
|
| 101 |
+# |
|
| 102 |
+# OpenStack Server Components |
|
| 103 |
+# |
|
| 104 |
+############## |
|
| 105 |
+ |
|
| 100 | 106 |
# metering service |
| 101 | 107 |
CEILOMETER_REPO=${CEILOMETER_REPO:-${GIT_BASE}/openstack/ceilometer.git}
|
| 102 | 108 |
CEILOMETER_BRANCH=${CEILOMETER_BRANCH:-stable/icehouse}
|
| 103 | 109 |
|
| 104 |
-# ceilometer client library |
|
| 105 |
-CEILOMETERCLIENT_REPO=${CEILOMETERCLIENT_REPO:-${GIT_BASE}/openstack/python-ceilometerclient.git}
|
|
| 106 |
-CEILOMETERCLIENT_BRANCH=${CEILOMETERCLIENT_BRANCH:-master}
|
|
| 107 |
- |
|
| 108 |
-# volume service |
|
| 110 |
+# block storage service |
|
| 109 | 111 |
CINDER_REPO=${CINDER_REPO:-${GIT_BASE}/openstack/cinder.git}
|
| 110 | 112 |
CINDER_BRANCH=${CINDER_BRANCH:-stable/icehouse}
|
| 111 | 113 |
|
| 112 |
-# volume client |
|
| 113 |
-CINDERCLIENT_REPO=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
|
|
| 114 |
-CINDERCLIENT_BRANCH=${CINDERCLIENT_BRANCH:-master}
|
|
| 115 |
- |
|
| 116 | 114 |
# image catalog service |
| 117 | 115 |
GLANCE_REPO=${GLANCE_REPO:-${GIT_BASE}/openstack/glance.git}
|
| 118 | 116 |
GLANCE_BRANCH=${GLANCE_BRANCH:-stable/icehouse}
|
| 119 | 117 |
|
| 120 |
-# python glance client library |
|
| 121 |
-GLANCECLIENT_REPO=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
|
|
| 122 |
-GLANCECLIENT_BRANCH=${GLANCECLIENT_BRANCH:-master}
|
|
| 123 |
- |
|
| 124 | 118 |
# heat service |
| 125 | 119 |
HEAT_REPO=${HEAT_REPO:-${GIT_BASE}/openstack/heat.git}
|
| 126 | 120 |
HEAT_BRANCH=${HEAT_BRANCH:-stable/icehouse}
|
| 127 | 121 |
|
| 128 |
-# python heat client library |
|
| 129 |
-HEATCLIENT_REPO=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
|
|
| 130 |
-HEATCLIENT_BRANCH=${HEATCLIENT_BRANCH:-master}
|
|
| 131 |
- |
|
| 132 | 122 |
# django powered web control panel for openstack |
| 133 | 123 |
HORIZON_REPO=${HORIZON_REPO:-${GIT_BASE}/openstack/horizon.git}
|
| 134 | 124 |
HORIZON_BRANCH=${HORIZON_BRANCH:-stable/icehouse}
|
| 135 | 125 |
|
| 136 |
-# django openstack_auth library |
|
| 137 |
-HORIZONAUTH_REPO=${HORIZONAUTH_REPO:-${GIT_BASE}/openstack/django_openstack_auth.git}
|
|
| 138 |
-HORIZONAUTH_BRANCH=${HORIZONAUTH_BRANCH:-master}
|
|
| 139 |
- |
|
| 140 | 126 |
# baremetal provisionint service |
| 141 | 127 |
IRONIC_REPO=${IRONIC_REPO:-${GIT_BASE}/openstack/ironic.git}
|
| 142 | 128 |
IRONIC_BRANCH=${IRONIC_BRANCH:-stable/icehouse}
|
| 143 | 129 |
|
| 144 |
-# ironic client |
|
| 145 |
-IRONICCLIENT_REPO=${IRONICCLIENT_REPO:-${GIT_BASE}/openstack/python-ironicclient.git}
|
|
| 146 |
-IRONICCLIENT_BRANCH=${IRONICCLIENT_BRANCH:-master}
|
|
| 147 |
- |
|
| 148 | 130 |
# unified auth system (manages accounts/tokens) |
| 149 | 131 |
KEYSTONE_REPO=${KEYSTONE_REPO:-${GIT_BASE}/openstack/keystone.git}
|
| 150 | 132 |
KEYSTONE_BRANCH=${KEYSTONE_BRANCH:-stable/icehouse}
|
| 151 | 133 |
|
| 152 |
-# python keystone client library to nova that horizon uses |
|
| 153 |
-KEYSTONECLIENT_REPO=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
|
|
| 154 |
-KEYSTONECLIENT_BRANCH=${KEYSTONECLIENT_BRANCH:-master}
|
|
| 134 |
+# neutron service |
|
| 135 |
+NEUTRON_REPO=${NEUTRON_REPO:-${GIT_BASE}/openstack/neutron.git}
|
|
| 136 |
+NEUTRON_BRANCH=${NEUTRON_BRANCH:-stable/icehouse}
|
|
| 155 | 137 |
|
| 156 | 138 |
# compute service |
| 157 | 139 |
NOVA_REPO=${NOVA_REPO:-${GIT_BASE}/openstack/nova.git}
|
| 158 | 140 |
NOVA_BRANCH=${NOVA_BRANCH:-stable/icehouse}
|
| 159 | 141 |
|
| 142 |
+# data processing service |
|
| 143 |
+SAHARA_REPO=${SAHARA_REPO:-${GIT_BASE}/openstack/sahara.git}
|
|
| 144 |
+SAHARA_BRANCH=${SAHARA_BRANCH:-master}
|
|
| 145 |
+ |
|
| 146 |
+# object storage service |
|
| 147 |
+SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
|
|
| 148 |
+SWIFT_BRANCH=${SWIFT_BRANCH:-stable/icehouse}
|
|
| 149 |
+ |
|
| 150 |
+# trove service |
|
| 151 |
+TROVE_REPO=${TROVE_REPO:-${GIT_BASE}/openstack/trove.git}
|
|
| 152 |
+TROVE_BRANCH=${TROVE_BRANCH:-stable/icehouse}
|
|
| 153 |
+ |
|
| 154 |
+############## |
|
| 155 |
+# |
|
| 156 |
+# Testing Components |
|
| 157 |
+# |
|
| 158 |
+############## |
|
| 159 |
+ |
|
| 160 |
+# consolidated openstack requirements |
|
| 161 |
+REQUIREMENTS_REPO=${REQUIREMENTS_REPO:-${GIT_BASE}/openstack/requirements.git}
|
|
| 162 |
+REQUIREMENTS_BRANCH=${REQUIREMENTS_BRANCH:-stable/icehouse}
|
|
| 163 |
+ |
|
| 164 |
+# Tempest test suite |
|
| 165 |
+TEMPEST_REPO=${TEMPEST_REPO:-${GIT_BASE}/openstack/tempest.git}
|
|
| 166 |
+TEMPEST_BRANCH=${TEMPEST_BRANCH:-master}
|
|
| 167 |
+ |
|
| 168 |
+# TODO(sdague): this should end up as a library component like below |
|
| 169 |
+GITREPO["tempest-lib"]=${TEMPEST_LIB_REPO:-${GIT_BASE}/openstack/tempest-lib.git}
|
|
| 170 |
+GITBRANCH["tempest-lib"]=${TEMPEST_LIB_BRANCH:-master}
|
|
| 171 |
+ |
|
| 172 |
+ |
|
| 173 |
+############## |
|
| 174 |
+# |
|
| 175 |
+# OpenStack Client Library Componets |
|
| 176 |
+# |
|
| 177 |
+############## |
|
| 178 |
+ |
|
| 179 |
+# ceilometer client library |
|
| 180 |
+GITREPO["python-ceilometerclient"]=${CEILOMETERCLIENT_REPO:-${GIT_BASE}/openstack/python-ceilometerclient.git}
|
|
| 181 |
+GITBRANCH["python-ceilometerclient"]=${CEILOMETERCLIENT_BRANCH:-master}
|
|
| 182 |
+ |
|
| 183 |
+# volume client |
|
| 184 |
+GITREPO["python-cinderclient"]=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
|
|
| 185 |
+GITBRANCH["python-cinderclient"]=${CINDERCLIENT_BRANCH:-master}
|
|
| 186 |
+ |
|
| 187 |
+# python glance client library |
|
| 188 |
+GITREPO["python-glanceclient"]=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
|
|
| 189 |
+GITBRANCH["python-glanceclient"]=${GLANCECLIENT_BRANCH:-master}
|
|
| 190 |
+ |
|
| 191 |
+# python heat client library |
|
| 192 |
+GITREPO["python-heatclient"]=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
|
|
| 193 |
+GITBRANCH["python-heatclient"]=${HEATCLIENT_BRANCH:-master}
|
|
| 194 |
+ |
|
| 195 |
+# ironic client |
|
| 196 |
+GITREPO["python-ironicclient"]=${IRONICCLIENT_REPO:-${GIT_BASE}/openstack/python-ironicclient.git}
|
|
| 197 |
+GITBRANCH["python-ironicclient"]=${IRONICCLIENT_BRANCH:-master}
|
|
| 198 |
+ |
|
| 199 |
+# python keystone client library to nova that horizon uses |
|
| 200 |
+GITREPO["python-keystoneclient"]=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
|
|
| 201 |
+GITBRANCH["python-keystoneclient"]=${KEYSTONECLIENT_BRANCH:-master}
|
|
| 202 |
+ |
|
| 203 |
+# neutron client |
|
| 204 |
+GITREPO["python-neutronclient"]=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
|
|
| 205 |
+GITBRANCH["python-neutronclient"]=${NEUTRONCLIENT_BRANCH:-master}
|
|
| 206 |
+ |
|
| 160 | 207 |
# python client library to nova that horizon (and others) use |
| 161 |
-NOVACLIENT_REPO=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
|
|
| 162 |
-NOVACLIENT_BRANCH=${NOVACLIENT_BRANCH:-master}
|
|
| 208 |
+GITREPO["python-novaclient"]=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
|
|
| 209 |
+GITBRANCH["python-novaclient"]=${NOVACLIENT_BRANCH:-master}
|
|
| 210 |
+ |
|
| 211 |
+# python saharaclient |
|
| 212 |
+GITREPO["python-saharaclient"]=${SAHARACLIENT_REPO:-${GIT_BASE}/openstack/python-saharaclient.git}
|
|
| 213 |
+GITBRANCH["python-saharaclient"]=${SAHARACLIENT_BRANCH:-master}
|
|
| 214 |
+ |
|
| 215 |
+# python swift client library |
|
| 216 |
+GITREPO["python-swiftclient"]=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
|
|
| 217 |
+GITBRANCH["python-swiftclient"]=${SWIFTCLIENT_BRANCH:-master}
|
|
| 218 |
+ |
|
| 219 |
+# trove client library test |
|
| 220 |
+GITREPO["python-troveclient"]=${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git}
|
|
| 221 |
+GITBRANCH["python-troveclient"]=${TROVECLIENT_BRANCH:-master}
|
|
| 163 | 222 |
|
| 164 | 223 |
# consolidated openstack python client |
| 165 |
-OPENSTACKCLIENT_REPO=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
|
|
| 166 |
-OPENSTACKCLIENT_BRANCH=${OPENSTACKCLIENT_BRANCH:-master}
|
|
| 224 |
+GITREPO["python-openstackclient"]=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
|
|
| 225 |
+GITBRANCH["python-openstackclient"]=${OPENSTACKCLIENT_BRANCH:-master}
|
|
| 226 |
+# this doesn't exist in a lib file, so set it here |
|
| 227 |
+GITDIR["python-openstackclient"]=$DEST/python-openstackclient |
|
| 228 |
+ |
|
| 229 |
+################### |
|
| 230 |
+# |
|
| 231 |
+# Oslo Libraries |
|
| 232 |
+# |
|
| 233 |
+################### |
|
| 167 | 234 |
|
| 168 | 235 |
# cliff command line framework |
| 169 |
-CLIFF_REPO=${CLIFF_REPO:-${GIT_BASE}/openstack/cliff.git}
|
|
| 170 |
-CLIFF_BRANCH=${CLIFF_BRANCH:-master}
|
|
| 236 |
+GITREPO["cliff"]=${CLIFF_REPO:-${GIT_BASE}/openstack/cliff.git}
|
|
| 237 |
+GITBRANCH["cliff"]=${CLIFF_BRANCH:-master}
|
|
| 171 | 238 |
|
| 172 | 239 |
# oslo.config |
| 173 |
-OSLOCFG_REPO=${OSLOCFG_REPO:-${GIT_BASE}/openstack/oslo.config.git}
|
|
| 174 |
-OSLOCFG_BRANCH=${OSLOCFG_BRANCH:-master}
|
|
| 240 |
+GITREPO["oslo.config"]=${OSLOCFG_REPO:-${GIT_BASE}/openstack/oslo.config.git}
|
|
| 241 |
+GITBRANCH["oslo.config"]=${OSLOCFG_BRANCH:-master}
|
|
| 242 |
+ |
|
| 243 |
+# oslo.db |
|
| 244 |
+GITREPO["oslo.db"]=${OSLODB_REPO:-${GIT_BASE}/openstack/oslo.db.git}
|
|
| 245 |
+GITBRANCH["oslo.db"]=${OSLODB_BRANCH:-master}
|
|
| 246 |
+ |
|
| 247 |
+# oslo.i18n |
|
| 248 |
+GITREPO["oslo.i18n"]=${OSLOI18N_REPO:-${GIT_BASE}/openstack/oslo.i18n.git}
|
|
| 249 |
+GITBRANCH["oslo.i18n"]=${OSLOI18N_BRANCH:-master}
|
|
| 250 |
+ |
|
| 251 |
+# oslo.log |
|
| 252 |
+GITREPO["oslo.log"]=${OSLOLOG_REPO:-${GIT_BASE}/openstack/oslo.log.git}
|
|
| 253 |
+GITBRANCH["oslo.log"]=${OSLOLOG_BRANCH:-master}
|
|
| 175 | 254 |
|
| 176 | 255 |
# oslo.messaging |
| 177 |
-OSLOMSG_REPO=${OSLOMSG_REPO:-${GIT_BASE}/openstack/oslo.messaging.git}
|
|
| 178 |
-OSLOMSG_BRANCH=${OSLOMSG_BRANCH:-master}
|
|
| 256 |
+GITREPO["oslo.messaging"]=${OSLOMSG_REPO:-${GIT_BASE}/openstack/oslo.messaging.git}
|
|
| 257 |
+GITBRANCH["oslo.messaging"]=${OSLOMSG_BRANCH:-master}
|
|
| 179 | 258 |
|
| 180 | 259 |
# oslo.rootwrap |
| 181 |
-OSLORWRAP_REPO=${OSLORWRAP_REPO:-${GIT_BASE}/openstack/oslo.rootwrap.git}
|
|
| 182 |
-OSLORWRAP_BRANCH=${OSLORWRAP_BRANCH:-master}
|
|
| 260 |
+GITREPO["oslo.rootwrap"]=${OSLORWRAP_REPO:-${GIT_BASE}/openstack/oslo.rootwrap.git}
|
|
| 261 |
+GITBRANCH["oslo.rootwrap"]=${OSLORWRAP_BRANCH:-master}
|
|
| 183 | 262 |
|
| 184 | 263 |
# oslo.vmware |
| 185 |
-OSLOVMWARE_REPO=${OSLOVMWARE_REPO:-${GIT_BASE}/openstack/oslo.vmware.git}
|
|
| 186 |
-OSLOVMWARE_BRANCH=${OSLOVMWARE_BRANCH:-master}
|
|
| 264 |
+GITREPO["oslo.vmware"]=${OSLOVMWARE_REPO:-${GIT_BASE}/openstack/oslo.vmware.git}
|
|
| 265 |
+GITBRANCH["oslo.vmware"]=${OSLOVMWARE_BRANCH:-master}
|
|
| 187 | 266 |
|
| 188 | 267 |
# pycadf auditing library |
| 189 |
-PYCADF_REPO=${PYCADF_REPO:-${GIT_BASE}/openstack/pycadf.git}
|
|
| 190 |
-PYCADF_BRANCH=${PYCADF_BRANCH:-master}
|
|
| 268 |
+GITREPO["pycadf"]=${PYCADF_REPO:-${GIT_BASE}/openstack/pycadf.git}
|
|
| 269 |
+GITBRANCH["pycadf"]=${PYCADF_BRANCH:-master}
|
|
| 191 | 270 |
|
| 192 | 271 |
# stevedore plugin manager |
| 193 |
-STEVEDORE_REPO=${STEVEDORE_REPO:-${GIT_BASE}/openstack/stevedore.git}
|
|
| 194 |
-STEVEDORE_BRANCH=${STEVEDORE_BRANCH:-master}
|
|
| 272 |
+GITREPO["stevedore"]=${STEVEDORE_REPO:-${GIT_BASE}/openstack/stevedore.git}
|
|
| 273 |
+GITBRANCH["stevedore"]=${STEVEDORE_BRANCH:-master}
|
|
| 195 | 274 |
|
| 196 | 275 |
# taskflow plugin manager |
| 197 |
-TASKFLOW_REPO=${TASKFLOW_REPO:-${GIT_BASE}/openstack/taskflow.git}
|
|
| 198 |
-TASKFLOW_BRANCH=${TASKFLOW_BRANCH:-master}
|
|
| 276 |
+GITREPO["taskflow"]=${TASKFLOW_REPO:-${GIT_BASE}/openstack/taskflow.git}
|
|
| 277 |
+GITBRANCH["taskflow"]=${TASKFLOW_BRANCH:-master}
|
|
| 199 | 278 |
|
| 200 | 279 |
# pbr drives the setuptools configs |
| 201 |
-PBR_REPO=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
|
|
| 202 |
-PBR_BRANCH=${PBR_BRANCH:-master}
|
|
| 280 |
+GITREPO["pbr"]=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
|
|
| 281 |
+GITBRANCH["pbr"]=${PBR_BRANCH:-master}
|
|
| 203 | 282 |
|
| 204 |
-# neutron service |
|
| 205 |
-NEUTRON_REPO=${NEUTRON_REPO:-${GIT_BASE}/openstack/neutron.git}
|
|
| 206 |
-NEUTRON_BRANCH=${NEUTRON_BRANCH:-stable/icehouse}
|
|
| 283 |
+################## |
|
| 284 |
+# |
|
| 285 |
+# Libraries managed by OpenStack programs (non oslo) |
|
| 286 |
+# |
|
| 287 |
+################## |
|
| 207 | 288 |
|
| 208 |
-# neutron client |
|
| 209 |
-NEUTRONCLIENT_REPO=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
|
|
| 210 |
-NEUTRONCLIENT_BRANCH=${NEUTRONCLIENT_BRANCH:-master}
|
|
| 289 |
+# heat-cfntools server agent |
|
| 290 |
+HEAT_CFNTOOLS_REPO=${HEAT_CFNTOOLS_REPO:-${GIT_BASE}/openstack/heat-cfntools.git}
|
|
| 291 |
+HEAT_CFNTOOLS_BRANCH=${HEAT_CFNTOOLS_BRANCH:-master}
|
|
| 211 | 292 |
|
| 212 |
-# consolidated openstack requirements |
|
| 213 |
-REQUIREMENTS_REPO=${REQUIREMENTS_REPO:-${GIT_BASE}/openstack/requirements.git}
|
|
| 214 |
-REQUIREMENTS_BRANCH=${REQUIREMENTS_BRANCH:-stable/icehouse}
|
|
| 293 |
+# heat example templates and elements |
|
| 294 |
+HEAT_TEMPLATES_REPO=${HEAT_TEMPLATES_REPO:-${GIT_BASE}/openstack/heat-templates.git}
|
|
| 295 |
+HEAT_TEMPLATES_BRANCH=${HEAT_TEMPLATES_BRANCH:-master}
|
|
| 215 | 296 |
|
| 216 |
-# storage service |
|
| 217 |
-SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
|
|
| 218 |
-SWIFT_BRANCH=${SWIFT_BRANCH:-stable/icehouse}
|
|
| 219 |
-SWIFT3_REPO=${SWIFT3_REPO:-${GIT_BASE}/stackforge/swift3.git}
|
|
| 220 |
-SWIFT3_BRANCH=${SWIFT3_BRANCH:-master}
|
|
| 297 |
+# django openstack_auth library |
|
| 298 |
+GITREPO["django_openstack_auth"]=${HORIZONAUTH_REPO:-${GIT_BASE}/openstack/django_openstack_auth.git}
|
|
| 299 |
+GITBRANCH["django_openstack_auth"]=${HORIZONAUTH_BRANCH:-master}
|
|
| 221 | 300 |
|
| 222 |
-# python swift client library |
|
| 223 |
-SWIFTCLIENT_REPO=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
|
|
| 224 |
-SWIFTCLIENT_BRANCH=${SWIFTCLIENT_BRANCH:-master}
|
|
| 301 |
+# keystone middleware |
|
| 302 |
+GITREPO["keystonemiddleware"]=${KEYSTONEMIDDLEWARE_REPO:-${GIT_BASE}/openstack/keystonemiddleware.git}
|
|
| 303 |
+GITBRANCH["keystonemiddleware"]=${KEYSTONEMIDDLEWARE_BRANCH:-master}
|
|
| 225 | 304 |
|
| 226 |
-# Tempest test suite |
|
| 227 |
-TEMPEST_REPO=${TEMPEST_REPO:-${GIT_BASE}/openstack/tempest.git}
|
|
| 228 |
-TEMPEST_BRANCH=${TEMPEST_BRANCH:-master}
|
|
| 305 |
+# s3 support for swift |
|
| 306 |
+SWIFT3_REPO=${SWIFT3_REPO:-${GIT_BASE}/stackforge/swift3.git}
|
|
| 307 |
+SWIFT3_BRANCH=${SWIFT3_BRANCH:-master}
|
|
| 229 | 308 |
|
| 309 |
+################## |
|
| 310 |
+# |
|
| 311 |
+# TripleO Components |
|
| 312 |
+# |
|
| 313 |
+################## |
|
| 230 | 314 |
|
| 231 | 315 |
# diskimage-builder |
| 232 | 316 |
DIB_REPO=${DIB_REPO:-${GIT_BASE}/openstack/diskimage-builder.git}
|
| 233 | 317 |
DIB_BRANCH=${DIB_BRANCH:-master}
|
| 234 | 318 |
|
| 235 |
-# a websockets/html5 or flash powered VNC console for vm instances |
|
| 236 |
-NOVNC_REPO=${NOVNC_REPO:-https://github.com/kanaka/noVNC.git}
|
|
| 237 |
-NOVNC_BRANCH=${NOVNC_BRANCH:-master}
|
|
| 319 |
+# os-apply-config configuration template tool |
|
| 320 |
+OAC_REPO=${OAC_REPO:-${GIT_BASE}/openstack/os-apply-config.git}
|
|
| 321 |
+OAC_BRANCH=${OAC_BRANCH:-master}
|
|
| 238 | 322 |
|
| 239 |
-# ryu service |
|
| 240 |
-RYU_REPO=${RYU_REPO:-https://github.com/osrg/ryu.git}
|
|
| 241 |
-RYU_BRANCH=${RYU_BRANCH:-master}
|
|
| 323 |
+# os-collect-config configuration agent |
|
| 324 |
+OCC_REPO=${OCC_REPO:-${GIT_BASE}/openstack/os-collect-config.git}
|
|
| 325 |
+OCC_BRANCH=${OCC_BRANCH:-master}
|
|
| 242 | 326 |
|
| 243 |
-# a websockets/html5 or flash powered SPICE console for vm instances |
|
| 244 |
-SPICE_REPO=${SPICE_REPO:-http://anongit.freedesktop.org/git/spice/spice-html5.git}
|
|
| 245 |
-SPICE_BRANCH=${SPICE_BRANCH:-master}
|
|
| 327 |
+# os-refresh-config configuration run-parts tool |
|
| 328 |
+ORC_REPO=${ORC_REPO:-${GIT_BASE}/openstack/os-refresh-config.git}
|
|
| 329 |
+ORC_BRANCH=${ORC_BRANCH:-master}
|
|
| 246 | 330 |
|
| 247 |
-# trove service |
|
| 248 |
-TROVE_REPO=${TROVE_REPO:-${GIT_BASE}/openstack/trove.git}
|
|
| 249 |
-TROVE_BRANCH=${TROVE_BRANCH:-stable/icehouse}
|
|
| 331 |
+# Tripleo elements for diskimage-builder images |
|
| 332 |
+TIE_REPO=${TIE_REPO:-${GIT_BASE}/openstack/tripleo-image-elements.git}
|
|
| 333 |
+TIE_BRANCH=${TIE_BRANCH:-master}
|
|
| 250 | 334 |
|
| 251 |
-# trove client library test |
|
| 252 |
-TROVECLIENT_REPO=${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git}
|
|
| 253 |
-TROVECLIENT_BRANCH=${TROVECLIENT_BRANCH:-master}
|
|
| 335 |
+################# |
|
| 336 |
+# |
|
| 337 |
+# Additional Libraries |
|
| 338 |
+# |
|
| 339 |
+################# |
|
| 254 | 340 |
|
| 255 | 341 |
# stackforge libraries that are used by OpenStack core services |
| 256 | 342 |
# wsme |
| ... | ... |
@@ -262,6 +348,32 @@ PECAN_REPO=${PECAN_REPO:-${GIT_BASE}/stackforge/pecan.git}
|
| 262 | 262 |
PECAN_BRANCH=${PECAN_BRANCH:-master}
|
| 263 | 263 |
|
| 264 | 264 |
|
| 265 |
+################# |
|
| 266 |
+# |
|
| 267 |
+# 3rd Party Components (non pip installable) |
|
| 268 |
+# |
|
| 269 |
+# NOTE(sdague): these should be converted to release version installs or removed |
|
| 270 |
+# |
|
| 271 |
+################# |
|
| 272 |
+ |
|
| 273 |
+# ironic python agent |
|
| 274 |
+IRONIC_PYTHON_AGENT_REPO=${IRONIC_PYTHON_AGENT_REPO:-${GIT_BASE}/openstack/ironic-python-agent.git}
|
|
| 275 |
+IRONIC_PYTHON_AGENT_BRANCH=${IRONIC_PYTHON_AGENT_BRANCH:-master}
|
|
| 276 |
+ |
|
| 277 |
+# a websockets/html5 or flash powered VNC console for vm instances |
|
| 278 |
+NOVNC_REPO=${NOVNC_REPO:-https://github.com/kanaka/noVNC.git}
|
|
| 279 |
+NOVNC_BRANCH=${NOVNC_BRANCH:-master}
|
|
| 280 |
+ |
|
| 281 |
+# ryu service |
|
| 282 |
+RYU_REPO=${RYU_REPO:-https://github.com/osrg/ryu.git}
|
|
| 283 |
+RYU_BRANCH=${RYU_BRANCH:-master}
|
|
| 284 |
+ |
|
| 285 |
+# a websockets/html5 or flash powered SPICE console for vm instances |
|
| 286 |
+SPICE_REPO=${SPICE_REPO:-http://anongit.freedesktop.org/git/spice/spice-html5.git}
|
|
| 287 |
+SPICE_BRANCH=${SPICE_BRANCH:-master}
|
|
| 288 |
+ |
|
| 289 |
+ |
|
| 290 |
+ |
|
| 265 | 291 |
# Nova hypervisor configuration. We default to libvirt with **kvm** but will |
| 266 | 292 |
# drop back to **qemu** if we are unable to load the kvm module. ``stack.sh`` can |
| 267 | 293 |
# also install an **LXC**, **OpenVZ** or **XenAPI** based system. If xenserver-core |
| 268 | 294 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,97 @@ |
| 0 |
+#!/usr/bin/env bash |
|
| 1 |
+# |
|
| 2 |
+# Licensed under the Apache License, Version 2.0 (the "License"); |
|
| 3 |
+# you may not use this file except in compliance with the License. |
|
| 4 |
+# You may obtain a copy of the License at |
|
| 5 |
+# |
|
| 6 |
+# http://www.apache.org/licenses/LICENSE-2.0 |
|
| 7 |
+# |
|
| 8 |
+# Unless required by applicable law or agreed to in writing, software |
|
| 9 |
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
|
| 10 |
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
|
| 11 |
+# License for the specific language governing permissions and limitations |
|
| 12 |
+# under the License. |
|
| 13 |
+ |
|
| 14 |
+ |
|
| 15 |
+TOP=$(cd $(dirname "$0")/.. && pwd) |
|
| 16 |
+ |
|
| 17 |
+export TOP_DIR=$TOP |
|
| 18 |
+ |
|
| 19 |
+# Import common functions |
|
| 20 |
+source $TOP/functions |
|
| 21 |
+source $TOP/stackrc |
|
| 22 |
+source $TOP/lib/tls |
|
| 23 |
+for i in $TOP/lib/*; do |
|
| 24 |
+ if [[ -f $i ]]; then |
|
| 25 |
+ source $i |
|
| 26 |
+ fi |
|
| 27 |
+done |
|
| 28 |
+ |
|
| 29 |
+ALL_LIBS="python-novaclient oslo.config pbr python-troveclient python-keystoneclient taskflow pycadf python-glanceclient python-ironicclient tempest-lib oslo.messaging oslo.log cliff python-heatclient stevedore python-cinderclient oslo.db oslo.vmware keystonemiddleware python-saharaclient django_openstack_auth python-openstackclient oslo.rootwrap oslo.i18n python-ceilometerclient python-swiftclient python-neutronclient" |
|
| 30 |
+ |
|
| 31 |
+# Generate the above list with |
|
| 32 |
+# echo ${!GITREPO[@]}
|
|
| 33 |
+# exit 1 |
|
| 34 |
+ |
|
| 35 |
+function check_exists {
|
|
| 36 |
+ local thing=$1 |
|
| 37 |
+ local hash=$2 |
|
| 38 |
+ local key=$3 |
|
| 39 |
+ if [[ ! -z "$VERBOSE" ]]; then |
|
| 40 |
+ echo "Checking for $hash[$key]" |
|
| 41 |
+ fi |
|
| 42 |
+ if [[ -z $thing ]]; then |
|
| 43 |
+ echo "$hash[$key] does not exit!" |
|
| 44 |
+ exit 1 |
|
| 45 |
+ else |
|
| 46 |
+ if [[ ! -z "$VERBOSE" ]]; then |
|
| 47 |
+ echo "$hash[$key] => $thing" |
|
| 48 |
+ fi |
|
| 49 |
+ fi |
|
| 50 |
+} |
|
| 51 |
+ |
|
| 52 |
+function test_all_libs_upto_date {
|
|
| 53 |
+ # this is all the magics |
|
| 54 |
+ local found_libs=${!GITREPO[@]}
|
|
| 55 |
+ declare -A all_libs |
|
| 56 |
+ for lib in $ALL_LIBS; do |
|
| 57 |
+ all_libs[$lib]=1 |
|
| 58 |
+ done |
|
| 59 |
+ |
|
| 60 |
+ for lib in $found_libs; do |
|
| 61 |
+ if [[ -z ${all_libs[$lib]} ]]; then
|
|
| 62 |
+ echo "Library '$lib' not listed in unit tests, please add to ALL_LIBS" |
|
| 63 |
+ exit 1 |
|
| 64 |
+ fi |
|
| 65 |
+ |
|
| 66 |
+ done |
|
| 67 |
+ echo "test_all_libs_upto_date PASSED" |
|
| 68 |
+} |
|
| 69 |
+ |
|
| 70 |
+function test_libs_exist {
|
|
| 71 |
+ local lib="" |
|
| 72 |
+ for lib in $ALL_LIBS; do |
|
| 73 |
+ check_exists "${GITREPO[$lib]}" "GITREPO" "$lib"
|
|
| 74 |
+ check_exists "${GITBRANCH[$lib]}" "GITBRANCH" "$lib"
|
|
| 75 |
+ check_exists "${GITDIR[$lib]}" "GITDIR" "$lib"
|
|
| 76 |
+ done |
|
| 77 |
+ |
|
| 78 |
+ echo "test_libs_exist PASSED" |
|
| 79 |
+} |
|
| 80 |
+ |
|
| 81 |
+function test_branch_master {
|
|
| 82 |
+ for lib in $ALL_LIBS; do |
|
| 83 |
+ if [[ ${GITBRANCH[$lib]} != "master" ]]; then
|
|
| 84 |
+ echo "GITBRANCH for $lib not master (${GITBRANCH[$lib]})"
|
|
| 85 |
+ exit 1 |
|
| 86 |
+ fi |
|
| 87 |
+ done |
|
| 88 |
+ |
|
| 89 |
+ echo "test_branch_master PASSED" |
|
| 90 |
+} |
|
| 91 |
+ |
|
| 92 |
+set -o errexit |
|
| 93 |
+ |
|
| 94 |
+test_libs_exist |
|
| 95 |
+test_branch_master |
|
| 96 |
+test_all_libs_upto_date |