Add openEuler 22.03 LTS support

openEuler 20.03 LTS SP2 support was removed from devstack in last
few months due to its python version is too old and the CI job
always fail. And openEuler 20.03 LTS SP2 was out of maintainer in May
2022 by openEuler community.

The newest LTS version was released in March 2022 called 22.03 LTS.
This release will be maintained for at least 2 years. And the python
version is 3.9 which works well for devstack.

This Patch add the openEuler distro support back. And add the related
CI job to make sure its works well.

Change-Id: I99c99d08b4a44d3dc644bd2e56b5ae7f7ee44210
This commit is contained in:
wangxiyuan 2022-08-05 14:18:13 +08:00
parent 818d1a225d
commit 6440c6d7e6
10 changed files with 109 additions and 9 deletions

View File

@ -108,6 +108,16 @@
nodes: nodes:
- controller - controller
- nodeset:
name: devstack-single-node-openeuler-22.03
nodes:
- name: controller
label: openEuler-22-03-LTS
groups:
- name: tempest
nodes:
- controller
- nodeset: - nodeset:
name: openstack-two-node name: openstack-two-node
nodes: nodes:
@ -777,6 +787,62 @@
# Enable Neutron ML2/OVS services # Enable Neutron ML2/OVS services
q-agt: true q-agt: true
- job:
name: devstack-platform-openEuler-22.03-ovn-source
parent: tempest-full-py3
description: openEuler 22.03 LTS platform test (OVN)
nodeset: devstack-single-node-openeuler-22.03
voting: false
timeout: 9000
vars:
configure_swap_size: 4096
devstack_localrc:
# NOTE(wxy): OVN package is not supported by openEuler yet. Build it
# from source instead.
OVN_BUILD_FROM_SOURCE: True
OVN_BRANCH: "v21.06.0"
OVS_BRANCH: "a4b04276ab5934d087669ff2d191a23931335c87"
OVS_SYSCONFDIR: "/usr/local/etc/openvswitch"
- job:
name: devstack-platform-openEuler-22.03-ovs
parent: tempest-full-py3
description: openEuler 22.03 LTS platform test (OVS)
nodeset: devstack-single-node-openeuler-22.03
voting: false
timeout: 9000
vars:
configure_swap_size: 8192
devstack_localrc:
Q_AGENT: openvswitch
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
Q_ML2_TENANT_NETWORK_TYPE: vxlan
devstack_services:
# Disable OVN services
ovn-northd: false
ovn-controller: false
ovs-vswitchd: false
ovsdb-server: false
# Disable Neutron ML2/OVN services
q-ovn-metadata-agent: false
# Enable Neutron ML2/OVS services
q-agt: true
q-dhcp: true
q-l3: true
q-meta: true
q-metering: true
group-vars:
subnode:
devstack_services:
# Disable OVN services
ovn-controller: false
ovs-vswitchd: false
ovsdb-server: false
# Disable Neutron ML2/OVN services
q-ovn-metadata-agent: false
# Enable Neutron ML2/OVS services
q-agt: true
- job: - job:
name: devstack-no-tls-proxy name: devstack-no-tls-proxy
parent: tempest-full-py3 parent: tempest-full-py3
@ -885,6 +951,8 @@
- devstack-platform-ubuntu-focal - devstack-platform-ubuntu-focal
- devstack-platform-ubuntu-jammy-ovn-source - devstack-platform-ubuntu-jammy-ovn-source
- devstack-platform-ubuntu-jammy-ovs - devstack-platform-ubuntu-jammy-ovs
- devstack-platform-openEuler-22.03-ovn-source
- devstack-platform-openEuler-22.03-ovs
- devstack-multinode - devstack-multinode
- devstack-unit-tests - devstack-unit-tests
- openstack-tox-bashate - openstack-tox-bashate
@ -1017,3 +1085,7 @@
periodic: periodic:
jobs: jobs:
- devstack-no-tls-proxy - devstack-no-tls-proxy
periodic-weekly:
jobs:
- devstack-platform-openEuler-22.03-ovn-source
- devstack-platform-openEuler-22.03-ovs

View File

@ -38,7 +38,8 @@ Install Linux
Start with a clean and minimal install of a Linux system. DevStack Start with a clean and minimal install of a Linux system. DevStack
attempts to support the two latest LTS releases of Ubuntu, the attempts to support the two latest LTS releases of Ubuntu, the
latest/current Fedora version, CentOS/RHEL/Rocky Linux 9 and OpenSUSE. latest/current Fedora version, CentOS/RHEL/Rocky Linux 9, OpenSUSE and
openEuler.
If you do not have a preference, Ubuntu 22.04 (Jammy) is the If you do not have a preference, Ubuntu 22.04 (Jammy) is the
most tested, and will probably go the smoothest. most tested, and will probably go the smoothest.

View File

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

View File

@ -26,9 +26,9 @@ pkgconfig
postgresql-devel # psycopg2 postgresql-devel # psycopg2
psmisc psmisc
python3-devel python3-devel
python3-pip python3-pip # not:openEuler-22.03
python3-systemd python3-systemd
redhat-rpm-config # missing dep for gcc hardening flags, see rhbz#1217376 redhat-rpm-config # not:openEuler-22.03 missing dep for gcc hardening flags, see rhbz#1217376
tar tar
tcpdump tcpdump
unzip unzip

View File

@ -4,7 +4,7 @@ ebtables
genisoimage # not:rhel9 required for config_drive genisoimage # not:rhel9 required for config_drive
iptables iptables
iputils iputils
kernel-modules kernel-modules # not:openEuler-22.03
kpartx kpartx
parted parted
polkit polkit

View File

