Merge "Set the Swift max_file_size to 1/2 the loopback"
diff --git a/doc/source/guides/neutron.rst b/doc/source/guides/neutron.rst
index c8b5c44..cac7bb0 100644
--- a/doc/source/guides/neutron.rst
+++ b/doc/source/guides/neutron.rst
@@ -546,6 +546,7 @@
physical network to bridge name associations with the following syntax:
::
+
OVS_BRIDGE_MAPPINGS=net1name:bridge1name,net2name:bridge2name,<...>
Also, ``OVS_BRIDGE_MAPPINGS`` has precedence over ``PHYSICAL_NETWORK`` and
diff --git a/doc/source/plugin-registry.rst b/doc/source/plugin-registry.rst
index 29b743f..f31db51 100644
--- a/doc/source/plugin-registry.rst
+++ b/doc/source/plugin-registry.rst
@@ -192,31 +192,3 @@
+----------------------------+-------------------------------------------------------------------------+
|zaqar |git://git.openstack.org/openstack/zaqar |
+----------------------------+-------------------------------------------------------------------------+
-
-Drivers
-=======
-
-+--------------------+-------------------------------------------------+------------------+
-|Plugin Name |URL |Comments |
-+--------------------+-------------------------------------------------+------------------+
-|dragonflow |git://git.openstack.org/openstack/dragonflow |[d1]_ |
-+--------------------+-------------------------------------------------+------------------+
-|odl |git://git.openstack.org/openstack/networking-odl |[d2]_ |
-+--------------------+-------------------------------------------------+------------------+
-
-.. [d1] demonstrates example of installing 3rd party SDN controller
-.. [d2] demonstrates a pretty advanced set of modes that that allow
- one to run OpenDayLight either from a pre-existing install, or
- also from source
-
-Alternate Configs
-=================
-
-+-------------+------------------------------------------------------------+------------+
-| Plugin Name | URL | Comments |
-| | | |
-+-------------+------------------------------------------------------------+------------+
-|glusterfs |git://git.openstack.org/openstack/devstack-plugin-glusterfs | |
-+-------------+------------------------------------------------------------+------------+
-| | | |
-+-------------+------------------------------------------------------------+------------+
diff --git a/exercises/euca.sh b/exercises/euca.sh
index c2957e2..60e7d8c 100755
--- a/exercises/euca.sh
+++ b/exercises/euca.sh
@@ -17,7 +17,6 @@
# an error. It is also useful for following allowing as the install occurs.
set -o xtrace
-
# Settings
# ========
@@ -89,7 +88,8 @@
VOLUME_ZONE=`euca-describe-availability-zones | head -n1 | cut -f2`
die_if_not_set $LINENO VOLUME_ZONE "Failure to find zone for volume"
- VOLUME=`euca-create-volume -s 1 -z $VOLUME_ZONE | cut -f2`
+ VOLUME=`euca-create-volume -s 1 -z $VOLUME_ZONE` || die $LINENO "Failure to create volume"
+ VOLUME=`echo "$VOLUME" | cut -f2`
die_if_not_set $LINENO VOLUME "Failure to create volume"
# Test that volume has been created
diff --git a/functions-common b/functions-common
index 2c498a0..0b564cd 100644
--- a/functions-common
+++ b/functions-common
@@ -312,20 +312,20 @@
# user if not available. Note can't use generic install_package*
# because they depend on this!
function _ensure_lsb_release {
- if [[ -x $(which lsb_release 2>/dev/null) ]]; then
+ if [[ -x $(command -v lsb_release 2>/dev/null) ]]; then
return
fi
- if [[ -x $(which apt-get 2>/dev/null) ]]; then
+ if [[ -x $(command -v apt-get 2>/dev/null) ]]; then
sudo apt-get install -y lsb-release
- elif [[ -x $(which zypper 2>/dev/null) ]]; then
+ elif [[ -x $(command -v zypper 2>/dev/null) ]]; then
# XXX: old code paths seem to have assumed SUSE platforms also
# had "yum". Keep this ordered above yum so we don't try to
# install the rh package. suse calls it just "lsb"
sudo zypper -n install lsb
- elif [[ -x $(which dnf 2>/dev/null) ]]; then
+ elif [[ -x $(command -v dnf 2>/dev/null) ]]; then
sudo dnf install -y redhat-lsb-core
- elif [[ -x $(which yum 2>/dev/null) ]]; then
+ elif [[ -x $(command -v yum 2>/dev/null) ]]; then
# all rh patforms (fedora, centos, rhel) have this pkg
sudo yum install -y redhat-lsb-core
else
@@ -380,7 +380,8 @@
DISTRO="sle${os_RELEASE%.*}"
elif [[ "$os_VENDOR" =~ (Red.*Hat) || \
"$os_VENDOR" =~ (CentOS) || \
- "$os_VENDOR" =~ (OracleLinux) ]]; then
+ "$os_VENDOR" =~ (OracleLinux) || \
+ "$os_VENDOR" =~ (Virtuozzo) ]]; then
# Drop the . release as we assume it's compatible
# XXX re-evaluate when we get RHEL10
DISTRO="rhel${os_RELEASE::1}"
@@ -389,7 +390,26 @@
elif [[ "$os_VENDOR" =~ (kvmibm) ]]; then
DISTRO="${os_VENDOR}${os_RELEASE::1}"
else
- die $LINENO "Unable to determine DISTRO"
+ # We can't make a good choice here. Setting a sensible DISTRO
+ # is part of the problem, but not the major issue -- we really
+ # only use DISTRO in the code as a fine-filter.
+ #
+ # The bigger problem is categorising the system into one of
+ # our two big categories as Ubuntu/Debian-ish or
+ # Fedora/CentOS-ish.
+ #
+ # The setting of os_PACKAGE above is only set to "deb" based
+ # on a hard-coded list of vendor names ... thus we will
+ # default to thinking unknown distros are RPM based
+ # (ie. is_ubuntu does not match). But the platform will then
+ # also not match in is_fedora, because that also has a list of
+ # names.
+ #
+ # So, if you are reading this, getting your distro supported
+ # is really about making sure it matches correctly in these
+ # functions. Then you can choose a sensible way to construct
+ # DISTRO based on your distros release approach.
+ die $LINENO "Unable to determine DISTRO, can not continue."
fi
typeset -xr DISTRO
}
@@ -421,7 +441,7 @@
[ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || \
[ "$os_VENDOR" = "CentOS" ] || [ "$os_VENDOR" = "OracleLinux" ] || \
- [ "$os_VENDOR" = "CloudLinux" ] || [ "$os_VENDOR" = "kvmibm" ]
+ [ "$os_VENDOR" = "Virtuozzo" ] || [ "$os_VENDOR" = "kvmibm" ]
}
@@ -1286,7 +1306,7 @@
elif is_fedora; then
sudo ${YUM:-yum} remove -y "$@" ||:
elif is_suse; then
- sudo zypper rm "$@"
+ sudo zypper rm "$@" ||:
else
exit_distro_not_supported "uninstalling packages"
fi
@@ -1304,15 +1324,16 @@
# Warning: this would not work if yum output message
# have been translated to another language
- parse_yum_result='\
- BEGIN { result=0 }\
- /^YUM_FAILED/ { exit $2 }\
- /^No package/ { result=1 }\
- //{ print }\
+ parse_yum_result=' \
+ BEGIN { result=0 } \
+ /^YUM_FAILED/ { exit $2 } \
+ /^No package/ { result=1 } \
+ /^Failed:/ { result=1 } \
+ //{ print } \
END { exit result }'
# The manual check for missing packages is because yum -y assumes
- # missing packages are OK.
+ # missing or failed packages are OK.
# See https://bugzilla.redhat.com/show_bug.cgi?id=965567
(sudo_with_proxies "${YUM:-yum}" install -y "$@" 2>&1 || echo YUM_FAILED $?) \
| awk "$parse_yum_result"
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index 852bac4..14425a5 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -47,7 +47,7 @@
}
function configure_database_postgresql {
- local pg_conf pg_dir pg_hba root_roles
+ local pg_conf pg_dir pg_hba root_roles version
echo_summary "Configuring and starting PostgreSQL"
if is_fedora; then
pg_hba=/var/lib/pgsql/data/pg_hba.conf
@@ -56,6 +56,13 @@
sudo postgresql-setup initdb
fi
elif is_ubuntu; then
+ version=`psql --version | cut -d ' ' -f3 | cut -d. -f1-2`
+ if vercmp $version '>=' 9.3; then
+ if [ -z "`pg_lsclusters -h`" ]; then
+ echo 'No PostgreSQL clusters exist; will create one'
+ sudo pg_createcluster $version main --start
+ fi
+ fi
pg_dir=`find /etc/postgresql -name pg_hba.conf|xargs dirname`
pg_hba=$pg_dir/pg_hba.conf
pg_conf=$pg_dir/postgresql.conf
diff --git a/lib/neutron-legacy b/lib/neutron-legacy
index 7d6e881..e06a020 100644
--- a/lib/neutron-legacy
+++ b/lib/neutron-legacy
@@ -486,8 +486,7 @@
}
function create_nova_conf_neutron {
- iniset $NOVA_CONF DEFAULT network_api_class "nova.network.neutronv2.api.API"
-
+ iniset $NOVA_CONF DEFAULT use_neutron True
iniset $NOVA_CONF neutron auth_type "password"
iniset $NOVA_CONF neutron auth_url "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_AUTH_PORT/v3"
iniset $NOVA_CONF neutron username "$Q_ADMIN_USERNAME"
@@ -502,7 +501,6 @@
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver
iniset $NOVA_CONF DEFAULT firewall_driver $LIBVIRT_FIREWALL_DRIVER
- iniset $NOVA_CONF DEFAULT security_group_api neutron
fi
# optionally set options in nova_conf
diff --git a/lib/neutron_plugins/openvswitch_agent b/lib/neutron_plugins/openvswitch_agent
index 94a2689..e1c5a50 100644
--- a/lib/neutron_plugins/openvswitch_agent
+++ b/lib/neutron_plugins/openvswitch_agent
@@ -44,12 +44,6 @@
# Setup agent for tunneling
if [[ "$OVS_ENABLE_TUNNELING" == "True" ]]; then
- # Verify tunnels are supported
- # REVISIT - also check kernel module support for GRE and patch ports
- OVS_VERSION=`ovs-vsctl --version | head -n 1 | grep -E -o "[0-9]+\.[0-9]+"`
- if [ `vercmp_numbers "$OVS_VERSION" "1.4"` -lt "0" ] && ! is_service_enabled q-svc ; then
- die $LINENO "You are running OVS version $OVS_VERSION. OVS 1.4+ is required for tunneling between multiple hosts."
- fi
iniset /$Q_PLUGIN_CONF_FILE ovs local_ip $TUNNEL_ENDPOINT_IP
iniset /$Q_PLUGIN_CONF_FILE ovs tunnel_bridge $OVS_TUNNEL_BRIDGE
fi
diff --git a/lib/tempest b/lib/tempest
index 4fb3e5e..3b8a888 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -414,12 +414,15 @@
if [[ ! -z "$HEAT_CFN_IMAGE_URL" ]]; then
iniset $TEMPEST_CONFIG orchestration image_ref $(basename "${HEAT_CFN_IMAGE_URL%.*}")
fi
- # build a specialized heat flavor
- available_flavors=$(nova flavor-list)
- if [[ ! ( $available_flavors =~ 'm1.heat' ) ]]; then
- nova flavor-create m1.heat 451 512 0 1
+ # Nova might not be enabled, especially when we want to test tempest scenario/API that only create Neutron resources
+ if is_service_enabled nova; then
+ # build a specialized heat flavor
+ available_flavors=$(nova flavor-list)
+ if [[ ! ( $available_flavors =~ 'm1.heat' ) ]]; then
+ nova flavor-create m1.heat 451 512 0 1
+ fi
+ iniset $TEMPEST_CONFIG orchestration instance_type "m1.heat"
fi
- iniset $TEMPEST_CONFIG orchestration instance_type "m1.heat"
iniset $TEMPEST_CONFIG orchestration build_timeout 900
iniset $TEMPEST_CONFIG orchestration stack_owner_role "_member_"
fi
diff --git a/stackrc b/stackrc
index 7294f7b..088cfee 100644
--- a/stackrc
+++ b/stackrc
@@ -625,7 +625,7 @@
IMAGE_URLS+=",http://download.cirros-cloud.net/${CIRROS_VERSION}/cirros-${CIRROS_VERSION}-x86_64-uec.tar.gz";;
ironic)
# Ironic can do both partition and full disk images, depending on the driver
- if [[ "$IRONIC_DEPLOY_DRIVER" == "agent_ssh" ]]; then
+ if [[ -z "${IRONIC_DEPLOY_DRIVER%%agent*}" ]]; then
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-cirros-${CIRROS_VERSION}-x86_64-disk}
else
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-cirros-${CIRROS_VERSION}-x86_64-uec}
@@ -639,11 +639,17 @@
DOWNLOAD_DEFAULT_IMAGES=False
fi
-# Staging Area for New Images, have them here for at least 24hrs for nodepool
-# to cache them otherwise the failure rates in the gate are too high
+# Staging area for new images. These images are cached by a run of
+# ./tools/image_list.sh during CI image build (see
+# project-config:nodepool/elements/cache-devstack/extra-data.d/55-cache-devstack-repos).
+#
+# To avoid CI failures grabbing the images, new images should be here
+# for at least 24hrs (nodepool builds images at 14:00UTC) so the they
+# are in the cache.
PRECACHE_IMAGES=$(trueorfalse False PRECACHE_IMAGES)
if [[ "$PRECACHE_IMAGES" == "True" ]]; then
-
+ # required for trove devstack tests; see
+ # git.openstack.org/cgit/openstack/trove/tree/devstack/plugin.sh
IMAGE_URL="http://tarballs.openstack.org/trove/images/ubuntu/mysql.qcow2"
if ! [[ "$IMAGE_URLS" =~ "$IMAGE_URL" ]]; then
IMAGE_URLS+=",$IMAGE_URL"
diff --git a/tests/test_package_ordering.sh b/tests/test_package_ordering.sh
index a568abf..bfc2a19 100755
--- a/tests/test_package_ordering.sh
+++ b/tests/test_package_ordering.sh
@@ -7,6 +7,7 @@
source $TOP/tests/unittest.sh
+export LC_ALL=en_US.UTF-8
PKG_FILES=$(find $TOP/files/debs $TOP/files/rpms $TOP/files/rpms-suse -type f)
TMPDIR=$(mktemp -d)
diff --git a/tools/generate-devstack-plugins-list.sh b/tools/generate-devstack-plugins-list.sh
index 8a1f743..be3f60a 100644
--- a/tools/generate-devstack-plugins-list.sh
+++ b/tools/generate-devstack-plugins-list.sh
@@ -41,7 +41,9 @@
(
declare -A plugins
-test -r data/devstack-plugins-registry.header && cat data/devstack-plugins-registry.header
+if [[ -r data/devstack-plugins-registry.header ]]; then
+ cat data/devstack-plugins-registry.header
+fi
sorted_plugins=$(python tools/generate-devstack-plugins-list.py)
@@ -52,7 +54,9 @@
printf "+----------------------------+-------------------------------------------------------------------------+\n"
done
-test -r data/devstack-plugins-registry.footer && cat data/devstack-plugins-registry.footer
+if [[ -r data/devstack-plugins-registry.footer ]]; then
+ cat data/devstack-plugins-registry.footer
+fi
) > doc/source/plugin-registry.rst
if [[ -n ${1} ]]; then
diff --git a/tools/worlddump.py b/tools/worlddump.py
index 01f601c..72a257f 100755
--- a/tools/worlddump.py
+++ b/tools/worlddump.py
@@ -58,8 +58,8 @@
try:
subprocess.check_call(cmd, shell=True)
print
- except subprocess.CalledProcessError:
- print "*** Failed to run: %s" % cmd
+ except subprocess.CalledProcessError as e:
+ print "*** Failed to run '%(cmd)s': %(err)s" % {'cmd': cmd, 'err': e}
def _find_cmd(cmd):
diff --git a/tox.ini b/tox.ini
index ef557fb..3dfc377 100644
--- a/tox.ini
+++ b/tox.ini
@@ -12,7 +12,7 @@
# against devstack, just set BASHATE_INSTALL_PATH=/path/... to your
# modified bashate tree
deps =
- {env:BASHATE_INSTALL_PATH:bashate==0.4.0}
+ {env:BASHATE_INSTALL_PATH:bashate==0.5.0}
whitelist_externals = bash
commands = bash -c "find {toxinidir} \
-not \( -type d -name .?\* -prune \) \
@@ -22,9 +22,10 @@
-not -name \*~ \
-not -name \*.md \
-not -name stack-screenrc \
+ -not -name \*.orig \
+ -not -name \*.rej \
\( \
-name \*.sh -or \
- -name \*.orig -or \
-name \*rc -or \
-name functions\* -or \
-wholename \*/inc/\* -or \