Merge "Add possibility to not compile ovs and ovn if that's disabled"
diff --git a/.zuul.yaml b/.zuul.yaml
index d387b0d..94410b4 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -72,7 +72,7 @@
name: devstack-single-node-fedora-latest
nodes:
- name: controller
- label: fedora-31
+ label: fedora-32
groups:
- name: tempest
nodes:
@@ -391,7 +391,7 @@
description: |
Minimal devstack base job, intended for use by jobs that need
less than the normal minimum set of required-projects.
- nodeset: openstack-single-node-bionic
+ nodeset: openstack-single-node-focal
required-projects:
- opendev.org/openstack/requirements
vars:
@@ -566,7 +566,7 @@
- job:
name: devstack-multinode
parent: devstack
- nodeset: openstack-two-node-bionic
+ nodeset: openstack-two-node-focal
description: |
Simple multinode test to verify multinode functionality on devstack side.
This is not meant to be used as a parent job.
@@ -591,12 +591,10 @@
voting: false
- job:
- name: devstack-platform-focal
+ name: devstack-platform-bionic
parent: tempest-full-py3
- description: Ubuntu Focal Fossa platform test
- nodeset: openstack-single-node-focal
- vars:
- tempest_black_regex: "(tempest.api.compute.volumes.test_attach_volume.AttachVolumeMultiAttachTest.test_resize_server_with_multiattached_volume|tempest.api.compute.servers.test_server_rescue_negative.ServerRescueNegativeTestJSON|tempest.api.compute.servers.test_server_rescue.ServerStableDeviceRescueTest.test_stable_device_rescue_disk_virtio_with_volume_attached)"
+ description: Ubuntu Bionic platform test
+ nodeset: openstack-single-node-bionic
voting: false
- job:
@@ -690,7 +688,7 @@
- devstack-platform-opensuse-15
- devstack-platform-fedora-latest
- devstack-platform-centos-8
- - devstack-platform-focal
+ - devstack-platform-bionic
- devstack-multinode
- devstack-unit-tests
- openstack-tox-bashate
@@ -734,6 +732,10 @@
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
+ - nova-ceph-multistore:
+ irrelevant-files:
+ - ^.*\.rst$
+ - ^doc/.*$
# NOTE(gmann): Remove this job from devstack pipeline once it is
# migrated to zuulv3 native. This is legacy job and rely on
# devstack-gate + devstack setting so any change in devstack can
@@ -770,6 +772,10 @@
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
+ - nova-ceph-multistore:
+ irrelevant-files:
+ - ^.*\.rst$
+ - ^doc/.*$
# Please add a note on each job and conditions for the job not
# being experimental any more, so we can keep this list somewhat
# pruned.
diff --git a/lib/glance b/lib/glance
index 2118636..a848fc7 100644
--- a/lib/glance
+++ b/lib/glance
@@ -41,6 +41,16 @@
GLANCE_BIN_DIR=$(get_python_exec_prefix)
fi
+# Cinder for Glance
+USE_CINDER_FOR_GLANCE=$(trueorfalse False USE_CINDER_FOR_GLANCE)
+# GLANCE_CINDER_DEFAULT_BACKEND should be one of the values
+# from CINDER_ENABLED_BACKENDS
+GLANCE_CINDER_DEFAULT_BACKEND=${GLANCE_CINDER_DEFAULT_BACKEND:-lvmdriver-1}
+GLANCE_STORE_ROOTWRAP_BASE_DIR=/usr/local/etc/glance
+# NOTE (abhishekk): For opensuse data files are stored in different directory
+if is_opensuse; then
+ GLANCE_STORE_ROOTWRAP_BASE_DIR=/usr/etc/glance
+fi
# Glance multi-store configuration
# Boolean flag to enable multiple store configuration for glance
GLANCE_ENABLE_MULTIPLE_STORES=$(trueorfalse False GLANCE_ENABLE_MULTIPLE_STORES)
@@ -68,6 +78,7 @@
# and $DATA_DIR/glance/cheap.
GLANCE_MULTISTORE_FILE_IMAGE_DIR=${GLANCE_MULTISTORE_FILE_IMAGE_DIR:=$DATA_DIR/glance}
GLANCE_IMAGE_DIR=${GLANCE_IMAGE_DIR:=$DATA_DIR/glance/images}
+GLANCE_NFS_MOUNTPOINT=$GLANCE_IMAGE_DIR/mnt
GLANCE_LOCK_DIR=${GLANCE_LOCK_DIR:=$DATA_DIR/glance/locks}
GLANCE_STAGING_DIR=${GLANCE_MULTISTORE_FILE_IMAGE_DIR:=$DATA_DIR/os_glance_staging_store}
GLANCE_TASKS_DIR=${GLANCE_MULTISTORE_FILE_IMAGE_DIR:=$DATA_DIR/os_glance_tasks_store}
@@ -135,6 +146,122 @@
fi
}
+# Set multiple cinder store related config options for each of the cinder store
+#
+function configure_multiple_cinder_stores {
+
+ local be be_name be_type enabled_backends
+ for be in ${CINDER_ENABLED_BACKENDS//,/ }; do
+ be_type=${be%%:*}
+ be_name=${be##*:}
+ enabled_backends+="${be_name}:cinder,"
+
+ set_common_cinder_store_params $be_name
+ iniset $GLANCE_API_CONF $be_name cinder_volume_type ${be_name}
+ if [[ "$be_type" == "nfs" ]]; then
+ mkdir -p "$GLANCE_NFS_MOUNTPOINT"
+ iniset $GLANCE_API_CONF $be_name cinder_mount_point_base "$GLANCE_NFS_MOUNTPOINT"
+ fi
+ done
+ iniset $GLANCE_API_CONF DEFAULT enabled_backends ${enabled_backends::-1}
+ iniset $GLANCE_API_CONF glance_store default_backend $GLANCE_CINDER_DEFAULT_BACKEND
+}
+
+# Set common cinder store options to given config section
+#
+# Arguments:
+# config_section
+#
+function set_common_cinder_store_params {
+ local config_section="$1"
+ iniset $GLANCE_API_CONF $config_section cinder_store_auth_address $KEYSTONE_SERVICE_URI_V3
+ iniset $GLANCE_API_CONF $config_section cinder_store_user_name glance
+ iniset $GLANCE_API_CONF $config_section cinder_store_password $SERVICE_PASSWORD
+ iniset $GLANCE_API_CONF $config_section cinder_store_project_name $SERVICE_PROJECT_NAME
+}
+
+# Configure multiple file stores options for each file store
+#
+# Arguments:
+#
+function configure_multiple_file_stores {
+ local store enabled_backends
+ enabled_backends=""
+ for store in $(echo $GLANCE_MULTIPLE_FILE_STORES | tr "," "\n"); do
+ enabled_backends+="${store}:file,"
+ done
+ iniset $GLANCE_API_CONF DEFAULT enabled_backends ${enabled_backends::-1}
+
+ # Glance multiple store Store specific configs
+ iniset $GLANCE_API_CONF glance_store default_backend $GLANCE_DEFAULT_BACKEND
+ local store
+ for store in $(echo $glance_multiple_file_stores | tr "," "\n"); do
+ iniset $GLANCE_API_CONF $store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/${store}/"
+ done
+}
+
+# Set reserved stores for glance
+function configure_reserved_stores {
+ iniset $GLANCE_API_CONF os_glance_staging_store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/os_glance_staging_store/"
+ iniset $GLANCE_API_CONF os_glance_tasks_store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/os_glance_tasks_store/"
+}
+
+# Copy rootwrap file from glance_store/etc/glance to /etc/glance
+#
+# Arguments:
+# source_path Source path to copy rootwrap files from
+#
+function copy_rootwrap {
+ local source_path="$1"
+ # Make glance configuration directory if it is not exists
+ sudo install -d -o $STACK_USER $GLANCE_CONF_DIR
+ cp -r $source_path/rootwrap.* $GLANCE_CONF_DIR/
+}
+
+# Set glance_store related config options
+#
+# Arguments:
+# USE_CINDER_FOR_GLANCE
+# GLANCE_ENABLE_MULTIPLE_STORES
+#
+function configure_glance_store {
+ local use_cinder_for_glance="$1"
+ local glance_enable_multiple_stores="$2"
+ local be
+
+ if [[ "$glance_enable_multiple_stores" == "False" ]]; then
+ # Configure traditional glance_store
+ if [[ "$use_cinder_for_glance" == "True" ]]; then
+ # set common glance_store parameters
+ iniset $GLANCE_API_CONF glance_store stores "cinder,file,http"
+ iniset $GLANCE_API_CONF glance_store default_store cinder
+
+ # set cinder related store parameters
+ set_common_cinder_store_params glance_store
+ # set nfs mount_point dir
+ for be in ${CINDER_ENABLED_BACKENDS//,/ }; do
+ local be_name=${be##*:}
+ if [[ "$be_name" == "nfs" ]]; then
+ mkdir -p $GLANCE_NFS_MOUNTPOINT
+ iniset $GLANCE_API_CONF glance_store cinder_mount_point_base $GLANCE_NFS_MOUNTPOINT
+ fi
+ done
+ fi
+ # Store specific configs
+ iniset $GLANCE_API_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
+ else
+ if [[ "$use_cinder_for_glance" == "True" ]]; then
+ # Configure multiple cinder stores for glance
+ configure_multiple_cinder_stores
+ else
+ # Configure multiple file stores for glance
+ configure_multiple_file_stores
+ fi
+ # Configure reserved stores
+ configure_reserved_stores
+ fi
+}
+
# configure_glance() - Set config files, create data dirs, etc
function configure_glance {
sudo install -d -o $STACK_USER $GLANCE_CONF_DIR $GLANCE_METADEF_DIR
@@ -143,16 +270,6 @@
local dburl
dburl=`database_connection_url glance`
- # Configure multiple stores
- if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "True" ]]; then
- local store enabled_backends
- enabled_backends=""
- for store in $(echo $GLANCE_MULTIPLE_FILE_STORES | tr "," "\n"); do
- enabled_backends+="${store}:file,"
- done
- iniset $GLANCE_API_CONF DEFAULT enabled_backends ${enabled_backends::-1}
- fi
-
iniset $GLANCE_API_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
iniset $GLANCE_API_CONF database connection $dburl
iniset $GLANCE_API_CONF DEFAULT use_syslog $SYSLOG
@@ -170,21 +287,8 @@
iniset $GLANCE_API_CONF DEFAULT disk_formats "ami,ari,aki,vhd,vmdk,raw,qcow2,vdi,iso,ploop"
fi
- # Glance multiple store Store specific configs
- if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "True" ]]; then
- iniset $GLANCE_API_CONF glance_store default_backend $GLANCE_DEFAULT_BACKEND
- local store
- for store in $(echo $GLANCE_MULTIPLE_FILE_STORES | tr "," "\n"); do
- iniset $GLANCE_API_CONF $store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/${store}/"
- done
-
- # Glance configure reserved stores
- iniset $GLANCE_API_CONF os_glance_staging_store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/os_glance_staging_store/"
- iniset $GLANCE_API_CONF os_glance_tasks_store filesystem_store_datadir "${GLANCE_MULTISTORE_FILE_IMAGE_DIR}/os_glance_tasks_store/"
- else
- # Store specific configs
- iniset $GLANCE_API_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
- fi
+ # Configure glance_store
+ configure_glance_store $USE_CINDER_FOR_GLANCE $GLANCE_ENABLE_MULTIPLE_STORES
# CORS feature support - to allow calls from Horizon by default
if [ -n "$GLANCE_CORS_ALLOWED_ORIGIN" ]; then
@@ -194,24 +298,26 @@
fi
# No multiple stores for swift yet
- # Store the images in swift if enabled.
- if is_service_enabled s-proxy; then
- iniset $GLANCE_API_CONF glance_store default_store swift
- iniset $GLANCE_API_CONF glance_store swift_store_create_container_on_put True
+ if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "False" ]]; then
+ # Store the images in swift if enabled.
+ if is_service_enabled s-proxy; then
+ iniset $GLANCE_API_CONF glance_store default_store swift
+ iniset $GLANCE_API_CONF glance_store swift_store_create_container_on_put True
- iniset $GLANCE_API_CONF glance_store swift_store_config_file $GLANCE_SWIFT_STORE_CONF
- iniset $GLANCE_API_CONF glance_store default_swift_reference ref1
- iniset $GLANCE_API_CONF glance_store stores "file, http, swift"
- if is_service_enabled tls-proxy; then
- iniset $GLANCE_API_CONF glance_store swift_store_cacert $SSL_BUNDLE_FILE
+ iniset $GLANCE_API_CONF glance_store swift_store_config_file $GLANCE_SWIFT_STORE_CONF
+ iniset $GLANCE_API_CONF glance_store default_swift_reference ref1
+ iniset $GLANCE_API_CONF glance_store stores "file, http, swift"
+ if is_service_enabled tls-proxy; then
+ iniset $GLANCE_API_CONF glance_store swift_store_cacert $SSL_BUNDLE_FILE
+ fi
+ iniset $GLANCE_API_CONF DEFAULT graceful_shutdown_timeout "$SERVICE_GRACEFUL_SHUTDOWN_TIMEOUT"
+
+ iniset $GLANCE_SWIFT_STORE_CONF ref1 user $SERVICE_PROJECT_NAME:glance-swift
+
+ iniset $GLANCE_SWIFT_STORE_CONF ref1 key $SERVICE_PASSWORD
+ iniset $GLANCE_SWIFT_STORE_CONF ref1 auth_address $KEYSTONE_SERVICE_URI/v3
+ iniset $GLANCE_SWIFT_STORE_CONF ref1 auth_version 3
fi
- iniset $GLANCE_API_CONF DEFAULT graceful_shutdown_timeout "$SERVICE_GRACEFUL_SHUTDOWN_TIMEOUT"
-
- iniset $GLANCE_SWIFT_STORE_CONF ref1 user $SERVICE_PROJECT_NAME:glance-swift
-
- iniset $GLANCE_SWIFT_STORE_CONF ref1 key $SERVICE_PASSWORD
- iniset $GLANCE_SWIFT_STORE_CONF ref1 auth_address $KEYSTONE_SERVICE_URI/v3
- iniset $GLANCE_SWIFT_STORE_CONF ref1 auth_version 3
fi
# We need to tell glance what it's public endpoint is so that the version
@@ -342,9 +448,11 @@
if use_library_from_git "glance_store"; then
git_clone_by_name "glance_store"
setup_dev_lib "glance_store" $(join_extras "${glance_store_extras[@]}")
+ copy_rootwrap ${DEST}/glance_store/etc/glance
else
# we still need to pass extras
pip_install_gr_extras glance-store $(join_extras "${glance_store_extras[@]}")
+ copy_rootwrap $GLANCE_STORE_ROOTWRAP_BASE_DIR
fi
git_clone $GLANCE_REPO $GLANCE_DIR $GLANCE_BRANCH
diff --git a/lib/lvm b/lib/lvm
index 92265f2..b826c1b 100644
--- a/lib/lvm
+++ b/lib/lvm
@@ -124,12 +124,6 @@
local vg=$1
local size=$2
- # Start the lvmetad on f30 (dropped from f31) or SUSE
- if [[ $DISTRO =~ f30 ]] || is_suse; then
- # services is not started by default
- start_service lvm2-lvmetad
- fi
-
# Start the tgtd service on Fedora and SUSE if tgtadm is used
if is_fedora || is_suse && [[ "$CINDER_ISCSI_HELPER" = "tgtadm" ]]; then
start_service tgtd
diff --git a/lib/nova b/lib/nova
index c1354e7..9d7bbd8 100644
--- a/lib/nova
+++ b/lib/nova
@@ -293,8 +293,8 @@
fi
fi
- if is_fedora && [[ $DISTRO =~ f3[0-1] ]]; then
- # For f30 and f31 use the rebased 2.1.0 version of the package.
+ if is_fedora && [[ $DISTRO =~ f31] ]]; then
+ # For f31 use the rebased 2.1.0 version of the package.
sudo dnf copr enable -y lyarwood/iscsi-initiator-utils
sudo dnf update -y
fi
diff --git a/lib/tempest b/lib/tempest
index 125749b..9f2ec30 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -336,6 +336,10 @@
# so remove this once Tempest no longer supports Pike.
iniset $TEMPEST_CONFIG identity-feature-enabled application_credentials True
+ # In Train and later, access rules for application credentials are enabled
+ # by default so remove this once Tempest no longer supports Stein.
+ iniset $TEMPEST_CONFIG identity-feature-enabled access_rules True
+
# Image
# We want to be able to override this variable in the gate to avoid
# doing an external HTTP fetch for this test.
diff --git a/stack.sh b/stack.sh
index ba9da63..3b2a331 100755
--- a/stack.sh
+++ b/stack.sh
@@ -221,7 +221,7 @@
# 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} =~ (bionic|focal|f30|f31|opensuse-15.0|opensuse-15.1|opensuse-tumbleweed|rhel8) ]]; then
+if [[ ! ${DISTRO} =~ (bionic|focal|f31|f32|opensuse-15.2|opensuse-tumbleweed|rhel8) ]]; 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"
@@ -1222,32 +1222,6 @@
start_swift
fi
-# Launch the Glance services
-if is_service_enabled glance; then
- echo_summary "Starting Glance"
- start_glance
-fi
-
-
-# Install Images
-# ==============
-
-# Upload an image to Glance.
-#
-# The default image is CirrOS, a small testing image which lets you login as **root**
-# CirrOS has a ``cloud-init`` analog supporting login via keypair and sending
-# scripts as userdata.
-# See https://help.ubuntu.com/community/CloudInit for more on ``cloud-init``
-
-# NOTE(yoctozepto): limited to node hosting the database which is the controller
-if is_service_enabled $DATABASE_BACKENDS && is_service_enabled glance; then
- echo_summary "Uploading images"
-
- for image_url in ${IMAGE_URLS//,/ }; do
- upload_image $image_url
- done
-fi
-
# NOTE(lyarwood): By default use a single hardcoded fixed_key across devstack
# deployments. This ensures the keys match across nova and cinder across all
# hosts.
@@ -1315,6 +1289,40 @@
create_volume_types
fi
+# This sleep is required for cinder volume service to become active and
+# publish capabilities to cinder scheduler before creating the image-volume
+if [[ "$USE_CINDER_FOR_GLANCE" == "True" ]]; then
+ sleep 30
+fi
+
+# Launch the Glance services
+# NOTE (abhishekk): We need to start glance api service only after cinder
+# service has started as on glance startup glance-api queries cinder for
+# validating volume_type configured for cinder store of glance.
+if is_service_enabled glance; then
+ echo_summary "Starting Glance"
+ start_glance
+fi
+
+# Install Images
+# ==============
+
+# Upload an image to Glance.
+#
+# The default image is CirrOS, a small testing image which lets you login as **root**
+# CirrOS has a ``cloud-init`` analog supporting login via keypair and sending
+# scripts as userdata.
+# See https://help.ubuntu.com/community/CloudInit for more on ``cloud-init``
+
+# NOTE(yoctozepto): limited to node hosting the database which is the controller
+if is_service_enabled $DATABASE_BACKENDS && is_service_enabled glance; then
+ echo_summary "Uploading images"
+
+ for image_url in ${IMAGE_URLS//,/ }; do
+ upload_image $image_url
+ done
+fi
+
if is_service_enabled horizon; then
echo_summary "Starting Horizon"
diff --git a/tools/fixup_stuff.sh b/tools/fixup_stuff.sh
index bf31dcb..a3bda2b 100755
--- a/tools/fixup_stuff.sh
+++ b/tools/fixup_stuff.sh
@@ -73,6 +73,18 @@
# Enable universe
sudo add-apt-repository -y universe
+ if [[ -f /etc/ci/mirror_info.sh ]] ; then
+ # If we are on a nodepool provided host and it has told us about
+ # where we can find local mirrors then use that mirror.
+ source /etc/ci/mirror_info.sh
+ sudo apt-add-repository -y "deb $NODEPOOL_UCA_MIRROR bionic-updates/train main"
+ else
+ # Enable UCA:train for updated versions of QEMU and libvirt
+ sudo add-apt-repository -y cloud-archive:train
+ fi
+ REPOS_UPDATED=False
+ apt_get_update
+
# Since pip10, pip will refuse to uninstall files from packages
# that were created with distutils (rather than more modern
# setuptools). This is because it technically doesn't have a
@@ -87,12 +99,6 @@
# Python Packages
# ---------------
-# get_package_path python-package # in import notation
-function get_package_path {
- local package=$1
- echo $(python -c "import os; import $package; print(os.path.split(os.path.realpath($package.__file__))[0])")
-}
-
function fixup_fedora {
if ! is_fedora; then
return
@@ -130,32 +136,6 @@
fi
fi
- if [[ "$os_VENDOR" == "Fedora" ]] && [[ "$os_RELEASE" -ge "22" ]]; then
- # requests ships vendored version of chardet/urllib3, but on
- # fedora these are symlinked back to the primary versions to
- # avoid duplication of code on disk. This is fine when
- # maintainers keep things in sync, but since devstack takes
- # over and installs later versions via pip we can end up with
- # incompatible versions.
- #
- # The rpm package is not removed to preserve the dependent
- # packages like cloud-init; rather we remove the symlinks and
- # force a re-install of requests so the vendored versions it
- # wants are present.
- #
- # Realted issues:
- # https://bugs.launchpad.net/glance/+bug/1476770
- # https://bugzilla.redhat.com/show_bug.cgi?id=1253823
-
- base_path=$(get_package_path requests)/packages
- if [ -L $base_path/chardet -o -L $base_path/urllib3 ]; then
- sudo rm -f $base_path/{chardet,urllib3}
- # install requests with the bundled urllib3 to avoid conflicts
- pip_install --upgrade --force-reinstall requests
- fi
-
- fi
-
# Since pip10, pip will refuse to uninstall files from packages
# that were created with distutils (rather than more modern
# setuptools). This is because it technically doesn't have a
@@ -163,6 +143,13 @@
# overwriting works. So this hacks around those packages that
# have been dragged in by some other system dependency
sudo rm -rf /usr/lib64/python3*/site-packages/PyYAML-*.egg-info
+
+ # NOTE(lyarwood): Workaround a known issue on Fedora with dnsmasq >= 2.81
+ # by downgrading to 2.80 for the time being.
+ # https://bugs.launchpad.net/neutron/+bug/1896945
+ if [[ "$DISTRO" == "f32" ]] && [[ $(rpm --queryformat %{VERSION} -q dnsmasq) != "2.80" ]]; then
+ sudo dnf downgrade dnsmasq-2.80 -y
+ fi
}
function fixup_suse {