Files
devstack-plugin-ceph/devstack/plugin.sh
Dr. Jens Harbott 41b6a8c227 Revert "Temporary pin the ceph jobs nodeset to Focal"
This reverts commit 863a01b032.

Partial revert only for the pin to focal, leaves the broken other jobs
commented out.

Update paste-deploy workaround to be used always.
Add qemu-block-extra and podman deps to the debs list.
Running on the newer ceph and distro causes some quite different
performance characteristics that cause tests that used to pass to fail
more often. This includes some performance optimizations to help
reduce the memory footprint, as well as depends on changes to
tempest tests to improve the reliability of those tests by enabling
validation via SSH.

This also moves the cephadm job to be the voting/gating job as that
seems to be the clear consensus about "the future" of how we deploy
ceph for testing.

Depends-On: https://review.opendev.org/c/openstack/cinder-tempest-plugin/+/881764
Co-Authored-By: Dan Smith <dms@danplanet.com>
Change-Id: I899822fec863f43cd6c58b25cf4688c6a3ac1e9b
2023-05-03 12:06:27 -07:00

177 lines
6.7 KiB
Bash

# ceph.sh - DevStack extras script to install Ceph
if [[ "$1" == "source" ]]; then
# Initial source
if [[ "$CEPHADM_DEPLOY" = "True" ]]; then
source $TOP_DIR/lib/cephadm
else
source $TOP_DIR/lib/ceph
fi
elif [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
if [[ "$ENABLE_CEPH_RGW" = "True" ]] && (is_service_enabled swift); then
die $LINENO \
"You cannot activate both Swift and Ceph Rados Gateway, \
please disable Swift or set ENABLE_CEPH_RGW=False"
fi
if [[ "$CEPHADM_DEPLOY" = "True" ]]; then
# Set up system services
echo_summary "[cephadm] Configuring system services ceph"
pre_install_ceph
else
echo_summary "Installing Ceph"
check_os_support_ceph
if [ "$REMOTE_CEPH" = "False" ]; then
if [ "$CEPH_CONTAINERIZED" = "True" ]; then
echo_summary "Configuring and initializing Ceph"
deploy_containerized_ceph
else
install_ceph
echo_summary "Configuring Ceph"
configure_ceph
# NOTE (leseb): we do everything here
# because we need to have Ceph started before the main
# OpenStack components.
# Ceph OSD must start here otherwise we can't upload any images.
echo_summary "Initializing Ceph"
start_ceph
fi
else
install_ceph_remote
fi
fi
elif [[ "$1" == "stack" && "$2" == "install" ]]; then
if [[ "$CEPHADM_DEPLOY" = "True" ]]; then
# Perform installation of service source
echo_summary "[cephadm] Installing ceph"
install_ceph
else
# FIXME(melwitt): This is a hack to get around a namespacing issue with
# Paste and PasteDeploy. For stable/queens, we use the Pike UCA packages
# and the Ceph packages in the Pike UCA are pulling in python-paste and
# python-pastedeploy packages. The python-pastedeploy package satisfies the
# upper-constraints but python-paste does not, so devstack pip installs a
# newer version of it, while python-pastedeploy remains. The mismatch
# between the install path of paste and paste.deploy causes Keystone to
# fail to start, with "ImportError: cannot import name deploy."
# TODO(frickler): This is needed for all branches currently.
pip_install -U --force PasteDeploy
install_package python-is-python3
fi
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
if [[ "$CEPHADM_DEPLOY" = "True" ]]; then
# Configure after the other layer 1 and 2 services have been configured
echo_summary "[cephadm] Configuring additional Ceph services"
configure_ceph
else
if is_ceph_enabled_for_service glance; then
echo_summary "Configuring Glance for Ceph"
configure_ceph_glance
fi
if is_ceph_enabled_for_service nova; then
echo_summary "Configuring Nova for Ceph"
configure_ceph_nova
fi
if is_ceph_enabled_for_service cinder; then
echo_summary "Configuring Cinder for Ceph"
configure_ceph_cinder
fi
if is_ceph_enabled_for_service nova; then
# NOTE (leseb): the part below is a requirement
# to attach Ceph block devices
echo_summary "Configuring libvirt secret"
import_libvirt_secret_ceph
fi
if is_ceph_enabled_for_service manila; then
echo_summary "Configuring Manila for Ceph"
configure_ceph_manila
fi
if [ "$REMOTE_CEPH" = "False" ]; then
if is_ceph_enabled_for_service glance; then
echo_summary "Configuring Glance for Ceph"
configure_ceph_embedded_glance
fi
if is_ceph_enabled_for_service nova; then
echo_summary "Configuring Nova for Ceph"
configure_ceph_embedded_nova
fi
if is_ceph_enabled_for_service cinder; then
echo_summary "Configuring Cinder for Ceph"
configure_ceph_embedded_cinder
fi
if is_ceph_enabled_for_service manila; then
echo_summary "Configuring Manila for Ceph"
configure_ceph_embedded_manila
fi
if [ "$ENABLE_CEPH_RGW" = "True" ]; then
echo_summary "Configuring Rados Gateway with Keystone for Swift"
configure_ceph_embedded_rgw
if [ "$CEPH_CONTAINERIZED" = "False" ]; then
start_ceph_embedded_rgw
else
_configure_ceph_rgw_container
fi
fi
fi
fi
elif [[ "$1" == "stack" && "$2" == "test-config" ]]; then
if is_service_enabled tempest; then
iniset $TEMPEST_CONFIG compute-feature-enabled swap_volume False
# Only enable shelve testing for branches which have the fix for
# nova bug 1653953.
if [[ "$TARGET_BRANCH" =~ stable/(ocata|pike) ]]; then
iniset $TEMPEST_CONFIG compute-feature-enabled shelve False
else
iniset $TEMPEST_CONFIG compute-feature-enabled shelve True
fi
# Attached volume extend support for rbd was introduced in Stein by
# I5698e451861828a8b1240d046d1610d8d37ca5a2
if [[ "$TARGET_BRANCH" =~ stable/(ocata|pike|queens|rocky) ]]; then
iniset $TEMPEST_CONFIG volume-feature-enabled extend_attached_volume False
else
iniset $TEMPEST_CONFIG volume-feature-enabled extend_attached_volume True
fi
# Volume revert to snapshot support for rbd was introduced in Ussuri by
# If8a5eb3a03e18f9043ff29f7648234c9b46376a0
if [[ "$TARGET_BRANCH" =~ stable/(ocata|pike|queens|rocky|stein|train) ]]; then
iniset $TEMPEST_CONFIG volume-feature-enabled volume_revert False
else
iniset $TEMPEST_CONFIG volume-feature-enabled volume_revert True
fi
fi
fi
if [[ "$1" == "unstack" ]]; then
if [[ "$CEPHADM_DEPLOY" = "True" ]]; then
cleanup_ceph
else
if [ "$CEPH_CONTAINERIZED" = "False" ]; then
if [ "$REMOTE_CEPH" = "True" ]; then
cleanup_ceph_remote
else
stop_ceph
cleanup_ceph_embedded
fi
else
cleanup_containerized_ceph
fi
cleanup_ceph_general
fi
fi
if [[ "$1" == "clean" ]]; then
if [[ "$CEPHADM_DEPLOY" = "True" ]]; then
cleanup_ceph
else
if [ "$REMOTE_CEPH" = "True" ]; then
cleanup_ceph_remote
else
cleanup_ceph_embedded
fi
cleanup_ceph_general
fi
fi