Support CentOS Stream 9

This patch includes changes required to run devstack on CentOS Stream 9
which has been already published in official repos by CentOS team [1]:

- Add RDO deps repository for CS9.
- remove xinetd package from installation for swift. Note that
  rsync-daemon is installed which should work fine.
- Replace genisoimage by xorriso in CS9.
- Use /etc/os-release to identify the distro in CS9 as it doesn't
  provide lsb_release command.
- Use pip from rpm package instead of from get-pip.py as done in Fedora.
- Add non-voting job devstack-platform-centos-9-stream to the check
  pipeline.

Change-Id: Ic67cddabd5069211dc0611994b8b8360bcd61bef
This commit is contained in:
Alfredo Moralejo 2021-11-16 15:13:03 +01:00
parent f9a896c6e6
commit 5ea4c3c18c
9 changed files with 58 additions and 19 deletions

View File

@ -66,6 +66,16 @@
nodes: nodes:
- controller - controller
- nodeset:
name: devstack-single-node-centos-9-stream
nodes:
- name: controller
label: centos-9-stream
groups:
- name: tempest
nodes:
- controller
- nodeset: - nodeset:
name: devstack-single-node-opensuse-15 name: devstack-single-node-opensuse-15
nodes: nodes:
@ -622,6 +632,16 @@
vars: vars:
configure_swap_size: 4096 configure_swap_size: 4096
- job:
name: devstack-platform-centos-9-stream
parent: tempest-full-py3
description: CentOS 9 Stream platform test
nodeset: devstack-single-node-centos-9-stream
voting: false
timeout: 9000
vars:
configure_swap_size: 4096
- job: - job:
name: devstack-platform-debian-bullseye name: devstack-platform-debian-bullseye
parent: tempest-full-py3 parent: tempest-full-py3
@ -766,6 +786,7 @@
- devstack-enforce-scope - devstack-enforce-scope
- devstack-platform-fedora-latest - devstack-platform-fedora-latest
- devstack-platform-centos-8-stream - devstack-platform-centos-8-stream
- devstack-platform-centos-9-stream
- devstack-platform-debian-bullseye - devstack-platform-debian-bullseye
- devstack-multinode - devstack-multinode
- devstack-unit-tests - devstack-unit-tests

View File

@ -1,3 +1,3 @@
ceph # NOPRIME ceph # NOPRIME
redhat-lsb-core redhat-lsb-core # not:rhel9
xfsprogs xfsprogs

View File

@ -1,9 +1,10 @@
cryptsetup cryptsetup
dosfstools dosfstools
genisoimage genisoimage # not:rhel9
iscsi-initiator-utils iscsi-initiator-utils
libosinfo libosinfo
lvm2 lvm2
sg3_utils sg3_utils
# Stuff for diablo volumes # Stuff for diablo volumes
sysfsutils sysfsutils
xorriso # not:rhel8

View File

@ -3,7 +3,7 @@ curl
dnsmasq # for q-dhcp dnsmasq # for q-dhcp
dnsmasq-utils # for dhcp_release dnsmasq-utils # for dhcp_release
ebtables ebtables
genisoimage # required for config_drive genisoimage # not:rhel9 required for config_drive
iptables iptables
iputils iputils
kernel-modules kernel-modules
@ -13,3 +13,4 @@ polkit
rabbitmq-server # NOPRIME rabbitmq-server # NOPRIME
sqlite sqlite
sudo sudo
xorriso # not:rhel8

View File

@ -4,4 +4,4 @@ memcached
rsync-daemon rsync-daemon
sqlite sqlite
xfsprogs xfsprogs
xinetd # not:f34 xinetd # not:f34,rhel9

View File

