Compare commits
55 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5986c350ae | |||
| 275a84f929 | |||
| 0cf2370bc5 | |||
| 37f0673893 | |||
| de9a15adbc | |||
| b050ce8253 | |||
| 431b5c2ed5 | |||
| 5abbcc79b6 | |||
| ad6d4ac7c5 | |||
| 9794f48abb | |||
| 3530762178 | |||
| 5a47f37134 | |||
| 8d2aeb5bbf | |||
| 977539d154 | |||
| 4ed816a945 | |||
| cb891834be | |||
| 4356a64a00 | |||
| 1c064ef80a | |||
| a298dc5fa0 | |||
| a508507f1f | |||
| e0c09e5f33 | |||
| ca891ebfe7 | |||
| 4c0a573982 | |||
| 25aa75dd6b | |||
| 7908fa7e08 | |||
| f624631bfa | |||
| 89caa37288 | |||
| 0d22380971 | |||
| 41c19b2751 | |||
| c8d8915be0 | |||
| 2a5aeff28c | |||
| d86f23b153 | |||
| 8d7562e7c8 | |||
| 58163a9c82 | |||
| 381cf373ab | |||
| 13da39fc2e | |||
| 092894cefb | |||
| 09c83cf07e | |||
| 8389f9756e | |||
| 68ef16134d | |||
| f590210fd8 | |||
| 55a25a0ea4 | |||
| fe59f94632 | |||
| ee629cc775 | |||
| 5d8cb0f7f3 | |||
| e71d653ff7 | |||
| 20775ac096 | |||
| 135c46671f | |||
| b7d2460bfe | |||
| 24bc90b1d2 | |||
| 9e07cbb087 | |||
| fabaaa7824 | |||
| 5d794033e2 | |||
| 776655bd15 | |||
| c7caa796bf |
@@ -2,3 +2,4 @@
|
||||
host=review.opendev.org
|
||||
port=29418
|
||||
project=openstack/devstack.git
|
||||
defaultbranch=unmaintained/xena
|
||||
|
||||
+19
-64
@@ -1,11 +1,3 @@
|
||||
- pragma:
|
||||
# NOTE(gtema): this is required for the changes in SDK feature/r1 branch to
|
||||
# be using devstack
|
||||
# TODO(gtema): delete this once r1 branch is merged into master
|
||||
implied-branches:
|
||||
- master
|
||||
- feature/r1
|
||||
|
||||
- nodeset:
|
||||
name: openstack-single-node
|
||||
nodes:
|
||||
@@ -46,16 +38,6 @@
|
||||
nodes:
|
||||
- controller
|
||||
|
||||
- nodeset:
|
||||
name: devstack-single-node-centos-7
|
||||
nodes:
|
||||
- name: controller
|
||||
label: centos-7
|
||||
groups:
|
||||
- name: tempest
|
||||
nodes:
|
||||
- controller
|
||||
|
||||
- nodeset:
|
||||
name: devstack-single-node-centos-8-stream
|
||||
nodes:
|
||||
@@ -67,20 +49,20 @@
|
||||
- controller
|
||||
|
||||
- nodeset:
|
||||
name: devstack-single-node-opensuse-15
|
||||
name: devstack-single-node-centos-9-stream
|
||||
nodes:
|
||||
- name: controller
|
||||
label: opensuse-15
|
||||
label: centos-9-stream
|
||||
groups:
|
||||
- name: tempest
|
||||
nodes:
|
||||
- controller
|
||||
|
||||
- nodeset:
|
||||
name: devstack-single-node-fedora-latest
|
||||
name: devstack-single-node-opensuse-15
|
||||
nodes:
|
||||
- name: controller
|
||||
label: fedora-34
|
||||
label: opensuse-15
|
||||
groups:
|
||||
- name: tempest
|
||||
nodes:
|
||||
@@ -293,7 +275,6 @@
|
||||
required-projects:
|
||||
- opendev.org/openstack/devstack
|
||||
roles:
|
||||
- zuul: opendev.org/openstack/devstack-gate
|
||||
- zuul: opendev.org/openstack/openstack-zuul-jobs
|
||||
vars:
|
||||
devstack_localrc:
|
||||
@@ -412,7 +393,7 @@
|
||||
PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
|
||||
devstack_services:
|
||||
# Shared services
|
||||
dstat: true
|
||||
dstat: false
|
||||
etcd3: true
|
||||
memory_tracker: true
|
||||
mysql: true
|
||||
@@ -421,7 +402,7 @@
|
||||
subnode:
|
||||
devstack_services:
|
||||
# Shared services
|
||||
dstat: true
|
||||
dstat: false
|
||||
memory_tracker: true
|
||||
devstack_localrc:
|
||||
# Multinode specific settings
|
||||
@@ -487,7 +468,7 @@
|
||||
# Core services enabled for this branch.
|
||||
# This list replaces the test-matrix.
|
||||
# Shared services
|
||||
dstat: true
|
||||
dstat: false
|
||||
etcd3: true
|
||||
memory_tracker: true
|
||||
mysql: true
|
||||
@@ -538,7 +519,7 @@
|
||||
# Core services enabled for this branch.
|
||||
# This list replaces the test-matrix.
|
||||
# Shared services
|
||||
dstat: true
|
||||
dstat: false
|
||||
memory_tracker: true
|
||||
tls-proxy: true
|
||||
# Nova services
|
||||
@@ -598,21 +579,14 @@
|
||||
description: |
|
||||
Simple multinode test to verify multinode functionality on devstack side.
|
||||
This is not meant to be used as a parent job.
|
||||
vars:
|
||||
devstack_localrc:
|
||||
MYSQL_REDUCE_MEMORY: true
|
||||
|
||||
# NOTE(ianw) Platform tests have traditionally been non-voting because
|
||||
# we often have to rush things through devstack to stabilise the gate,
|
||||
# and these platforms don't have the round-the-clock support to avoid
|
||||
# becoming blockers in that situation.
|
||||
- job:
|
||||
name: devstack-platform-centos-8-stream
|
||||
parent: tempest-full-py3
|
||||
description: CentOS 8 Stream platform test
|
||||
nodeset: devstack-single-node-centos-8-stream
|
||||
voting: false
|
||||
timeout: 9000
|
||||
vars:
|
||||
configure_swap_size: 4096
|
||||
|
||||
- job:
|
||||
name: devstack-async
|
||||
parent: tempest-full-py3
|
||||
@@ -635,23 +609,6 @@
|
||||
devstack_services:
|
||||
tls-proxy: false
|
||||
|
||||
- job:
|
||||
name: devstack-platform-fedora-latest
|
||||
parent: tempest-full-py3
|
||||
description: Fedora latest platform test
|
||||
nodeset: devstack-single-node-fedora-latest
|
||||
voting: false
|
||||
|
||||
- job:
|
||||
name: devstack-platform-fedora-latest-virt-preview
|
||||
parent: tempest-full-py3
|
||||
description: Fedora latest platform test using the virt-preview repo.
|
||||
nodeset: devstack-single-node-fedora-latest
|
||||
voting: false
|
||||
vars:
|
||||
devstack_localrc:
|
||||
ENABLE_FEDORA_VIRT_PREVIEW_REPO: true
|
||||
|
||||
- job:
|
||||
name: devstack-tox-base
|
||||
parent: devstack
|
||||
@@ -725,8 +682,6 @@
|
||||
- devstack
|
||||
- devstack-ipv6
|
||||
- devstack-enforce-scope
|
||||
- devstack-platform-fedora-latest
|
||||
- devstack-platform-centos-8-stream
|
||||
- devstack-async
|
||||
- devstack-multinode
|
||||
- devstack-unit-tests
|
||||
@@ -764,6 +719,7 @@
|
||||
- ^.*\.rst$
|
||||
- ^doc/.*$
|
||||
- nova-ceph-multistore:
|
||||
voting: false
|
||||
irrelevant-files:
|
||||
- ^.*\.rst$
|
||||
- ^doc/.*$
|
||||
@@ -797,10 +753,13 @@
|
||||
irrelevant-files:
|
||||
- ^.*\.rst$
|
||||
- ^doc/.*$
|
||||
- nova-ceph-multistore:
|
||||
irrelevant-files:
|
||||
- ^.*\.rst$
|
||||
- ^doc/.*$
|
||||
# TODO(elod.illes): nova-ceph-multistore is broken in this branch,
|
||||
# so it is set as non-voting in check queue and commented out here
|
||||
# in gate queue until the job gets fixed.
|
||||
# - 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.
|
||||
@@ -850,8 +809,4 @@
|
||||
irrelevant-files:
|
||||
- ^.*\.rst$
|
||||
- ^doc/.*$
|
||||
- devstack-platform-fedora-latest-virt-preview
|
||||
- devstack-no-tls-proxy
|
||||
periodic:
|
||||
jobs:
|
||||
- devstack-no-tls-proxy
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
ceph # NOPRIME
|
||||
redhat-lsb-core
|
||||
redhat-lsb-core # not:rhel9
|
||||
xfsprogs
|
||||
|
||||
+2
-1
@@ -1,9 +1,10 @@
|
||||
cryptsetup
|
||||
dosfstools
|
||||
genisoimage
|
||||
genisoimage # not:rhel9
|
||||
iscsi-initiator-utils
|
||||
libosinfo
|
||||
lvm2
|
||||
sg3_utils
|
||||
# Stuff for diablo volumes
|
||||
sysfsutils
|
||||
xorriso # not:rhel8
|
||||
|
||||
+2
-1
@@ -3,7 +3,7 @@ curl
|
||||
dnsmasq # for q-dhcp
|
||||
dnsmasq-utils # for dhcp_release
|
||||
ebtables
|
||||
genisoimage # required for config_drive
|
||||
genisoimage # not:rhel9 required for config_drive
|
||||
iptables
|
||||
iputils
|
||||
kernel-modules
|
||||
@@ -13,3 +13,4 @@ polkit
|
||||
rabbitmq-server # NOPRIME
|
||||
sqlite
|
||||
sudo
|
||||
xorriso # not:rhel8
|
||||
|
||||
+1
-1
@@ -4,4 +4,4 @@ memcached
|
||||
rsync-daemon
|
||||
sqlite
|
||||
xfsprogs
|
||||
xinetd # not:f34
|
||||
xinetd # not:f34,rhel9
|
||||
|
||||
+46
-11
@@ -346,12 +346,19 @@ function _ensure_lsb_release {
|
||||
# - os_VENDOR
|
||||
# - os_PACKAGE
|
||||
function GetOSVersion {
|
||||
# We only support distros that provide a sane lsb_release
|
||||
_ensure_lsb_release
|
||||
# CentOS Stream 9 does not provide 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_CODENAME=$(lsb_release -c -s)
|
||||
os_VENDOR=$(lsb_release -i -s)
|
||||
os_RELEASE=$(lsb_release -r -s)
|
||||
os_CODENAME=$(lsb_release -c -s)
|
||||
os_VENDOR=$(lsb_release -i -s)
|
||||
fi
|
||||
|
||||
if [[ $os_VENDOR =~ (Debian|Ubuntu|LinuxMint) ]]; then
|
||||
os_PACKAGE="deb"
|
||||
@@ -561,8 +568,10 @@ function git_clone {
|
||||
echo "the project to the \$PROJECTS variable in the job definition."
|
||||
die $LINENO "Cloning not allowed in this configuration"
|
||||
fi
|
||||
# '--branch' can also take tags
|
||||
git_timed clone $git_clone_flags $git_remote $git_dest --branch $git_ref
|
||||
git_timed clone --no-checkout $git_clone_flags $git_remote $git_dest
|
||||
cd $git_dest
|
||||
git_timed fetch $git_clone_flags origin $git_ref
|
||||
git_timed checkout FETCH_HEAD
|
||||
elif [[ "$RECLONE" = "True" ]]; then
|
||||
# if it does exist then simulate what clone does if asked to RECLONE
|
||||
cd $git_dest
|
||||
@@ -588,6 +597,18 @@ function git_clone {
|
||||
fi
|
||||
fi
|
||||
|
||||
# NOTE(ianw) 2022-04-13 : commit [1] has broken many assumptions
|
||||
# about how we clone and work with repos. Mark them safe globally
|
||||
# as a work-around.
|
||||
#
|
||||
# NOTE(danms): On bionic (and likely others) git-config may write
|
||||
# ~stackuser/.gitconfig if not run with sudo -H. Using --system
|
||||
# writes these changes to /etc/gitconfig which is more
|
||||
# discoverable anyway.
|
||||
#
|
||||
# [1] https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9
|
||||
sudo git config --system --add safe.directory ${git_dest}
|
||||
|
||||
# print out the results so we know what change was used in the logs
|
||||
cd $git_dest
|
||||
git show --oneline | head -1
|
||||
@@ -1447,6 +1468,7 @@ function write_user_unit_file {
|
||||
local command="$2"
|
||||
local group=$3
|
||||
local user=$4
|
||||
local env_vars="$5"
|
||||
local extra=""
|
||||
if [[ -n "$group" ]]; then
|
||||
extra="Group=$group"
|
||||
@@ -1460,6 +1482,9 @@ function write_user_unit_file {
|
||||
iniset -sudo $unitfile "Service" "KillMode" "process"
|
||||
iniset -sudo $unitfile "Service" "TimeoutStopSec" "300"
|
||||
iniset -sudo $unitfile "Service" "ExecReload" "$KILL_PATH -HUP \$MAINPID"
|
||||
if [[ -n "$env_vars" ]] ; then
|
||||
iniset -sudo $unitfile "Service" "Environment" "$env_vars"
|
||||
fi
|
||||
if [[ -n "$group" ]]; then
|
||||
iniset -sudo $unitfile "Service" "Group" "$group"
|
||||
fi
|
||||
@@ -1474,6 +1499,7 @@ function write_uwsgi_user_unit_file {
|
||||
local command="$2"
|
||||
local group=$3
|
||||
local user=$4
|
||||
local env_vars="$5"
|
||||
local unitfile="$SYSTEMD_DIR/$service"
|
||||
mkdir -p $SYSTEMD_DIR
|
||||
|
||||
@@ -1488,6 +1514,9 @@ function write_uwsgi_user_unit_file {
|
||||
iniset -sudo $unitfile "Service" "NotifyAccess" "all"
|
||||
iniset -sudo $unitfile "Service" "RestartForceExitStatus" "100"
|
||||
|
||||
if [[ -n "$env_vars" ]] ; then
|
||||
iniset -sudo $unitfile "Service" "Environment" "$env_vars"
|
||||
fi
|
||||
if [[ -n "$group" ]]; then
|
||||
iniset -sudo $unitfile "Service" "Group" "$group"
|
||||
fi
|
||||
@@ -1535,10 +1564,14 @@ function _run_under_systemd {
|
||||
local systemd_service="devstack@$service.service"
|
||||
local group=$3
|
||||
local user=${4:-$STACK_USER}
|
||||
if [[ -z "$user" ]]; then
|
||||
user=$STACK_USER
|
||||
fi
|
||||
local env_vars="$5"
|
||||
if [[ "$command" =~ "uwsgi" ]] ; then
|
||||
write_uwsgi_user_unit_file $systemd_service "$cmd" "$group" "$user"
|
||||
write_uwsgi_user_unit_file $systemd_service "$cmd" "$group" "$user" "$env_vars"
|
||||
else
|
||||
write_user_unit_file $systemd_service "$cmd" "$group" "$user"
|
||||
write_user_unit_file $systemd_service "$cmd" "$group" "$user" "$env_vars"
|
||||
fi
|
||||
|
||||
$SYSTEMCTL enable $systemd_service
|
||||
@@ -1559,18 +1592,20 @@ function is_running {
|
||||
# If the command includes shell metachatacters (;<>*) it must be run using a shell
|
||||
# If an optional group is provided sg will be used to run the
|
||||
# command as that group.
|
||||
# run_process service "command-line" [group] [user]
|
||||
# run_process service "command-line" [group] [user] [env_vars]
|
||||
# env_vars must be a space separated list of variable assigments, ie: "A=1 B=2"
|
||||
function run_process {
|
||||
local service=$1
|
||||
local command="$2"
|
||||
local group=$3
|
||||
local user=$4
|
||||
local env_vars="$5"
|
||||
|
||||
local name=$service
|
||||
|
||||
time_start "run_process"
|
||||
if is_service_enabled $service; then
|
||||
_run_under_systemd "$name" "$command" "$group" "$user"
|
||||
_run_under_systemd "$name" "$command" "$group" "$user" "$env_vars"
|
||||
fi
|
||||
time_stop "run_process"
|
||||
}
|
||||
|
||||
+1
-1
@@ -303,7 +303,7 @@ function write_uwsgi_config {
|
||||
apache_conf=$(apache_site_config_for $name)
|
||||
iniset "$file" uwsgi socket "$socket"
|
||||
iniset "$file" uwsgi chmod-socket 666
|
||||
echo "ProxyPass \"${url}\" \"unix:${socket}|uwsgi://uwsgi-uds-${name}/\" retry=0 " | sudo tee -a $apache_conf
|
||||
echo "ProxyPass \"${url}\" \"unix:${socket}|uwsgi://uwsgi-uds-${name}\" retry=0 " | sudo tee -a $apache_conf
|
||||
enable_apache_site $name
|
||||
restart_apache_server
|
||||
fi
|
||||
|
||||
+31
-13
@@ -91,6 +91,8 @@ CINDER_VOLUME_CLEAR=$(echo ${CINDER_VOLUME_CLEAR} | tr '[:upper:]' '[:lower:]')
|
||||
# Default to lioadm
|
||||
CINDER_ISCSI_HELPER=${CINDER_ISCSI_HELPER:-lioadm}
|
||||
|
||||
VOLUME_TYPE_MULTIATTACH=${VOLUME_TYPE_MULTIATTACH:-multiattach}
|
||||
|
||||
# EL and SUSE should only use lioadm
|
||||
if is_fedora || is_suse; then
|
||||
if [[ ${CINDER_ISCSI_HELPER} != "lioadm" ]]; then
|
||||
@@ -549,8 +551,13 @@ function start_cinder {
|
||||
fi
|
||||
|
||||
run_process c-sch "$CINDER_BIN_DIR/cinder-scheduler --config-file $CINDER_CONF"
|
||||
run_process c-bak "$CINDER_BIN_DIR/cinder-backup --config-file $CINDER_CONF"
|
||||
run_process c-vol "$CINDER_BIN_DIR/cinder-volume --config-file $CINDER_CONF"
|
||||
# Tune glibc for Python Services using single malloc arena for all threads
|
||||
# and disabling dynamic thresholds to reduce memory usage when using native
|
||||
# threads directly or via eventlet.tpool
|
||||
# https://www.gnu.org/software/libc/manual/html_node/Memory-Allocation-Tunables.html
|
||||
malloc_tuning="MALLOC_ARENA_MAX=1 MALLOC_MMAP_THRESHOLD_=131072 MALLOC_TRIM_THRESHOLD_=262144"
|
||||
run_process c-bak "$CINDER_BIN_DIR/cinder-backup --config-file $CINDER_CONF" "" "" "$malloc_tuning"
|
||||
run_process c-vol "$CINDER_BIN_DIR/cinder-volume --config-file $CINDER_CONF" "" "" "$malloc_tuning"
|
||||
|
||||
# NOTE(jdg): For cinder, startup order matters. To ensure that repor_capabilities is received
|
||||
# by the scheduler start the cinder-volume service last (or restart it) after the scheduler
|
||||
@@ -565,6 +572,23 @@ function stop_cinder {
|
||||
stop_process c-vol
|
||||
}
|
||||
|
||||
function create_one_type {
|
||||
type_name=$1
|
||||
property_key=$2
|
||||
property_value=$3
|
||||
# NOTE (e0ne): openstack client doesn't work with cinder in noauth mode
|
||||
if is_service_enabled keystone; then
|
||||
openstack --os-region-name="$REGION_NAME" volume type create --property $property_key="$property_value" $type_name
|
||||
else
|
||||
# TODO (e0ne): use openstack client once it will support cinder in noauth mode:
|
||||
# https://bugs.launchpad.net/python-cinderclient/+bug/1755279
|
||||
local cinder_url
|
||||
cinder_url=$CINDER_SERVICE_PROTOCOL://$SERVICE_HOST:$CINDER_SERVICE_PORT/v3
|
||||
OS_USER_ID=$OS_USERNAME OS_PROJECT_ID=$OS_PROJECT_NAME cinder --os-auth-type noauth --os-endpoint=$cinder_url type-create $type_name
|
||||
OS_USER_ID=$OS_USERNAME OS_PROJECT_ID=$OS_PROJECT_NAME cinder --os-auth-type noauth --os-endpoint=$cinder_url type-key $type_name set $property_key="$property_value"
|
||||
fi
|
||||
}
|
||||
|
||||
# create_volume_types() - Create Cinder's configured volume types
|
||||
function create_volume_types {
|
||||
# Create volume types
|
||||
@@ -572,19 +596,13 @@ function create_volume_types {
|
||||
local be be_name
|
||||
for be in ${CINDER_ENABLED_BACKENDS//,/ }; do
|
||||
be_name=${be##*:}
|
||||
# NOTE (e0ne): openstack client doesn't work with cinder in noauth mode
|
||||
if is_service_enabled keystone; then
|
||||
openstack --os-region-name="$REGION_NAME" volume type create --property volume_backend_name="${be_name}" ${be_name}
|
||||
else
|
||||
# TODO (e0ne): use openstack client once it will support cinder in noauth mode:
|
||||
# https://bugs.launchpad.net/python-cinderclient/+bug/1755279
|
||||
local cinder_url
|
||||
cinder_url=$CINDER_SERVICE_PROTOCOL://$SERVICE_HOST:$CINDER_SERVICE_PORT/v3
|
||||
OS_USER_ID=$OS_USERNAME OS_PROJECT_ID=$OS_PROJECT_NAME cinder --os-auth-type noauth --os-endpoint=$cinder_url type-create ${be_name}
|
||||
OS_USER_ID=$OS_USERNAME OS_PROJECT_ID=$OS_PROJECT_NAME cinder --os-auth-type noauth --os-endpoint=$cinder_url type-key ${be_name} set volume_backend_name=${be_name}
|
||||
fi
|
||||
create_one_type $be_name "volume_backend_name" $be_name
|
||||
done
|
||||
|
||||
if [[ $ENABLE_VOLUME_MULTIATTACH == "True" ]]; then
|
||||
create_one_type $VOLUME_TYPE_MULTIATTACH $VOLUME_TYPE_MULTIATTACH "<is> True"
|
||||
fi
|
||||
|
||||
# Increase quota for the service project if glance is using cinder,
|
||||
# since it's likely to occasionally go above the default 10 in parallel
|
||||
# test execution.
|
||||
|
||||
+11
-1
@@ -143,6 +143,16 @@ function configure_database_mysql {
|
||||
iniset -sudo $my_conf mysqld log-queries-not-using-indexes 1
|
||||
fi
|
||||
|
||||
if [[ "$MYSQL_REDUCE_MEMORY" == "True" ]]; then
|
||||
iniset -sudo $my_conf mysqld read_buffer_size 64K
|
||||
iniset -sudo $my_conf mysqld innodb_buffer_pool_size 16M
|
||||
iniset -sudo $my_conf mysqld thread_stack 192K
|
||||
iniset -sudo $my_conf mysqld thread_cache_size 8
|
||||
iniset -sudo $my_conf mysqld tmp_table_size 8M
|
||||
iniset -sudo $my_conf mysqld sort_buffer_size 8M
|
||||
iniset -sudo $my_conf mysqld max_allowed_packet 8M
|
||||
fi
|
||||
|
||||
restart_service $MYSQL_SERVICE_NAME
|
||||
}
|
||||
|
||||
@@ -176,7 +186,7 @@ EOF
|
||||
if is_oraclelinux; then
|
||||
install_package mysql-community-server
|
||||
elif is_fedora; then
|
||||
install_package mariadb-server mariadb-devel
|
||||
install_package mariadb-server mariadb-devel mariadb
|
||||
sudo systemctl enable $MYSQL_SERVICE_NAME
|
||||
elif is_suse; then
|
||||
install_package mariadb-server
|
||||
|
||||
+7
-1
@@ -133,6 +133,9 @@ Q_NOTIFY_NOVA_PORT_DATA_CHANGES=${Q_NOTIFY_NOVA_PORT_DATA_CHANGES:-True}
|
||||
VIF_PLUGGING_IS_FATAL=${VIF_PLUGGING_IS_FATAL:-True}
|
||||
VIF_PLUGGING_TIMEOUT=${VIF_PLUGGING_TIMEOUT:-300}
|
||||
|
||||
# Allow to skip stopping of OVN services
|
||||
SKIP_STOP_OVN=${SKIP_STOP_OVN:-False}
|
||||
|
||||
# The directory which contains files for Q_PLUGIN_EXTRA_CONF_FILES.
|
||||
# /etc/neutron is assumed by many of devstack plugins. Do not change.
|
||||
_Q_PLUGIN_EXTRA_CONF_PATH=/etc/neutron
|
||||
@@ -603,7 +606,7 @@ function stop_mutnauq {
|
||||
stop_mutnauq_other
|
||||
stop_mutnauq_l2_agent
|
||||
|
||||
if [[ $Q_AGENT == "ovn" ]]; then
|
||||
if [[ $Q_AGENT == "ovn" && $SKIP_STOP_OVN != "True" ]]; then
|
||||
stop_ovn
|
||||
fi
|
||||
}
|
||||
@@ -896,6 +899,9 @@ function _configure_neutron_service {
|
||||
|
||||
configure_keystone_authtoken_middleware $NEUTRON_CONF nova nova
|
||||
|
||||
# Configuration for placement client
|
||||
configure_keystone_authtoken_middleware $NEUTRON_CONF placement placement
|
||||
|
||||
# Configure plugin
|
||||
neutron_plugin_configure_service
|
||||
}
|
||||
|
||||
@@ -383,6 +383,8 @@ function install_ovn {
|
||||
sudo mkdir -p $OVS_PREFIX/var/log/ovn
|
||||
sudo chown $(whoami) $OVS_PREFIX/var/log/ovn
|
||||
else
|
||||
# Load fixup_ovn_centos
|
||||
source ${TOP_DIR}/tools/fixup_stuff.sh
|
||||
fixup_ovn_centos
|
||||
install_package $(get_packages openvswitch)
|
||||
install_package $(get_packages ovn)
|
||||
@@ -595,7 +597,7 @@ function _start_ovs {
|
||||
dbcmd+=" --remote=db:hardware_vtep,Global,managers $OVS_DATADIR/vtep.db"
|
||||
fi
|
||||
dbcmd+=" $OVS_DATADIR/conf.db"
|
||||
_run_process ovsdb-server "$dbcmd"
|
||||
_run_process ovsdb-server "$dbcmd" "" "$STACK_GROUP" "root"
|
||||
|
||||
# Note: ovn-controller will create and configure br-int once it is started.
|
||||
# So, no need to create it now because nothing depends on that bridge here.
|
||||
@@ -683,7 +685,7 @@ function start_ovn {
|
||||
local cmd="/bin/bash $SCRIPTDIR/ovn-ctl --no-monitor start_northd"
|
||||
local stop_cmd="/bin/bash $SCRIPTDIR/ovn-ctl stop_northd"
|
||||
|
||||
_run_process ovn-northd "$cmd" "$stop_cmd"
|
||||
_run_process ovn-northd "$cmd" "$stop_cmd" "$STACK_GROUP" "root"
|
||||
else
|
||||
_start_process "$OVN_NORTHD_SERVICE"
|
||||
fi
|
||||
|
||||
@@ -86,9 +86,15 @@ function prepare_for_ovs_compilation {
|
||||
|
||||
install_package kernel-devel-$KERNEL_VERSION
|
||||
install_package kernel-headers-$KERNEL_VERSION
|
||||
if is_service_enabled tls-proxy; then
|
||||
install_package openssl-devel
|
||||
fi
|
||||
|
||||
elif is_ubuntu ; then
|
||||
install_package linux-headers-$KERNEL_VERSION
|
||||
if is_service_enabled tls-proxy; then
|
||||
install_package libssl-dev
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -298,6 +298,9 @@ function configure_nova {
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ensure each compute host uses a unique iSCSI initiator
|
||||
echo InitiatorName=$(iscsi-iname) | sudo tee /etc/iscsi/initiatorname.iscsi
|
||||
|
||||
if [[ ${ISCSID_DEBUG} == "True" ]]; then
|
||||
# Install an override that starts iscsid with debugging
|
||||
# enabled.
|
||||
@@ -311,6 +314,14 @@ EOF
|
||||
sudo systemctl daemon-reload
|
||||
fi
|
||||
|
||||
# set chap algorithms. The default chap_algorithm is md5 which will
|
||||
# not work under FIPS.
|
||||
# FIXME(alee) For some reason, this breaks openeuler. Openeuler devs should weigh in
|
||||
# and determine the correct solution for openeuler here
|
||||
if ! is_openeuler; then
|
||||
iniset -sudo /etc/iscsi/iscsid.conf DEFAULT "node.session.auth.chap_algs" "SHA3-256,SHA256"
|
||||
fi
|
||||
|
||||
# ensure that iscsid is started, even when disabled by default
|
||||
restart_service iscsid
|
||||
fi
|
||||
@@ -475,7 +486,8 @@ function create_nova_conf {
|
||||
fi
|
||||
|
||||
# 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
|
||||
fi
|
||||
|
||||
|
||||
+134
-18
@@ -58,7 +58,7 @@ BUILD_TIMEOUT=${BUILD_TIMEOUT:-196}
|
||||
# This must be False on stable branches, as master tempest
|
||||
# deps do not match stable branch deps. Set this to True to
|
||||
# have tempest installed in DevStack by default.
|
||||
INSTALL_TEMPEST=${INSTALL_TEMPEST:-"True"}
|
||||
INSTALL_TEMPEST=${INSTALL_TEMPEST:-"False"}
|
||||
|
||||
# This variable is passed directly to pip install inside the common tox venv
|
||||
# that is created
|
||||
@@ -71,6 +71,17 @@ TEMPEST_VOLUME_VENDOR=${TEMPEST_VOLUME_VENDOR:-$TEMPEST_DEFAULT_VOLUME_VENDOR}
|
||||
TEMPEST_DEFAULT_STORAGE_PROTOCOL="iSCSI"
|
||||
TEMPEST_STORAGE_PROTOCOL=${TEMPEST_STORAGE_PROTOCOL:-$TEMPEST_DEFAULT_STORAGE_PROTOCOL}
|
||||
|
||||
# Glance/Image variables
|
||||
# When Glance image import is enabled, image creation is asynchronous and images
|
||||
# may not yet be active when tempest looks for them. In that case, we poll
|
||||
# Glance every TEMPEST_GLANCE_IMPORT_POLL_INTERVAL seconds for the number of
|
||||
# times specified by TEMPEST_GLANCE_IMPORT_POLL_LIMIT. If you are importing
|
||||
# multiple images, set TEMPEST_GLANCE_IMAGE_COUNT so the poller does not quit
|
||||
# too early (though it will not exceed the polling limit).
|
||||
TEMPEST_GLANCE_IMPORT_POLL_INTERVAL=${TEMPEST_GLANCE_IMPORT_POLL_INTERVAL:-1}
|
||||
TEMPEST_GLANCE_IMPORT_POLL_LIMIT=${TEMPEST_GLANCE_IMPORT_POLL_LIMIT:-12}
|
||||
TEMPEST_GLANCE_IMAGE_COUNT=${TEMPEST_GLANCE_IMAGE_COUNT:-1}
|
||||
|
||||
# Neutron/Network variables
|
||||
IPV6_ENABLED=$(trueorfalse True IPV6_ENABLED)
|
||||
IPV6_SUBNET_ATTRIBUTES_ENABLED=$(trueorfalse True IPV6_SUBNET_ATTRIBUTES_ENABLED)
|
||||
@@ -115,7 +126,16 @@ function set_tempest_venv_constraints {
|
||||
local tmp_c
|
||||
tmp_c=$1
|
||||
if [[ $TEMPEST_VENV_UPPER_CONSTRAINTS == "master" ]]; then
|
||||
(cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > $tmp_c
|
||||
(cd $REQUIREMENTS_DIR &&
|
||||
git show master:upper-constraints.txt 2>/dev/null ||
|
||||
git show origin/master:upper-constraints.txt) > $tmp_c
|
||||
# NOTE(gmann): we need to set the below env var pointing to master
|
||||
# constraints even that is what default in tox.ini. Otherwise it can
|
||||
# create the issue for grenade run where old and new devstack can have
|
||||
# different tempest (old and master) to install. For detail problem,
|
||||
# refer to the https://bugs.launchpad.net/devstack/+bug/2003993
|
||||
export UPPER_CONSTRAINTS_FILE=https://releases.openstack.org/constraints/upper/master
|
||||
export TOX_CONSTRAINTS_FILE=https://releases.openstack.org/constraints/upper/master
|
||||
else
|
||||
echo "Using $TEMPEST_VENV_UPPER_CONSTRAINTS constraints in Tempest virtual env."
|
||||
cat $TEMPEST_VENV_UPPER_CONSTRAINTS > $tmp_c
|
||||
@@ -126,6 +146,48 @@ function set_tempest_venv_constraints {
|
||||
fi
|
||||
}
|
||||
|
||||
# Makes a call to glance to get a list of active images, ignoring
|
||||
# ramdisk and kernel images. Takes 3 arguments, an array and two
|
||||
# variables. The array will contain the list of active image UUIDs;
|
||||
# if an image with ``DEFAULT_IMAGE_NAME`` is found, its UUID will be
|
||||
# set as the value of *both* other parameters.
|
||||
function get_active_images {
|
||||
declare -n img_array=$1
|
||||
declare -n img_id=$2
|
||||
declare -n img_id_alt=$3
|
||||
|
||||
# start with a fresh array in case we are called multiple times
|
||||
img_array=()
|
||||
|
||||
while read -r IMAGE_NAME IMAGE_UUID; do
|
||||
if [ "$IMAGE_NAME" = "$DEFAULT_IMAGE_NAME" ]; then
|
||||
img_id="$IMAGE_UUID"
|
||||
img_id_alt="$IMAGE_UUID"
|
||||
fi
|
||||
img_array+=($IMAGE_UUID)
|
||||
done < <(openstack --os-cloud devstack-admin image list --property status=active | awk -F'|' '!/^(+--)|ID|aki|ari/ { print $3,$2 }')
|
||||
}
|
||||
|
||||
function poll_glance_images {
|
||||
declare -n image_array=$1
|
||||
declare -n image_id=$2
|
||||
declare -n image_id_alt=$3
|
||||
local -i poll_count
|
||||
|
||||
poll_count=$TEMPEST_GLANCE_IMPORT_POLL_LIMIT
|
||||
while (( poll_count-- > 0 )) ; do
|
||||
sleep $TEMPEST_GLANCE_IMPORT_POLL_INTERVAL
|
||||
get_active_images image_array image_id image_id_alt
|
||||
if (( ${#image_array[*]} >= $TEMPEST_GLANCE_IMAGE_COUNT )) ; then
|
||||
return
|
||||
fi
|
||||
done
|
||||
local msg
|
||||
msg="Polling limit of $TEMPEST_GLANCE_IMPORT_POLL_LIMIT exceeded; "
|
||||
msg+="poll interval was $TEMPEST_GLANCE_IMPORT_POLL_INTERVAL sec"
|
||||
warn $LINENO "$msg"
|
||||
}
|
||||
|
||||
# configure_tempest() - Set config files, create data dirs, etc
|
||||
function configure_tempest {
|
||||
if [[ "$INSTALL_TEMPEST" == "True" ]]; then
|
||||
@@ -167,13 +229,21 @@ function configure_tempest {
|
||||
declare -a images
|
||||
|
||||
if is_service_enabled glance; then
|
||||
while read -r IMAGE_NAME IMAGE_UUID; do
|
||||
if [ "$IMAGE_NAME" = "$DEFAULT_IMAGE_NAME" ]; then
|
||||
image_uuid="$IMAGE_UUID"
|
||||
image_uuid_alt="$IMAGE_UUID"
|
||||
get_active_images images image_uuid image_uuid_alt
|
||||
|
||||
if (( ${#images[*]} < $TEMPEST_GLANCE_IMAGE_COUNT )); then
|
||||
# Glance image import is asynchronous and may be configured
|
||||
# to do image conversion. If image import is being used,
|
||||
# it's possible that this code is being executed before the
|
||||
# import has completed and there may be no active images yet.
|
||||
if [[ "$GLANCE_USE_IMPORT_WORKFLOW" == "True" ]]; then
|
||||
poll_glance_images images image_uuid image_uuid_alt
|
||||
if (( ${#images[*]} < $TEMPEST_GLANCE_IMAGE_COUNT )); then
|
||||
echo "Only found ${#images[*]} image(s), was looking for $TEMPEST_GLANCE_IMAGE_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
images+=($IMAGE_UUID)
|
||||
done < <(openstack --os-cloud devstack-admin image list --property status=active | awk -F'|' '!/^(+--)|ID|aki|ari/ { print $3,$2 }')
|
||||
fi
|
||||
|
||||
case "${#images[*]}" in
|
||||
0)
|
||||
@@ -393,7 +463,7 @@ function configure_tempest {
|
||||
# NOTE- To avoid microversion tests failure on stable branch, we need to change "tempest_compute_max_microversion"
|
||||
# for stable branch on each release which should be changed from "latest" to max supported version of that release.
|
||||
local tempest_compute_min_microversion=${TEMPEST_COMPUTE_MIN_MICROVERSION:-None}
|
||||
local tempest_compute_max_microversion=${TEMPEST_COMPUTE_MAX_MICROVERSION:-"latest"}
|
||||
local tempest_compute_max_microversion=${TEMPEST_COMPUTE_MAX_MICROVERSION:-"2.90"}
|
||||
# Reset microversions to None where v2.0 is running which does not support microversion.
|
||||
# Both "None" means no microversion testing.
|
||||
if [[ "$TEMPEST_COMPUTE_TYPE" == "compute_legacy" ]]; then
|
||||
@@ -484,7 +554,7 @@ function configure_tempest {
|
||||
fi
|
||||
iniset $TEMPEST_CONFIG volume-feature-enabled volume_revert $(trueorfalse False TEMPEST_VOLUME_REVERT_TO_SNAPSHOT)
|
||||
local tempest_volume_min_microversion=${TEMPEST_VOLUME_MIN_MICROVERSION:-None}
|
||||
local tempest_volume_max_microversion=${TEMPEST_VOLUME_MAX_MICROVERSION:-"latest"}
|
||||
local tempest_volume_max_microversion=${TEMPEST_VOLUME_MAX_MICROVERSION:-"3.66"}
|
||||
if [ "$tempest_volume_min_microversion" == "None" ]; then
|
||||
inicomment $TEMPEST_CONFIG volume min_microversion
|
||||
else
|
||||
@@ -533,13 +603,17 @@ function configure_tempest {
|
||||
iniset $TEMPEST_CONFIG volume storage_protocol "$TEMPEST_STORAGE_PROTOCOL"
|
||||
fi
|
||||
|
||||
if [[ $ENABLE_VOLUME_MULTIATTACH == "True" ]]; then
|
||||
iniset $TEMPEST_CONFIG volume volume_type_multiattach $VOLUME_TYPE_MULTIATTACH
|
||||
fi
|
||||
|
||||
# Placement Features
|
||||
# Set the microversion range for placement.
|
||||
# Setting [None, latest] range of microversion which allow Tempest to run all microversions tests.
|
||||
# NOTE- To avoid microversion tests failure on stable branch, we need to change "tempest_placement_max_microversion"
|
||||
# for stable branch on each release which should be changed from "latest" to max supported version of that release.
|
||||
local tempest_placement_min_microversion=${TEMPEST_PLACEMENT_MIN_MICROVERSION:-None}
|
||||
local tempest_placement_max_microversion=${TEMPEST_PLACEMENT_MAX_MICROVERSION:-"latest"}
|
||||
local tempest_placement_max_microversion=${TEMPEST_PLACEMENT_MAX_MICROVERSION:-"1.38"}
|
||||
if [ "$tempest_placement_min_microversion" == "None" ]; then
|
||||
inicomment $TEMPEST_CONFIG placement min_microversion
|
||||
else
|
||||
@@ -601,6 +675,8 @@ function configure_tempest {
|
||||
done
|
||||
|
||||
iniset $TEMPEST_CONFIG enforce_scope glance "$GLANCE_ENFORCE_SCOPE"
|
||||
# NOTE(gmann): system scope is supported for <=stable/yoga only
|
||||
iniset $TEMPEST_CONFIG glance_api system_scope_supported "True"
|
||||
|
||||
iniset $TEMPEST_CONFIG enforce_scope cinder "$CINDER_ENFORCE_SCOPE"
|
||||
|
||||
@@ -617,13 +693,13 @@ function configure_tempest {
|
||||
local tmp_cfg_file
|
||||
tmp_cfg_file=$(mktemp)
|
||||
cd $TEMPEST_DIR
|
||||
if [[ "$OFFLINE" != "True" ]]; then
|
||||
tox -revenv-tempest --notest
|
||||
fi
|
||||
|
||||
local tmp_u_c_m
|
||||
tmp_u_c_m=$(mktemp -t tempest_u_c_m.XXXXXXXXXX)
|
||||
set_tempest_venv_constraints $tmp_u_c_m
|
||||
if [[ "$OFFLINE" != "True" ]]; then
|
||||
tox -revenv-tempest --notest
|
||||
fi
|
||||
tox -evenv-tempest -- pip install -c $tmp_u_c_m -r requirements.txt
|
||||
rm -f $tmp_u_c_m
|
||||
|
||||
@@ -660,7 +736,26 @@ function configure_tempest {
|
||||
DISABLE_NETWORK_API_EXTENSIONS+=", l3_agent_scheduler"
|
||||
fi
|
||||
|
||||
local network_api_extensions=${NETWORK_API_EXTENSIONS:-"all"}
|
||||
DEFAULT_NET_EXT="address-scope,agent,allowed-address-pairs,auto-allocated-topology"
|
||||
DEFAULT_NET_EXT+=",availability_zone,binding,default-subnetpools,dhcp_agent_scheduler"
|
||||
DEFAULT_NET_EXT+=",dvr,ext-gw-mode,external-net,extra_dhcp_opt,extraroute,flavors"
|
||||
DEFAULT_NET_EXT+=",l3-flavors,l3-ha,l3_agent_scheduler,multi-provider,net-mtu"
|
||||
DEFAULT_NET_EXT+=",network-ip-availability,network_availability_zone,pagination"
|
||||
DEFAULT_NET_EXT+=",port-security,project-id,provider,quotas,quota_details,rbac-policies"
|
||||
DEFAULT_NET_EXT+=",revision-if-match,router,router_availability_zone,security-group,service-type,sorting"
|
||||
DEFAULT_NET_EXT+=",standard-attr-description,standard-attr-revisions,standard-attr-tag,standard-attr-timestamp"
|
||||
DEFAULT_NET_EXT+=",subnet-service-types,subnet_allocation,net-mtu-writable,ip-substring-filtering"
|
||||
DEFAULT_NET_EXT+=",availability_zone_filter,filter-validation,empty-string-filtering,port-mac-address-regenerate"
|
||||
DEFAULT_NET_EXT+=",port-security-groups-filtering,fip-port-details,binding-extended"
|
||||
DEFAULT_NET_EXT+=",subnet_onboard,l3-port-ip-change-not-allowed,agent-resources-synced"
|
||||
DEFAULT_NET_EXT+=",floatingip-pools,rbac-security-groups,subnetpool-prefix-ops,router-admin-state-down-before-update"
|
||||
DEFAULT_NET_EXT+=",rbac-subnetpool,tag-ports-during-bulk-creation,stateful-security-group,address-group,extraroute-atomic"
|
||||
DEFAULT_NET_EXT+=",port-numa-affinity-policy,rbac-address-scope,security-groups-remote-address-group,trunk,trunk-details"
|
||||
DEFAULT_NET_EXT+=",rbac-address-group,port-device-profile"
|
||||
#New in Xena
|
||||
DEFAULT_NET_EXT+=",multiple-external-gateways,qos-pps-minimum,l3-ext-ndp-proxy,rbac-bgpvpn"
|
||||
DEFAULT_NET_EXT+=",qos-pps,ecmp_routes,bgp,floating-ip-port-forwarding-port-ranges"
|
||||
local network_api_extensions=${NETWORK_API_EXTENSIONS:-$DEFAULT_NET_EXT}
|
||||
if [[ ! -z "$DISABLE_NETWORK_API_EXTENSIONS" ]]; then
|
||||
# Enabled extensions are either the ones explicitly specified or those available on the API endpoint
|
||||
network_api_extensions=${NETWORK_API_EXTENSIONS:-$(iniget $tmp_cfg_file network-feature-enabled api_extensions | tr -d " ")}
|
||||
@@ -672,7 +767,10 @@ function configure_tempest {
|
||||
fi
|
||||
iniset $TEMPEST_CONFIG network-feature-enabled api_extensions $network_api_extensions
|
||||
# Swift API Extensions
|
||||
local object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-"all"}
|
||||
DEFAULT_SWIFT_OPT="account_quotas,bulk_delete,bulk_upload,container_quotas"
|
||||
DEFAULT_SWIFT_OPT+=",container_sync,crossdomain,formpost,ratelimit,slo"
|
||||
DEFAULT_SWIFT_OPT+=",staticweb,tempauth,tempurl,versioned_writes"
|
||||
local object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-$DEFAULT_SWIFT_OPT}
|
||||
if [[ ! -z "$DISABLE_OBJECT_STORAGE_API_EXTENSIONS" ]]; then
|
||||
# Enabled extensions are either the ones explicitly specified or those available on the API endpoint
|
||||
object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-$(iniget $tmp_cfg_file object-storage-feature-enabled discoverable_apis | tr -d " ")}
|
||||
@@ -681,7 +779,20 @@ function configure_tempest {
|
||||
fi
|
||||
iniset $TEMPEST_CONFIG object-storage-feature-enabled discoverable_apis $object_storage_api_extensions
|
||||
# Cinder API Extensions
|
||||
local volume_api_extensions=${VOLUME_API_EXTENSIONS:-"all"}
|
||||
DEFAULT_VOL_EXT="OS-SCH-HNT,backups,capabilities,cgsnapshots,consistencygroups"
|
||||
DEFAULT_VOL_EXT+=",encryption,os-admin-actions,os-availability-zone"
|
||||
DEFAULT_VOL_EXT+=",os-extended-services,os-extended-snapshot-attributes"
|
||||
DEFAULT_VOL_EXT+=",os-hosts,os-quota-class-sets,os-quota-sets"
|
||||
DEFAULT_VOL_EXT+=",os-services,os-snapshot-actions,os-snapshot-manage"
|
||||
DEFAULT_VOL_EXT+=",os-snapshot-unmanage,os-types-extra-specs,os-types-manage"
|
||||
DEFAULT_VOL_EXT+=",os-used-limits,os-vol-host-attr,os-vol-image-meta"
|
||||
DEFAULT_VOL_EXT+=",os-vol-mig-status-attr,os-vol-tenant-attr,os-volume-actions"
|
||||
DEFAULT_VOL_EXT+=",os-volume-encryption-metadata,os-volume-manage"
|
||||
DEFAULT_VOL_EXT+=",os-volume-transfer,os-volume-type-access"
|
||||
DEFAULT_VOL_EXT+=",os-volume-unmanage,qos-specs,scheduler-stats"
|
||||
|
||||
local volume_api_extensions=${VOLUME_API_EXTENSIONS:-$DEFAULT_VOL_EXT}
|
||||
|
||||
if [[ ! -z "$DISABLE_VOLUME_API_EXTENSIONS" ]]; then
|
||||
# Enabled extensions are either the ones explicitly specified or those available on the API endpoint
|
||||
volume_api_extensions=${VOLUME_API_EXTENSIONS:-$(iniget $tmp_cfg_file volume-feature-enabled api_extensions | tr -d " ")}
|
||||
@@ -697,7 +808,12 @@ function configure_tempest {
|
||||
# install_tempest() - Collect source and prepare
|
||||
function install_tempest {
|
||||
git_clone $TEMPEST_REPO $TEMPEST_DIR $TEMPEST_BRANCH
|
||||
pip_install 'tox!=2.8.0'
|
||||
# NOTE(gmann): Pinning tox<4.0.0 for stable/zed and lower. Tox 4.0.0
|
||||
# released after zed was released and has some incompatible changes
|
||||
# and it is ok not to fix the issues caused by tox 4.0.0 in stable
|
||||
# beanches jobs. We can continue testing the stable/zed and lower
|
||||
# branches with tox<4.0.0
|
||||
pip_install 'tox!=2.8.0,<4.0.0'
|
||||
pushd $TEMPEST_DIR
|
||||
# NOTE(gmann): checkout the TEMPEST_BRANCH in case TEMPEST_BRANCH
|
||||
# is tag name not master. git_clone would not checkout tag because
|
||||
|
||||
@@ -169,7 +169,7 @@ default_md = default
|
||||
|
||||
[ req ]
|
||||
default_bits = 1024
|
||||
default_md = sha1
|
||||
default_md = sha256
|
||||
|
||||
prompt = no
|
||||
distinguished_name = req_distinguished_name
|
||||
@@ -261,7 +261,7 @@ function make_cert {
|
||||
if [ ! -r "$ca_dir/$cert_name.crt" ]; then
|
||||
# Generate a signing request
|
||||
$OPENSSL req \
|
||||
-sha1 \
|
||||
-sha256 \
|
||||
-newkey rsa \
|
||||
-nodes \
|
||||
-keyout $ca_dir/private/$cert_name.key \
|
||||
@@ -301,7 +301,7 @@ function make_int_CA {
|
||||
if [ ! -r "$ca_dir/cacert.pem" ]; then
|
||||
# Create a signing certificate request
|
||||
$OPENSSL req -config $ca_dir/ca.conf \
|
||||
-sha1 \
|
||||
-sha256 \
|
||||
-newkey rsa \
|
||||
-nodes \
|
||||
-keyout $ca_dir/private/cacert.key \
|
||||
|
||||
@@ -5,4 +5,10 @@
|
||||
bindep_profile: test
|
||||
bindep_dir: "{{ zuul_work_dir }}"
|
||||
- test-setup
|
||||
- ensure-tox
|
||||
# NOTE(gmann): Pinning tox<4.0.0 for stable/zed and lower. Tox 4.0.0
|
||||
# released after zed was released and has some incompatible changes
|
||||
# and it is ok not to fix the issues caused by tox 4.0.0 in stable
|
||||
# beanches jobs. We can continue testing the stable/zed and lower
|
||||
# branches with tox<4.0.0
|
||||
- role: ensure-tox
|
||||
ensure_tox_version: "<4"
|
||||
|
||||
@@ -6,6 +6,12 @@
|
||||
bindep_profile: test
|
||||
bindep_dir: "{{ zuul_work_dir }}"
|
||||
- test-setup
|
||||
- ensure-tox
|
||||
# NOTE(gmann): Pinning tox<4.0.0 for stable/zed and lower. Tox 4.0.0
|
||||
# released after zed was released and has some incompatible changes
|
||||
# and it is ok not to fix the issues caused by tox 4.0.0 in stable
|
||||
# beanches jobs. We can continue testing the stable/zed and lower
|
||||
# branches with tox<4.0.0
|
||||
- role: ensure-tox
|
||||
ensure_tox_version: "<4"
|
||||
- get-devstack-os-environment
|
||||
- tox
|
||||
|
||||
@@ -43,9 +43,9 @@
|
||||
base_branch={{ devstack_sources_branch }}
|
||||
if git branch -a | grep "$base_branch" > /dev/null ; then
|
||||
git checkout $base_branch
|
||||
elif [[ "$base_branch" == stable/* ]]; then
|
||||
elif [[ "$base_branch" == stable/* ]] || [[ "$base_branch" == unmaintained/* ]]; then
|
||||
# Look for an eol tag for the stable branch.
|
||||
eol_tag=${base_branch#stable/}-eol
|
||||
eol_tag="${base_branch#*/}-eol"
|
||||
if git tag -l |grep $eol_tag >/dev/null; then
|
||||
git checkout $eol_tag
|
||||
git reset --hard $eol_tag
|
||||
|
||||
@@ -227,7 +227,7 @@ write_devstack_version
|
||||
|
||||
# Warn users who aren't on an explicitly supported distro, but allow them to
|
||||
# override check and attempt installation with ``FORCE=yes ./stack``
|
||||
SUPPORTED_DISTROS="focal|f34|opensuse-15.2|opensuse-tumbleweed|rhel8"
|
||||
SUPPORTED_DISTROS="focal|f34|opensuse-15.2|opensuse-tumbleweed|rhel8|rhel9"
|
||||
|
||||
if [[ ! ${DISTRO} =~ $SUPPORTED_DISTROS ]]; then
|
||||
echo "WARNING: this script has not been tested on $DISTRO"
|
||||
@@ -300,13 +300,26 @@ function _install_epel {
|
||||
}
|
||||
|
||||
function _install_rdo {
|
||||
if [[ "$TARGET_BRANCH" == "master" ]]; then
|
||||
# rdo-release.el8.rpm points to latest RDO release, use that for master
|
||||
sudo dnf -y install https://rdoproject.org/repos/rdo-release.el8.rpm
|
||||
else
|
||||
# For stable branches use corresponding release 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
|
||||
if [[ $DISTRO == "rhel8" ]]; then
|
||||
if [[ "$TARGET_BRANCH" == "master" ]]; then
|
||||
# rdo-release.el8.rpm points to latest RDO release, use that for master
|
||||
sudo dnf -y install https://rdoproject.org/repos/rdo-release.el8.rpm
|
||||
else
|
||||
# For stable branches use corresponding release 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
|
||||
if [[ "$TARGET_BRANCH" == "master" ]]; then
|
||||
# rdo-release.el9.rpm points to latest RDO release, use that for master
|
||||
sudo dnf -y install https://rdoproject.org/repos/rdo-release.el9.rpm
|
||||
else
|
||||
# RDO didn't publish official releases for Xena and Wallaby, only RDO Trunk repos.
|
||||
# Since the RDO Trunk server does not support EMS, FIPS jobs will fail to use it.
|
||||
# Use "rdo-release-yoga" release rpm for both xena and wallaby jobs.
|
||||
rdo_release="yoga"
|
||||
sudo dnf -y install https://rdoproject.org/repos/openstack-${rdo_release}/rdo-release-${rdo_release}.el9.rpm
|
||||
fi
|
||||
fi
|
||||
sudo dnf -y update
|
||||
}
|
||||
@@ -385,6 +398,10 @@ if [[ $DISTRO == "rhel8" ]]; then
|
||||
# RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1154272
|
||||
# Patch: https://github.com/rpm-software-management/dnf/pull/1448
|
||||
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
|
||||
|
||||
# Ensure python is installed
|
||||
|
||||
@@ -13,15 +13,15 @@ RC_DIR=$(cd $(dirname "${BASH_SOURCE:-$0}") && pwd)
|
||||
# Source required DevStack functions and globals
|
||||
source $RC_DIR/functions
|
||||
|
||||
# Set the target branch. This is used so that stable branching
|
||||
# Set the target branch. This is used so that unmaintained branching
|
||||
# does not need to update each repo below.
|
||||
TARGET_BRANCH=master
|
||||
TARGET_BRANCH=unmaintained/xena
|
||||
|
||||
# Cycle trailing projects need to branch later than the others.
|
||||
TRAILING_TARGET_BRANCH=master
|
||||
|
||||
# And some repos do not create stable branches, so this is used
|
||||
# to make it explicit and avoid accidentally setting to a stable
|
||||
# And some repos do not create unmaintained branches, so this is used
|
||||
# to make it explicit and avoid accidentally setting to an unmaintained
|
||||
# branch.
|
||||
BRANCHLESS_TARGET_BRANCH=master
|
||||
|
||||
@@ -205,6 +205,11 @@ ADDITIONAL_VENV_PACKAGES=${ADITIONAL_VENV_PACKAGES:-""}
|
||||
# (currently only implemented for MySQL backend)
|
||||
DATABASE_QUERY_LOGGING=$(trueorfalse False DATABASE_QUERY_LOGGING)
|
||||
|
||||
# This can be used to reduce the amount of memory mysqld uses while running.
|
||||
# These are unscientifically determined, and could reduce performance or
|
||||
# cause other issues.
|
||||
MYSQL_REDUCE_MEMORY=$(trueorfalse False MYSQL_REDUCE_MEMORY)
|
||||
|
||||
# Set a timeout for git operations. If git is still running when the
|
||||
# timeout expires, the command will be retried up to 3 times. This is
|
||||
# in the format for timeout(1);
|
||||
|
||||
@@ -95,19 +95,7 @@ function test_libs_exist {
|
||||
echo "test_libs_exist PASSED"
|
||||
}
|
||||
|
||||
function test_branch_master {
|
||||
for lib in $ALL_LIBS; do
|
||||
if [[ ${GITBRANCH[$lib]} != "master" ]]; then
|
||||
echo "GITBRANCH for $lib not master (${GITBRANCH[$lib]})"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "test_branch_master PASSED"
|
||||
}
|
||||
|
||||
set -o errexit
|
||||
|
||||
test_libs_exist
|
||||
test_branch_master
|
||||
test_all_libs_upto_date
|
||||
|
||||
@@ -167,6 +167,8 @@ function fixup_ubuntu {
|
||||
# overwriting works. So this hacks around those packages that
|
||||
# have been dragged in by some other system dependency
|
||||
sudo rm -rf /usr/lib/python3/dist-packages/PyYAML-*.egg-info
|
||||
sudo rm -rf /usr/lib/python3/dist-packages/pyasn1_modules-*.egg-info
|
||||
sudo rm -rf /usr/lib/python3/dist-packages/simplejson-*.egg-info
|
||||
}
|
||||
|
||||
function fixup_all {
|
||||
|
||||
+21
-12
@@ -38,7 +38,7 @@ FILES=$TOP_DIR/files
|
||||
# [1] https://opendev.org/openstack/project-config/src/branch/master/nodepool/elements/cache-devstack/source-repository-pip
|
||||
|
||||
PIP_GET_PIP_URL=${PIP_GET_PIP_URL:-"https://bootstrap.pypa.io/get-pip.py"}
|
||||
LOCAL_PIP="$FILES/$(basename $PIP_GET_PIP_URL)"
|
||||
PIP_GET_PIP36_URL=${PIP_GET_PIP36_URL:-"https://bootstrap.pypa.io/pip/3.6/get-pip.py"}
|
||||
|
||||
GetDistro
|
||||
echo "Distro: $DISTRO"
|
||||
@@ -57,12 +57,21 @@ function get_versions {
|
||||
|
||||
|
||||
function install_get_pip {
|
||||
if [[ "$PYTHON3_VERSION" = "3.6" ]]; then
|
||||
_pip_url=$PIP_GET_PIP36_URL
|
||||
_local_pip="$FILES/$(basename $_pip_url)-py36"
|
||||
else
|
||||
_pip_url=$PIP_GET_PIP_URL
|
||||
_local_pip="$FILES/$(basename $_pip_url)"
|
||||
fi
|
||||
|
||||
|
||||
# If get-pip.py isn't python, delete it. This was probably an
|
||||
# outage on the server.
|
||||
if [[ -r $LOCAL_PIP ]]; then
|
||||
if ! head -1 $LOCAL_PIP | grep -q '#!/usr/bin/env python'; then
|
||||
echo "WARNING: Corrupt $LOCAL_PIP found removing"
|
||||
rm $LOCAL_PIP
|
||||
if [[ -r $_local_pip ]]; then
|
||||
if ! head -1 $_local_pip | grep -q '#!/usr/bin/env python'; then
|
||||
echo "WARNING: Corrupt $_local_pip found removing"
|
||||
rm $_local_pip
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -76,20 +85,20 @@ function install_get_pip {
|
||||
# Thus we use curl's "-z" feature to always check the modified
|
||||
# since and only download if a new version is out -- but only if
|
||||
# it seems we downloaded the file originally.
|
||||
if [[ ! -r $LOCAL_PIP || -r $LOCAL_PIP.downloaded ]]; then
|
||||
if [[ ! -r $_local_pip || -r $_local_pip.downloaded ]]; then
|
||||
# only test freshness if LOCAL_PIP is actually there,
|
||||
# otherwise we generate a scary warning.
|
||||
local timecond=""
|
||||
if [[ -r $LOCAL_PIP ]]; then
|
||||
timecond="-z $LOCAL_PIP"
|
||||
if [[ -r $_local_pip ]]; then
|
||||
timecond="-z $_local_pip"
|
||||
fi
|
||||
|
||||
curl -f --retry 6 --retry-delay 5 \
|
||||
$timecond -o $LOCAL_PIP $PIP_GET_PIP_URL || \
|
||||
$timecond -o $_local_pip $_pip_url || \
|
||||
die $LINENO "Download of get-pip.py failed"
|
||||
touch $LOCAL_PIP.downloaded
|
||||
touch $_local_pip.downloaded
|
||||
fi
|
||||
sudo -H -E python${PYTHON3_VERSION} $LOCAL_PIP
|
||||
sudo -H -E python${PYTHON3_VERSION} $_local_pip
|
||||
}
|
||||
|
||||
|
||||
@@ -118,7 +127,7 @@ if [[ -n $PYPI_ALTERNATIVE_URL ]]; then
|
||||
configure_pypi_alternative_url
|
||||
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
|
||||
# Fedora 34 any more.
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1988935
|
||||
|
||||
@@ -35,7 +35,7 @@ commands = bash -c "find {toxinidir} \
|
||||
|
||||
[testenv:docs]
|
||||
deps =
|
||||
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
||||
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/xena}
|
||||
-r{toxinidir}/doc/requirements.txt
|
||||
allowlist_externals = bash
|
||||
setenv =
|
||||
|
||||
@@ -185,3 +185,8 @@ fi
|
||||
|
||||
clean_pyc_files
|
||||
rm -Rf $DEST/async
|
||||
|
||||
# Clean any safe.directory items we wrote into the global
|
||||
# gitconfig. We can identify the relevant ones by checking that they
|
||||
# point to somewhere in our $DEST directory.
|
||||
sudo sed -i "\+directory = ${DEST}+ d" /etc/gitconfig
|
||||
|
||||
Reference in New Issue
Block a user