Merge "End support for changing cinder periodic_interval"
diff --git a/.zuul.yaml b/.zuul.yaml
index 785cf91..e782922 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -411,7 +411,6 @@
n-cond: true
n-cpu: true
n-novnc: true
- n-obj: true
n-sch: true
placement-api: true
# Neutron services
@@ -532,21 +531,21 @@
- job:
name: devstack-platform-opensuse-150
- parent: tempest-full
+ parent: tempest-full-py3
description: openSUSE 15.0 platform test
nodeset: devstack-single-node-opensuse-150
voting: false
- job:
name: devstack-platform-fedora-latest
- parent: tempest-full
+ parent: tempest-full-py3
description: Fedora latest platform test
nodeset: devstack-single-node-fedora-latest
voting: false
- job:
name: devstack-platform-xenial
- parent: tempest-full
+ parent: tempest-full-py3
description: Ubuntu Xenial platform test
nodeset: openstack-single-node-xenial
voting: false
diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst
index 022e6ba..9ca8441 100644
--- a/doc/source/configuration.rst
+++ b/doc/source/configuration.rst
@@ -627,8 +627,8 @@
Swift S3
++++++++
-If you are enabling ``swift3`` in ``ENABLED_SERVICES`` DevStack will
-install the swift3 middleware emulation. Swift will be configured to
+If you are enabling ``s3api`` in ``ENABLED_SERVICES`` DevStack will
+install the s3api middleware emulation. Swift will be configured to
act as a S3 endpoint for Keystone so effectively replacing the
``nova-objectstore``.
diff --git a/doc/source/guides/devstack-with-lbaas-v2.rst b/doc/source/guides/devstack-with-lbaas-v2.rst
index b1d88cb..db138ae 100644
--- a/doc/source/guides/devstack-with-lbaas-v2.rst
+++ b/doc/source/guides/devstack-with-lbaas-v2.rst
@@ -59,7 +59,7 @@
# Horizon - enable for the OpenStack web GUI
# ENABLED_SERVICES+=,horizon
# Nova
- ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch,n-api-meta,n-sproxy
+ ENABLED_SERVICES+=,n-api,n-crt,n-cpu,n-cond,n-sch,n-api-meta,n-sproxy
ENABLED_SERVICES+=,placement-api,placement-client
# Glance
ENABLED_SERVICES+=,g-api,g-reg
@@ -91,7 +91,7 @@
#create nova instances on private network
openstack server create --image $(openstack image list | awk '/ cirros-.*-x86_64-.* / {print $2}') --flavor 1 --nic net-id=$(openstack network list | awk '/ private / {print $2}') node1
- openstack server creeate --image $(openstack image list | awk '/ cirros-.*-x86_64-.* / {print $2}') --flavor 1 --nic net-id=$(openstack network list | awk '/ private / {print $2}') node2
+ openstack server create --image $(openstack image list | awk '/ cirros-.*-x86_64-.* / {print $2}') --flavor 1 --nic net-id=$(openstack network list | awk '/ private / {print $2}') node2
openstack server list # should show the nova instances just created
#add secgroup rules to allow ssh etc..
diff --git a/inc/python b/inc/python
index 19e1228..0e575ae 100644
--- a/inc/python
+++ b/inc/python
@@ -29,6 +29,10 @@
# get_pip_command
function get_pip_command {
local version="$1"
+ if [ -z "$version" ]; then
+ die $LINENO "pip python version is not set."
+ fi
+
# NOTE(dhellmann): I don't know if we actually get a pip3.4-python
# under any circumstances.
which pip${version} || which pip${version}-python
diff --git a/lib/glance b/lib/glance
index 65487cb..d630c9a 100644
--- a/lib/glance
+++ b/lib/glance
@@ -130,7 +130,7 @@
iniset $GLANCE_API_CONF database connection $dburl
iniset $GLANCE_API_CONF DEFAULT use_syslog $SYSLOG
iniset $GLANCE_API_CONF DEFAULT image_cache_dir $GLANCE_CACHE_DIR/
- iniset $GLANCE_API_CONF DEFAULT lock_path $GLANCE_LOCK_DIR
+ iniset $GLANCE_API_CONF oslo_concurrency lock_path $GLANCE_LOCK_DIR
iniset $GLANCE_API_CONF paste_deploy flavor keystone+cachemanagement
configure_auth_token_middleware $GLANCE_API_CONF glance $GLANCE_AUTH_CACHE_DIR/api
iniset $GLANCE_API_CONF oslo_messaging_notifications driver messagingv2
diff --git a/lib/neutron b/lib/neutron
index 1066d8e..947c491 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -117,7 +117,9 @@
# Test if any Neutron services are enabled
# is_neutron_enabled
function is_neutron_legacy_enabled {
- [[ ,${DISABLED_SERVICES} =~ ,"neutron" ]] && return 1
+ # first we need to remove all "neutron-" from DISABLED_SERVICES list
+ disabled_services_copy=$(echo $DISABLED_SERVICES | sed 's/neutron-//g')
+ [[ ,${disabled_services_copy} =~ ,"neutron" ]] && return 1
[[ ,${ENABLED_SERVICES} =~ ,"q-" ]] && return 0
return 1
}
diff --git a/lib/nova b/lib/nova
index dee798c..6ce1dcc 100644
--- a/lib/nova
+++ b/lib/nova
@@ -103,9 +103,9 @@
# should work in most cases.
SCHEDULER=${SCHEDULER:-filter_scheduler}
-# The following FILTERS contains SameHostFilter and DifferentHostFilter with
+# The following NOVA_FILTERS contains SameHostFilter and DifferentHostFilter with
# the default filters.
-FILTERS="RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,SameHostFilter,DifferentHostFilter"
+NOVA_FILTERS="RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,SameHostFilter,DifferentHostFilter"
QEMU_CONF=/etc/libvirt/qemu.conf
@@ -403,7 +403,7 @@
fi
# S3
- if is_service_enabled swift3; then
+ if is_service_enabled s3api; then
get_or_create_service "s3" "s3" "S3"
get_or_create_endpoint \
"s3" \
@@ -428,7 +428,7 @@
iniset $NOVA_CONF wsgi api_paste_config "$NOVA_API_PASTE_INI"
iniset $NOVA_CONF DEFAULT rootwrap_config "$NOVA_CONF_DIR/rootwrap.conf"
iniset $NOVA_CONF scheduler driver "$SCHEDULER"
- iniset $NOVA_CONF filter_scheduler enabled_filters "$FILTERS"
+ iniset $NOVA_CONF filter_scheduler enabled_filters "$NOVA_FILTERS"
if [[ $SCHEDULER == "filter_scheduler" ]]; then
iniset $NOVA_CONF scheduler workers "$API_WORKERS"
fi
@@ -607,8 +607,10 @@
else
for i in $(seq 1 $NOVA_NUM_CELLS); do
local conf
+ local offset
conf=$(conductor_conf $i)
- configure_console_proxies $conf
+ offset=$((i - 1))
+ configure_console_proxies $conf $offset
done
fi
}
@@ -678,10 +680,17 @@
function configure_console_proxies {
# Use the provided config file path or default to $NOVA_CONF.
local conf=${1:-$NOVA_CONF}
+ local offset=${2:-0}
+ # Stagger the offset based on the total number of possible console proxies
+ # (novnc, xvpvnc, spice, serial) so that their ports will not collide if
+ # all are enabled.
+ offset=$((offset * 4))
if is_service_enabled n-novnc || is_service_enabled n-xvnc || [ "$NOVA_VNC_ENABLED" != False ]; then
iniset $conf vnc novncproxy_host "$NOVA_SERVICE_LISTEN_ADDRESS"
+ iniset $conf vnc novncproxy_port $((6080 + offset))
iniset $conf vnc xvpvncproxy_host "$NOVA_SERVICE_LISTEN_ADDRESS"
+ iniset $conf vnc xvpvncproxy_port $((6081 + offset))
if is_nova_console_proxy_compute_tls_enabled ; then
iniset $conf vnc auth_schemes "vencrypt"
@@ -713,10 +722,12 @@
if is_service_enabled n-spice; then
iniset $conf spice html5proxy_host "$NOVA_SERVICE_LISTEN_ADDRESS"
+ iniset $conf spice html5proxy_port $((6082 + offset))
fi
if is_service_enabled n-sproxy; then
iniset $conf serial_console serialproxy_host "$NOVA_SERVICE_LISTEN_ADDRESS"
+ iniset $conf serial_console serialproxy_port $((6083 + offset))
fi
}
diff --git a/lib/nova_plugins/hypervisor-ironic b/lib/nova_plugins/hypervisor-ironic
index 49110a8..1279256 100644
--- a/lib/nova_plugins/hypervisor-ironic
+++ b/lib/nova_plugins/hypervisor-ironic
@@ -50,6 +50,7 @@
iniset $NOVA_CONF ironic project_domain_id default
iniset $NOVA_CONF ironic user_domain_id default
iniset $NOVA_CONF ironic project_name demo
+ iniset $NOVA_CONF ironic region_name $REGION_NAME
iniset $NOVA_CONF ironic api_max_retries 300
iniset $NOVA_CONF ironic api_retry_interval 5
diff --git a/lib/swift b/lib/swift
index e2ee0cb..d9a7878 100644
--- a/lib/swift
+++ b/lib/swift
@@ -49,7 +49,6 @@
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
SWIFT_SERVICE_PROTOCOL=${SWIFT_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
SWIFT_DEFAULT_BIND_PORT=${SWIFT_DEFAULT_BIND_PORT:-8080}
@@ -68,8 +67,8 @@
# Default is ``/etc/swift``.
SWIFT_CONF_DIR=${SWIFT_CONF_DIR:-/etc/swift}
-if is_service_enabled s-proxy && is_service_enabled swift3; then
- # If we are using ``swift3``, we can default the S3 port to swift instead
+if is_service_enabled s-proxy && is_service_enabled s3api; then
+ # If we are using ``s3api``, we can default the S3 port to swift instead
# of nova-objectstore
S3_SERVICE_PORT=${S3_SERVICE_PORT:-$SWIFT_DEFAULT_BIND_PORT}
fi
@@ -423,16 +422,19 @@
iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:proxy-logging reveal_sensitive_prefix ${SWIFT_LOG_TOKEN_LENGTH}
# By default Swift will be installed with Keystone and tempauth middleware
- # and add the swift3 middleware if its configured for it. The token for
+ # and add the s3api middleware if its configured for it. The token for
# tempauth would be prefixed with the reseller_prefix setting `TEMPAUTH_` the
# token for keystoneauth would have the standard reseller_prefix `AUTH_`
- if is_service_enabled swift3;then
- swift_pipeline+=" swift3 s3token "
+ if is_service_enabled s3api;then
+ swift_pipeline+=" s3api"
fi
-
if is_service_enabled keystone; then
+ if is_service_enabled s3api;then
+ swift_pipeline+=" s3token"
+ fi
swift_pipeline+=" authtoken keystoneauth"
fi
+
swift_pipeline+=" tempauth "
sed -i "/^pipeline/ { s/tempauth/${swift_pipeline} ${SWIFT_EXTRAS_MIDDLEWARE}/ ;}" ${SWIFT_CONFIG_PROXY_SERVER}
@@ -467,22 +469,6 @@
# Allow both reseller prefixes to be used with domain_remap
iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:domain_remap reseller_prefixes "AUTH, TEMPAUTH"
- if is_service_enabled swift3; then
- cat <<EOF >>${SWIFT_CONFIG_PROXY_SERVER}
-[filter:s3token]
-paste.filter_factory = keystonemiddleware.s3_token:filter_factory
-auth_uri = ${KEYSTONE_AUTH_URI}
-cafile = ${SSL_BUNDLE_FILE}
-admin_user = swift
-admin_tenant_name = ${SERVICE_PROJECT_NAME}
-admin_password = ${SERVICE_PASSWORD}
-
-[filter:swift3]
-use = egg:swift3#swift3
-location = ${REGION_NAME}
-EOF
- fi
-
cp ${SWIFT_DIR}/etc/swift.conf-sample ${SWIFT_CONF_DIR}/swift.conf
iniset ${SWIFT_CONF_DIR}/swift.conf swift-hash swift_hash_path_suffix ${SWIFT_HASH}
iniset ${SWIFT_CONF_DIR}/swift.conf swift-constraints max_header_size ${SWIFT_MAX_HEADER_SIZE}
diff --git a/lib/tempest b/lib/tempest
index a8f107a..95b138c 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -107,7 +107,7 @@
function image_size_in_gib {
local size
size=$(openstack image show $1 -c size -f value)
- echo $size | python -c "import math; print int(math.ceil(float(int(raw_input()) / 1024.0 ** 3)))"
+ echo $size | python -c "import math; import six; print(int(math.ceil(float(int(six.moves.input()) / 1024.0 ** 3))))"
}
# configure_tempest() - Set config files, create data dirs, etc
@@ -386,6 +386,11 @@
iniset $TEMPEST_CONFIG compute-feature-enabled block_migration_for_live_migration ${USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION:-False}
iniset $TEMPEST_CONFIG compute-feature-enabled live_migrate_back_and_forth ${LIVE_MIGRATE_BACK_AND_FORTH:-False}
iniset $TEMPEST_CONFIG compute-feature-enabled attach_encrypted_volume ${ATTACH_ENCRYPTED_VOLUME_AVAILABLE:-True}
+
+ if [[ -n "$NOVA_FILTERS" ]]; then
+ iniset $TEMPEST_CONFIG compute-feature-enabled scheduler_enabled_filters ${NOVA_FILTERS}
+ fi
+
if is_service_enabled n-cell; then
# Cells doesn't support shelving/unshelving
iniset $TEMPEST_CONFIG compute-feature-enabled shelve False
diff --git a/pkg/elasticsearch.sh b/pkg/elasticsearch.sh
deleted file mode 100755
index bd44153..0000000
--- a/pkg/elasticsearch.sh
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/bin/bash -xe
-
-# basic reference point for things like filecache
-#
-# TODO(sdague): once we have a few of these I imagine the download
-# step can probably be factored out to something nicer
-TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
-FILES=$TOP_DIR/files
-source $TOP_DIR/stackrc
-
-# Package source and version, all pkg files are expected to have
-# something like this, as well as a way to override them.
-ELASTICSEARCH_VERSION=${ELASTICSEARCH_VERSION:-1.7.5}
-ELASTICSEARCH_BASEURL=${ELASTICSEARCH_BASEURL:-https://download.elasticsearch.org/elasticsearch/elasticsearch}
-
-# Elastic search actual implementation
-function wget_elasticsearch {
- local file=${1}
-
- if [ ! -f ${FILES}/${file} ]; then
- wget $ELASTICSEARCH_BASEURL/${file} -O ${FILES}/${file}
- fi
-
- if [ ! -f ${FILES}/${file}.sha1.txt ]; then
- wget $ELASTICSEARCH_BASEURL/${file}.sha1.txt -O ${FILES}/${file}.sha1.txt
- fi
-
- pushd ${FILES}; sha1sum ${file} > ${file}.sha1.gen; popd
-
- if ! diff ${FILES}/${file}.sha1.gen ${FILES}/${file}.sha1.txt; then
- echo "Invalid elasticsearch download. Could not install."
- return 1
- fi
- return 0
-}
-
-function download_elasticsearch {
- if is_ubuntu; then
- wget_elasticsearch elasticsearch-${ELASTICSEARCH_VERSION}.deb
- elif is_fedora || is_suse; then
- wget_elasticsearch elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
- fi
-}
-
-function configure_elasticsearch {
- # currently a no op
- :
-}
-
-function _check_elasticsearch_ready {
- # poll elasticsearch to see if it's started
- if ! wait_for_service 120 http://localhost:9200; then
- die $LINENO "Maximum timeout reached. Could not connect to ElasticSearch"
- fi
-}
-
-function start_elasticsearch {
- if is_ubuntu; then
- sudo /etc/init.d/elasticsearch start
- _check_elasticsearch_ready
- elif is_fedora; then
- sudo /bin/systemctl start elasticsearch.service
- _check_elasticsearch_ready
- elif is_suse; then
- sudo /usr/bin/systemctl start elasticsearch.service
- _check_elasticsearch_ready
- else
- echo "Unsupported architecture...can not start elasticsearch."
- fi
-}
-
-function stop_elasticsearch {
- if is_ubuntu; then
- sudo /etc/init.d/elasticsearch stop
- elif is_fedora; then
- sudo /bin/systemctl stop elasticsearch.service
- elif is_suse ; then
- sudo /usr/bin/systemctl stop elasticsearch.service
- else
- echo "Unsupported architecture...can not stop elasticsearch."
- fi
-}
-
-function install_elasticsearch {
- pip_install_gr elasticsearch
- if is_package_installed elasticsearch; then
- echo "Note: elasticsearch was already installed."
- return
- fi
- if is_ubuntu; then
- is_package_installed default-jre-headless || install_package default-jre-headless
-
- sudo dpkg -i ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.deb
- sudo update-rc.d elasticsearch defaults 95 10
- elif is_fedora; then
- is_package_installed java-1.8.0-openjdk-headless || install_package java-1.8.0-openjdk-headless
- yum_install ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
- sudo /bin/systemctl daemon-reload
- sudo /bin/systemctl enable elasticsearch.service
- elif is_suse; then
- is_package_installed java-1_8_0-openjdk-headless || install_package java-1_8_0-openjdk-headless
- zypper_install --no-gpg-checks ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
- sudo /usr/bin/systemctl daemon-reload
- sudo /usr/bin/systemctl enable elasticsearch.service
- else
- echo "Unsupported install of elasticsearch on this architecture."
- fi
-}
-
-function uninstall_elasticsearch {
- if is_package_installed elasticsearch; then
- if is_ubuntu; then
- sudo apt-get purge elasticsearch
- elif is_fedora; then
- sudo yum remove elasticsearch
- elif is_suse; then
- sudo zypper rm elasticsearch
- else
- echo "Unsupported install of elasticsearch on this architecture."
- fi
- fi
-}
-
-# The PHASE dispatcher. All pkg files are expected to basically cargo
-# cult the case statement.
-PHASE=$1
-echo "Phase is $PHASE"
-
-case $PHASE in
- download)
- download_elasticsearch
- ;;
- install)
- install_elasticsearch
- ;;
- configure)
- configure_elasticsearch
- ;;
- start)
- start_elasticsearch
- ;;
- stop)
- stop_elasticsearch
- ;;
- uninstall)
- uninstall_elasticsearch
- ;;
-esac
diff --git a/roles/sync-devstack-data/README.rst b/roles/sync-devstack-data/README.rst
index 500e8cc..388625c 100644
--- a/roles/sync-devstack-data/README.rst
+++ b/roles/sync-devstack-data/README.rst
@@ -10,3 +10,10 @@
:default: /opt/stack
The devstack base directory.
+
+.. zuul:rolevar:: devstack_data_base_dir
+ :default: {{ devstack_base_dir }}
+
+ The devstack base directory for data/.
+ Useful for example when multiple executions of devstack (i.e. grenade)
+ share the same data directory.
diff --git a/roles/sync-devstack-data/defaults/main.yaml b/roles/sync-devstack-data/defaults/main.yaml
index fea05c8..6b5017b 100644
--- a/roles/sync-devstack-data/defaults/main.yaml
+++ b/roles/sync-devstack-data/defaults/main.yaml
@@ -1 +1,2 @@
devstack_base_dir: /opt/stack
+devstack_data_base_dir: "{{ devstack_base_dir }}"
diff --git a/roles/sync-devstack-data/tasks/main.yaml b/roles/sync-devstack-data/tasks/main.yaml
index 4600015..e62be87 100644
--- a/roles/sync-devstack-data/tasks/main.yaml
+++ b/roles/sync-devstack-data/tasks/main.yaml
@@ -1,7 +1,7 @@
- name: Ensure the data folder exists
become: true
file:
- path: "{{ devstack_base_dir }}/data"
+ path: "{{ devstack_data_base_dir }}/data"
state: directory
owner: stack
group: stack
@@ -11,7 +11,7 @@
- name: Ensure the CA folder exists
become: true
file:
- path: "{{ devstack_base_dir }}/data/CA"
+ path: "{{ devstack_data_base_dir }}/data/CA"
state: directory
owner: stack
group: stack
@@ -25,8 +25,8 @@
dest: "{{ zuul.executor.work_root }}/{{ item | basename }}"
mode: pull
with_items:
- - "{{ devstack_base_dir }}/data/ca-bundle.pem"
- - "{{ devstack_base_dir }}/data/CA"
+ - "{{ devstack_data_base_dir }}/data/ca-bundle.pem"
+ - "{{ devstack_data_base_dir }}/data/CA"
when: inventory_hostname == 'controller'
- name: Push the CA certificate
@@ -34,7 +34,7 @@
become_user: stack
synchronize:
src: "{{ zuul.executor.work_root }}/ca-bundle.pem"
- dest: "{{ devstack_base_dir }}/data/ca-bundle.pem"
+ dest: "{{ devstack_data_base_dir }}/data/ca-bundle.pem"
mode: push
when: 'inventory_hostname in groups["subnode"]|default([])'
@@ -43,6 +43,6 @@
become_user: stack
synchronize:
src: "{{ zuul.executor.work_root }}/CA/"
- dest: "{{ devstack_base_dir }}/data/"
+ dest: "{{ devstack_data_base_dir }}/data/"
mode: push
when: 'inventory_hostname in groups["subnode"]|default([])'
diff --git a/stack.sh b/stack.sh
index 4f6e5b6..fa5b43c 100755
--- a/stack.sh
+++ b/stack.sh
@@ -889,12 +889,10 @@
stack_install_service swift
configure_swift
- # swift3 middleware to provide S3 emulation to Swift
- if is_service_enabled swift3; then
+ # s3api middleware to provide S3 emulation to Swift
+ if is_service_enabled s3api; then
# Replace the nova-objectstore port by the swift port
S3_SERVICE_PORT=8080
- git_clone $SWIFT3_REPO $SWIFT3_DIR $SWIFT3_BRANCH
- setup_develop $SWIFT3_DIR
fi
fi
@@ -1442,6 +1440,12 @@
# environment is up.
echo_summary "SKIPPING Cell setup because n-cpu is not enabled. You will have to do this manually before you have a working environment."
fi
+ # Run the nova-status upgrade check command which can also be used
+ # to verify the base install. Note that this is good enough in a
+ # single node deployment, but in a multi-node setup it won't verify
+ # any subnodes - that would have to be driven from whatever tooling
+ # is deploying the subnodes, e.g. the zuul v3 devstack-multinode job.
+ $NOVA_BIN_DIR/nova-status --config-file $NOVA_CONF upgrade check
fi
# Run local script
diff --git a/stackrc b/stackrc
index 2924d39..2291e3c 100644
--- a/stackrc
+++ b/stackrc
@@ -520,10 +520,6 @@
GITREPO["keystonemiddleware"]=${KEYSTONEMIDDLEWARE_REPO:-${GIT_BASE}/openstack/keystonemiddleware.git}
GITBRANCH["keystonemiddleware"]=${KEYSTONEMIDDLEWARE_BRANCH:-$TARGET_BRANCH}
-# s3 support for swift
-SWIFT3_REPO=${SWIFT3_REPO:-${GIT_BASE}/openstack/swift3.git}
-SWIFT3_BRANCH=${SWIFT3_BRANCH:-$TARGET_BRANCH}
-
# ceilometer middleware
GITREPO["ceilometermiddleware"]=${CEILOMETERMIDDLEWARE_REPO:-${GIT_BASE}/openstack/ceilometermiddleware.git}
GITBRANCH["ceilometermiddleware"]=${CEILOMETERMIDDLEWARE_BRANCH:-$TARGET_BRANCH}