@ -368,12 +368,19 @@ function _ensure_lsb_release {
# - os_VENDOR # - os_VENDOR
# - os_PACKAGE # - os_PACKAGE
function GetOSVersion { function GetOSVersion {
# We only support distros that provide a sane lsb_release # CentOS Stream 9 does not provide lsb_release
_ensure_lsb_release source /etc/os-release
if [[ "${ID}${VERSION}" == "centos9" ]]; then
os_RELEASE=${VERSION_ID}
os_CODENAME="n/a"
os_VENDOR=$(echo $NAME | tr -d '[:space:]')
else
_ensure_lsb_release
os_RELEASE=$(lsb_release -r -s) os_RELEASE=$(lsb_release -r -s)
os_CODENAME=$(lsb_release -c -s) os_CODENAME=$(lsb_release -c -s)
os_VENDOR=$(lsb_release -i -s) os_VENDOR=$(lsb_release -i -s)
fi
if [[ $os_VENDOR =~ (Debian|Ubuntu|LinuxMint) ]]; then if [[ $os_VENDOR =~ (Debian|Ubuntu|LinuxMint) ]]; then
os_PACKAGE="deb" os_PACKAGE="deb"

View File

@ -479,7 +479,8 @@ function create_nova_conf {
fi fi
# nova defaults to genisoimage but only mkisofs is available for 15.0+ # nova defaults to genisoimage but only mkisofs is available for 15.0+
if is_suse; then # rhel provides mkisofs symlink to genisoimage or xorriso appropiately
if is_suse || is_fedora; then
iniset $NOVA_CONF DEFAULT mkisofs_cmd /usr/bin/mkisofs iniset $NOVA_CONF DEFAULT mkisofs_cmd /usr/bin/mkisofs
fi fi

View File

@ -227,7 +227,7 @@ write_devstack_version
# Warn users who aren't on an explicitly supported distro, but allow them to # Warn users who aren't on an explicitly supported distro, but allow them to
# override check and attempt installation with ``FORCE=yes ./stack`` # override check and attempt installation with ``FORCE=yes ./stack``
SUPPORTED_DISTROS="bullseye|focal|f34|opensuse-15.2|opensuse-tumbleweed|rhel8" SUPPORTED_DISTROS="bullseye|focal|f34|opensuse-15.2|opensuse-tumbleweed|rhel8|rhel9"
if [[ ! ${DISTRO} =~ $SUPPORTED_DISTROS ]]; then if [[ ! ${DISTRO} =~ $SUPPORTED_DISTROS ]]; then
echo "WARNING: this script has not been tested on $DISTRO" echo "WARNING: this script has not been tested on $DISTRO"
@ -300,13 +300,17 @@ function _install_epel {
} }
function _install_rdo { function _install_rdo {
if [[ "$TARGET_BRANCH" == "master" ]]; then if [[ $DISTRO == "rhel8" ]]; then
# rdo-release.el8.rpm points to latest RDO release, use that for master if [[ "$TARGET_BRANCH" == "master" ]]; then
sudo dnf -y install https://rdoproject.org/repos/rdo-release.el8.rpm # rdo-release.el8.rpm points to latest RDO release, use that for master
else sudo dnf -y install https://rdoproject.org/repos/rdo-release.el8.rpm
# For stable branches use corresponding release rpm else
rdo_release=$(echo $TARGET_BRANCH | sed "s|stable/||g") # For stable branches use corresponding release rpm
sudo dnf -y install https://rdoproject.org/repos/openstack-${rdo_release}/rdo-release-${rdo_release}.el8.rpm rdo_release=$(echo $TARGET_BRANCH | sed "s|stable/||g")
sudo dnf -y install https://rdoproject.org/repos/openstack-${rdo_release}/rdo-release-${rdo_release}.el8.rpm
fi
elif [[ $DISTRO == "rhel9" ]]; then
sudo curl -L -o /etc/yum.repos.d/delorean-deps.repo http://trunk.rdoproject.org/centos9-master/delorean-deps.repo
fi fi
sudo dnf -y update sudo dnf -y update
} }
@ -385,6 +389,10 @@ if [[ $DISTRO == "rhel8" ]]; then
# RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1154272 # RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1154272
# Patch: https://github.com/rpm-software-management/dnf/pull/1448 # Patch: https://github.com/rpm-software-management/dnf/pull/1448
echo "[]" | sudo tee /var/cache/dnf/expired_repos.json echo "[]" | sudo tee /var/cache/dnf/expired_repos.json
elif [[ $DISTRO == "rhel9" ]]; then
sudo dnf config-manager --set-enabled crb
# rabbitmq and other packages are provided by RDO repositories.
_install_rdo
fi fi
# Ensure python is installed # Ensure python is installed

View File

@ -118,7 +118,7 @@ if [[ -n $PYPI_ALTERNATIVE_URL ]]; then
configure_pypi_alternative_url configure_pypi_alternative_url
fi fi
if is_fedora && [[ ${DISTRO} == f* ]]; then if is_fedora && [[ ${DISTRO} == f* || ${DISTRO} == rhel9 ]]; then
# get-pip.py will not install over the python3-pip package in # get-pip.py will not install over the python3-pip package in
# Fedora 34 any more. # Fedora 34 any more.
# https://bugzilla.redhat.com/show_bug.cgi?id=1988935 # https://bugzilla.redhat.com/show_bug.cgi?id=1988935