@ -399,7 +399,7 @@ function _ensure_lsb_release {
elif [[ -x $(command -v zypper 2>/dev/null) ]]; then elif [[ -x $(command -v zypper 2>/dev/null) ]]; then
sudo zypper -n install lsb-release sudo zypper -n install lsb-release
elif [[ -x $(command -v dnf 2>/dev/null) ]]; then elif [[ -x $(command -v dnf 2>/dev/null) ]]; then
sudo dnf install -y redhat-lsb-core sudo dnf install -y redhat-lsb-core || sudo dnf install -y openeuler-lsb
else else
die $LINENO "Unable to find or auto-install lsb_release" die $LINENO "Unable to find or auto-install lsb_release"
fi fi
@ -474,6 +474,8 @@ function GetDistro {
# Drop the . release as we assume it's compatible # Drop the . release as we assume it's compatible
# XXX re-evaluate when we get RHEL10 # XXX re-evaluate when we get RHEL10
DISTRO="rhel${os_RELEASE::1}" DISTRO="rhel${os_RELEASE::1}"
elif [[ "$os_VENDOR" =~ (openEuler) ]]; then
DISTRO="openEuler-$os_RELEASE"
else else
# We can't make a good choice here. Setting a sensible 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 # is part of the problem, but not the major issue -- we really
@ -525,6 +527,7 @@ function is_fedora {
fi fi
[ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || \ [ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || \
[ "$os_VENDOR" = "openEuler" ] || \
[ "$os_VENDOR" = "RedHatEnterpriseServer" ] || \ [ "$os_VENDOR" = "RedHatEnterpriseServer" ] || \
[ "$os_VENDOR" = "RedHatEnterprise" ] || \ [ "$os_VENDOR" = "RedHatEnterprise" ] || \
[ "$os_VENDOR" = "Rocky" ] || \ [ "$os_VENDOR" = "Rocky" ] || \
@ -575,6 +578,14 @@ function is_ubuntu {
[ "$os_PACKAGE" = "deb" ] [ "$os_PACKAGE" = "deb" ]
} }
# Determine if current distribution is an openEuler distribution
# is_openeuler
function is_openeuler {
if [[ -z "$os_PACKAGE" ]]; then
GetOSVersion
fi
[ "$os_VENDOR" = "openEuler" ]
}
# Git Functions # Git Functions
# ============= # =============

View File

@ -95,7 +95,7 @@ function install_apache_uwsgi {
# didn't fix Python 3.10 compatibility before release. Should be # didn't fix Python 3.10 compatibility before release. Should be
# fixed in uwsgi 4.9.0; can remove this when packages available # fixed in uwsgi 4.9.0; can remove this when packages available
# or we drop this release # or we drop this release
elif is_fedora && ! [[ $DISTRO =~ f36 ]]; then elif is_fedora && ! is_openeuler && ! [[ $DISTRO =~ f36 ]]; then
# Note httpd comes with mod_proxy_uwsgi and it is loaded by # Note httpd comes with mod_proxy_uwsgi and it is loaded by
# default; the mod_proxy_uwsgi package actually conflicts now. # default; the mod_proxy_uwsgi package actually conflicts now.
# See: # See:

View File

@ -82,11 +82,17 @@ function install_libvirt {
sudo dnf copr enable -y @virtmaint-sig/virt-preview sudo dnf copr enable -y @virtmaint-sig/virt-preview
fi fi
if is_openeuler; then
qemu_package=qemu
else
qemu_package=qemu-kvm
fi
# Note that in CentOS/RHEL this needs to come from the RDO # Note that in CentOS/RHEL this needs to come from the RDO
# repositories (qemu-kvm-ev ... which provides this package) # repositories (qemu-kvm-ev ... which provides this package)
# as the base system version is too old. We should have # as the base system version is too old. We should have
# pre-installed these # pre-installed these
install_package qemu-kvm install_package $qemu_package
install_package libvirt libvirt-devel python3-libvirt install_package libvirt libvirt-devel python3-libvirt
if is_arch "aarch64"; then if is_arch "aarch64"; then

View File

@ -64,6 +64,7 @@
'Debian': '/etc/apache2/sites-enabled/' 'Debian': '/etc/apache2/sites-enabled/'
'Suse': '/etc/apache2/conf.d/' 'Suse': '/etc/apache2/conf.d/'
'RedHat': '/etc/httpd/conf.d/' 'RedHat': '/etc/httpd/conf.d/'
'openEuler': '/etc/httpd/conf.d/'
- name: Discover configurations - name: Discover configurations
find: find:

View File

@ -229,7 +229,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|jammy|f36|opensuse-15.2|opensuse-tumbleweed|rhel8|rhel9" SUPPORTED_DISTROS="bullseye|focal|jammy|f36|opensuse-15.2|opensuse-tumbleweed|rhel8|rhel9|openEuler-22.03"
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"
@ -394,6 +394,15 @@ elif [[ $DISTRO == "rhel9" ]]; then
sudo dnf config-manager --set-enabled crb sudo dnf config-manager --set-enabled crb
# rabbitmq and other packages are provided by RDO repositories. # rabbitmq and other packages are provided by RDO repositories.
_install_rdo _install_rdo
elif [[ $DISTRO == "openEuler-22.03" ]]; then
# There are some problem in openEuler. We should fix it first. Some required
# package/action runs before fixup script. So we can't fix there.
#
# 1. the hostname package is not installed by default
# 2. Some necessary packages are in openstack repo, for example liberasurecode-devel
# 3. python3-pip can be uninstalled by `get_pip.py` automaticly.
install_package hostname openstack-release-wallaby
uninstall_package python3-pip
fi fi
# Ensure python is installed # Ensure python is installed