Merge "Use venv module for PROJECT_VENV building"
diff --git a/.zuul.yaml b/.zuul.yaml
index b5477d1..2fbfa04 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -441,7 +441,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-jammy
+ nodeset: openstack-single-node-noble
required-projects:
- opendev.org/openstack/requirements
vars:
@@ -688,7 +688,7 @@
- job:
name: devstack-multinode
parent: devstack
- nodeset: openstack-two-node-jammy
+ nodeset: openstack-two-node-noble
description: |
Simple multinode test to verify multinode functionality on devstack side.
This is not meant to be used as a parent job.
@@ -729,18 +729,18 @@
configure_swap_size: 4096
- job:
- name: devstack-platform-ubuntu-noble
+ name: devstack-platform-ubuntu-jammy
parent: tempest-full-py3
- description: Ubuntu 24.04 LTS (noble) platform test
- nodeset: openstack-single-node-noble
+ description: Ubuntu 22.04 LTS (Jammy) platform test
+ nodeset: openstack-single-node-jammy
timeout: 9000
vars:
configure_swap_size: 8192
- job:
- name: devstack-platform-ubuntu-jammy-ovn-source
- parent: devstack-platform-ubuntu-jammy
- description: Ubuntu 22.04 LTS (jammy) platform test (OVN from source)
+ name: devstack-platform-ubuntu-noble-ovn-source
+ parent: devstack-platform-ubuntu-noble
+ description: Ubuntu 24.04 LTS (noble) platform test (OVN from source)
voting: false
vars:
devstack_localrc:
@@ -750,10 +750,10 @@
OVS_SYSCONFDIR: "/usr/local/etc/openvswitch"
- job:
- name: devstack-platform-ubuntu-jammy-ovs
+ name: devstack-platform-ubuntu-noble-ovs
parent: tempest-full-py3
- description: Ubuntu 22.04 LTS (jammy) platform test (OVS)
- nodeset: openstack-single-node-jammy
+ description: Ubuntu 24.04 LTS (noble) platform test (OVS)
+ nodeset: openstack-single-node-noble
voting: false
timeout: 9000
vars:
@@ -855,7 +855,7 @@
- job:
name: devstack-unit-tests
- nodeset: ubuntu-jammy
+ nodeset: ubuntu-noble
description: |
Runs unit tests on devstack project.
@@ -875,9 +875,9 @@
- devstack-platform-centos-9-stream
- devstack-platform-debian-bookworm
- devstack-platform-rocky-blue-onyx
- - devstack-platform-ubuntu-jammy-ovn-source
- - devstack-platform-ubuntu-jammy-ovs
- - devstack-platform-ubuntu-noble
+ - devstack-platform-ubuntu-noble-ovn-source
+ - devstack-platform-ubuntu-noble-ovs
+ - devstack-platform-ubuntu-jammy
- devstack-multinode
- devstack-unit-tests
- openstack-tox-bashate
@@ -956,15 +956,6 @@
# things, this job is not experimental but often is used to test
# things that are not yet production ready or to test what will be
# the new default after a deprecation period has ended.
- # * neutron-fullstack-with-uwsgi: maintained by neutron for fullstack test
- # when neutron-api is served by uwsgi, it's in exprimental for testing.
- # the next cycle we can remove this job if things turn out to be
- # stable enough.
- # * neutron-functional-with-uwsgi: maintained by neutron for functional
- # test. Next cycle we can remove this one if things turn out to be
- # stable engouh with uwsgi.
- # * neutron-ovn-tempest-with-uwsgi: maintained by neutron for tempest test.
- # Next cycle we can remove this if everything run out stable enough.
# * nova-multi-cell: maintained by nova and now is voting in the
# check queue for nova changes but relies on devstack configuration
@@ -972,9 +963,6 @@
jobs:
- nova-multi-cell
- nova-next
- - neutron-fullstack-with-uwsgi
- - neutron-functional-with-uwsgi
- - neutron-ovn-tempest-with-uwsgi
- devstack-plugin-ceph-tempest-py3:
irrelevant-files:
- ^.*\.rst$
@@ -1004,6 +992,6 @@
- devstack-platform-centos-9-stream
- devstack-platform-debian-bookworm
- devstack-platform-rocky-blue-onyx
- - devstack-platform-ubuntu-jammy-ovn-source
- - devstack-platform-ubuntu-jammy-ovs
- - devstack-platform-ubuntu-noble
+ - devstack-platform-ubuntu-noble-ovn-source
+ - devstack-platform-ubuntu-noble-ovs
+ - devstack-platform-ubuntu-jammy
diff --git a/clean.sh b/clean.sh
index 6a31cc6..092f557 100755
--- a/clean.sh
+++ b/clean.sh
@@ -40,7 +40,7 @@
source $TOP_DIR/lib/tls
-source $TOP_DIR/lib/oslo
+source $TOP_DIR/lib/libraries
source $TOP_DIR/lib/lvm
source $TOP_DIR/lib/horizon
source $TOP_DIR/lib/keystone
diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst
index 9a1fd4e..3cfba71 100644
--- a/doc/source/configuration.rst
+++ b/doc/source/configuration.rst
@@ -323,7 +323,7 @@
[[local|localrc]]
DEST=/opt/stack/
- LOGFILE=$LOGDIR/stack.sh.log
+ LOGFILE=$DEST/stack.sh.log
LOG_COLOR=False
Database Backend
diff --git a/doc/source/plugin-registry.rst b/doc/source/plugin-registry.rst
index 8b9d1f2..2984a5c 100644
--- a/doc/source/plugin-registry.rst
+++ b/doc/source/plugin-registry.rst
@@ -31,6 +31,7 @@
openstack/cloudkitty `https://opendev.org/openstack/cloudkitty <https://opendev.org/openstack/cloudkitty>`__
openstack/cyborg `https://opendev.org/openstack/cyborg <https://opendev.org/openstack/cyborg>`__
openstack/designate `https://opendev.org/openstack/designate <https://opendev.org/openstack/designate>`__
+openstack/designate-tempest-plugin `https://opendev.org/openstack/designate-tempest-plugin <https://opendev.org/openstack/designate-tempest-plugin>`__
openstack/devstack-plugin-amqp1 `https://opendev.org/openstack/devstack-plugin-amqp1 <https://opendev.org/openstack/devstack-plugin-amqp1>`__
openstack/devstack-plugin-ceph `https://opendev.org/openstack/devstack-plugin-ceph <https://opendev.org/openstack/devstack-plugin-ceph>`__
openstack/devstack-plugin-container `https://opendev.org/openstack/devstack-plugin-container <https://opendev.org/openstack/devstack-plugin-container>`__
diff --git a/inc/python b/inc/python
index 2083b74..bd58905 100644
--- a/inc/python
+++ b/inc/python
@@ -40,11 +40,8 @@
# Using system site packages to enable nova to use libguestfs.
# This package is currently installed via the distro and not
# available on pypi.
- python$PYTHON3_VERSION -m venv --system-site-packages $DEVSTACK_VENV
- pip_install -U pip setuptools
- #NOTE(rpittau): workaround for simplejson removal in osc
- # https://review.opendev.org/c/openstack/python-openstackclient/+/920001
- pip_install -U simplejson
+ $PYTHON -m venv --system-site-packages "${DEVSTACK_VENV}"
+ pip_install -U pip setuptools[core]
fi
if [[ ":$PATH:" != *":$DEVSTACK_VENV/bin:"* ]] ; then
export PATH="$DEVSTACK_VENV/bin:$PATH"
@@ -199,13 +196,7 @@
echo "Using python $PYTHON3_VERSION to install $package_dir"
else
local cmd_pip="python$PYTHON3_VERSION -m pip"
- # See
- # https://github.com/pypa/setuptools/issues/2232
- # http://lists.openstack.org/pipermail/openstack-discuss/2020-August/016905.html
- # this makes setuptools >=50 use the platform distutils.
- # We only want to do this on global pip installs, not if
- # installing in a virtualenv
- local sudo_pip="sudo -H LC_ALL=en_US.UTF-8 SETUPTOOLS_USE_DISTUTILS=stdlib "
+ local sudo_pip="sudo -H LC_ALL=en_US.UTF-8"
echo "Using python $PYTHON3_VERSION to install $package_dir"
fi
diff --git a/lib/apache b/lib/apache
index 1420f76..1c034d3 100644
--- a/lib/apache
+++ b/lib/apache
@@ -293,6 +293,8 @@
iniset "$conf" uwsgi add-header "Connection: close"
# This ensures that file descriptors aren't shared between processes.
iniset "$conf" uwsgi lazy-apps true
+ # Starting time of the WSGi server
+ iniset "$conf" uwsgi start-time %t
# If we said bind directly to http, then do that and don't start the apache proxy
if [[ -n "$http" ]]; then
@@ -367,6 +369,8 @@
iniset "$conf" uwsgi http-keepalive false
# Increase socket timeout for slow chunked uploads
iniset "$conf" uwsgi socket-timeout 30
+ # Starting time of the WSGi server
+ iniset "$conf" uwsgi start-time %t
enable_apache_mod proxy
enable_apache_mod proxy_http
diff --git a/lib/cinder b/lib/cinder
index 259018e..b557d4b 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -62,7 +62,7 @@
CINDER_CONF_DIR=/etc/cinder
CINDER_CONF=$CINDER_CONF_DIR/cinder.conf
-CINDER_UWSGI=$CINDER_BIN_DIR/cinder-wsgi
+CINDER_UWSGI=cinder.wsgi.api:application
CINDER_UWSGI_CONF=$CINDER_CONF_DIR/cinder-api-uwsgi.ini
CINDER_API_PASTE_INI=$CINDER_CONF_DIR/api-paste.ini
@@ -404,7 +404,7 @@
setup_logging $CINDER_CONF
if is_service_enabled c-api; then
- write_uwsgi_config "$CINDER_UWSGI_CONF" "$CINDER_UWSGI" "/volume"
+ write_uwsgi_config "$CINDER_UWSGI_CONF" "$CINDER_UWSGI" "/volume" "" "cinder-api"
fi
if [[ -r $CINDER_PLUGINS/$CINDER_DRIVER ]]; then
diff --git a/lib/databases/mysql b/lib/databases/mysql
index e069e12..629014c 100644
--- a/lib/databases/mysql
+++ b/lib/databases/mysql
@@ -104,10 +104,10 @@
# Set the root password - only works the first time. For Ubuntu, we already
# did that with debconf before installing the package, but we still try,
# because the package might have been installed already. We don't do this
- # for Ubuntu 22.04 (jammy) because the authorization model change in
+ # for Ubuntu 22.04+ because the authorization model change in
# version 10.4 of mariadb. See
# https://mariadb.org/authentication-in-mariadb-10-4/
- if ! (is_ubuntu && [[ "$DISTRO" == "jammy" ]] && [ "$MYSQL_SERVICE_NAME" == "mariadb" ]); then
+ if ! (is_ubuntu && [[ ! "$DISTRO" =~ bookworm|bullseye ]] && [ "$MYSQL_SERVICE_NAME" == "mariadb" ]); then
sudo mysqladmin -u root password $DATABASE_PASSWORD || true
fi
@@ -124,16 +124,11 @@
# we need to change auth plugin for root user
# TODO(frickler): simplify this logic
if is_ubuntu && [[ ! "$DISTRO" =~ bookworm|bullseye ]] && [ "$MYSQL_SERVICE_NAME" == "mariadb" ]; then
- if [[ "$DISTRO" == "jammy" ]]; then
- # For Ubuntu 22.04 (jammy) we follow the model outlined in
- # https://mariadb.org/authentication-in-mariadb-10-4/
- sudo mysql -e "ALTER USER $DATABASE_USER@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD('$DATABASE_PASSWORD');"
- else
- sudo mysql $cmd_args -e "UPDATE mysql.user SET plugin='' WHERE user='$DATABASE_USER' AND host='localhost';"
- sudo mysql $cmd_args -e "FLUSH PRIVILEGES;"
- fi
+ # For Ubuntu 22.04+ we follow the model outlined in
+ # https://mariadb.org/authentication-in-mariadb-10-4/
+ sudo mysql -e "ALTER USER $DATABASE_USER@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD('$DATABASE_PASSWORD');"
fi
- if ! (is_ubuntu && [[ "$DISTRO" == "jammy" ]] && [ "$MYSQL_SERVICE_NAME" == "mariadb" ]); then
+ if ! (is_ubuntu && [[ ! "$DISTRO" =~ bookworm|bullseye ]] && [ "$MYSQL_SERVICE_NAME" == "mariadb" ]); then
# Create DB user if it does not already exist
sudo mysql $cmd_args -e "CREATE USER IF NOT EXISTS '$DATABASE_USER'@'%' identified by '$DATABASE_PASSWORD';"
# Update the DB to give user '$DATABASE_USER'@'%' full control of the all databases:
diff --git a/lib/glance b/lib/glance
index 2eb4954..5c3643d 100644
--- a/lib/glance
+++ b/lib/glance
@@ -41,6 +41,12 @@
GLANCE_BIN_DIR=$(get_python_exec_prefix)
fi
+#S3 for Glance
+GLANCE_USE_S3=$(trueorfalse False GLANCE_USE_S3)
+GLANCE_S3_DEFAULT_BACKEND=${GLANCE_S3_DEFAULT_BACKEND:-s3_fast}
+GLANCE_S3_BUCKET_ON_PUT=$(trueorfalse True GLANCE_S3_BUCKET_ON_PUT)
+GLANCE_S3_BUCKET_NAME=${GLANCE_S3_BUCKET_NAME:-images}
+
# Cinder for Glance
USE_CINDER_FOR_GLANCE=$(trueorfalse False USE_CINDER_FOR_GLANCE)
# GLANCE_CINDER_DEFAULT_BACKEND should be one of the values
@@ -174,6 +180,34 @@
remove_uwsgi_config "$GLANCE_UWSGI_CONF" "glance-wsgi-api"
}
+# Set multiple s3 store related config options
+#
+function configure_multiple_s3_stores {
+ enabled_backends="${GLANCE_S3_DEFAULT_BACKEND}:s3"
+
+ iniset $GLANCE_API_CONF DEFAULT enabled_backends ${enabled_backends}
+ iniset $GLANCE_API_CONF glance_store default_backend $GLANCE_S3_DEFAULT_BACKEND
+}
+
+# Set common S3 store options to given config section
+#
+# Arguments:
+# config_section
+#
+function set_common_s3_store_params {
+ local config_section="$1"
+ openstack ec2 credential create
+ iniset $GLANCE_API_CONF $config_section s3_store_host "$SWIFT_SERVICE_PROTOCOL://$SERVICE_HOST:$S3_SERVICE_PORT"
+ iniset $GLANCE_API_CONF $config_section s3_store_access_key "$(openstack ec2 credential list -c Access -f value)"
+ iniset $GLANCE_API_CONF $config_section s3_store_secret_key "$(openstack ec2 credential list -c Secret -f value)"
+ iniset $GLANCE_API_CONF $config_section s3_store_create_bucket_on_put $GLANCE_S3_BUCKET_ON_PUT
+ iniset $GLANCE_API_CONF $config_section s3_store_bucket $GLANCE_S3_BUCKET_NAME
+ iniset $GLANCE_API_CONF $config_section s3_store_bucket_url_format "path"
+ if is_service_enabled tls-proxy; then
+ iniset $GLANCE_API_CONF $config_section s3_store_cacert $SSL_BUNDLE_FILE
+ fi
+}
+
# Set multiple cinder store related config options for each of the cinder store
#
function configure_multiple_cinder_stores {
@@ -258,7 +292,6 @@
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"
@@ -281,7 +314,7 @@
if [[ "$use_cinder_for_glance" == "True" ]]; then
# Configure multiple cinder stores for glance
configure_multiple_cinder_stores
- else
+ elif ! is_service_enabled s-proxy && [[ "$GLANCE_USE_S3" == "False" ]]; then
# Configure multiple file stores for glance
configure_multiple_file_stores
fi
@@ -360,8 +393,15 @@
# No multiple stores for swift yet
if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "False" ]]; then
- # Store the images in swift if enabled.
- if is_service_enabled s-proxy; then
+ # Return if s3api is enabled for glance
+ if [[ "$GLANCE_USE_S3" == "True" ]]; then
+ if is_service_enabled s3api; then
+ # set common glance_store parameters
+ iniset $GLANCE_API_CONF glance_store stores "s3,file,http"
+ iniset $GLANCE_API_CONF glance_store default_store s3
+ fi
+ elif is_service_enabled s-proxy; then
+ # Store the images in swift if enabled.
iniset $GLANCE_API_CONF glance_store default_store swift
iniset $GLANCE_API_CONF glance_store swift_store_create_container_on_put True
@@ -379,6 +419,12 @@
iniset $GLANCE_SWIFT_STORE_CONF ref1 auth_address $KEYSTONE_SERVICE_URI/v3
iniset $GLANCE_SWIFT_STORE_CONF ref1 auth_version 3
fi
+ else
+ if [[ "$GLANCE_USE_S3" == "True" ]]; then
+ if is_service_enabled s3api; then
+ configure_multiple_s3_stores
+ fi
+ fi
fi
# We need to tell glance what it's public endpoint is so that the version
@@ -484,6 +530,13 @@
configure_glance_quotas
fi
+ if is_service_enabled s3api && [[ "$GLANCE_USE_S3" == "True" ]]; then
+ if [[ "$GLANCE_ENABLE_MULTIPLE_STORES" == "False" ]]; then
+ set_common_s3_store_params glance_store
+ else
+ set_common_s3_store_params $GLANCE_S3_DEFAULT_BACKEND
+ fi
+ fi
fi
}
diff --git a/lib/infra b/lib/infra
index 2aad003..f4760c3 100644
--- a/lib/infra
+++ b/lib/infra
@@ -31,7 +31,7 @@
local PIP_VIRTUAL_ENV="$REQUIREMENTS_DIR/.venv"
[ ! -d $PIP_VIRTUAL_ENV ] && ${VIRTUALENV_CMD} $PIP_VIRTUAL_ENV
# We don't care about testing git pbr in the requirements venv.
- PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr setuptools
+ PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr setuptools[core]
PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install $REQUIREMENTS_DIR
# Unset the PIP_VIRTUAL_ENV so that PBR does not end up trapped
diff --git a/lib/keystone b/lib/keystone
index 8f4f4b1..76e2598 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -49,7 +49,7 @@
KEYSTONE_CONF_DIR=${KEYSTONE_CONF_DIR:-/etc/keystone}
KEYSTONE_CONF=$KEYSTONE_CONF_DIR/keystone.conf
KEYSTONE_PUBLIC_UWSGI_CONF=$KEYSTONE_CONF_DIR/keystone-uwsgi-public.ini
-KEYSTONE_PUBLIC_UWSGI=$KEYSTONE_BIN_DIR/keystone-wsgi-public
+KEYSTONE_PUBLIC_UWSGI=keystone.wsgi.api:application
# Select the Identity backend driver
KEYSTONE_IDENTITY_BACKEND=${KEYSTONE_IDENTITY_BACKEND:-sql}
@@ -226,7 +226,7 @@
iniset $KEYSTONE_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
- write_uwsgi_config "$KEYSTONE_PUBLIC_UWSGI_CONF" "$KEYSTONE_PUBLIC_UWSGI" "/identity"
+ write_uwsgi_config "$KEYSTONE_PUBLIC_UWSGI_CONF" "$KEYSTONE_PUBLIC_UWSGI" "/identity" "" "keystone-api"
iniset $KEYSTONE_CONF DEFAULT max_token_size 16384
diff --git a/lib/libraries b/lib/libraries
index 9ea3230..9d5d655 100755
--- a/lib/libraries
+++ b/lib/libraries
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# lib/oslo
+# lib/libraries
#
# Functions to install libraries from git
#
diff --git a/lib/oslo b/lib/oslo
deleted file mode 100644
index 3ae64c8..0000000
--- a/lib/oslo
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-#
-# lib/oslo
-#
-# Functions to install **Oslo** libraries from git
-#
-# We need this to handle the fact that projects would like to use
-# pre-released versions of oslo libraries.
-#
-# Included for compatibility with grenade, remove in Queens
-source $TOP_DIR/lib/libraries
diff --git a/lib/placement b/lib/placement
index 6297ab2..03aaa03 100644
--- a/lib/placement
+++ b/lib/placement
@@ -37,7 +37,7 @@
else
PLACEMENT_BIN_DIR=$(get_python_exec_prefix)
fi
-PLACEMENT_UWSGI=$PLACEMENT_BIN_DIR/placement-api
+PLACEMENT_UWSGI=placement.wsgi.api:application
PLACEMENT_UWSGI_CONF=$PLACEMENT_CONF_DIR/placement-uwsgi.ini
if is_service_enabled tls-proxy; then
@@ -86,7 +86,7 @@
sudo install -d -o $STACK_USER $PLACEMENT_CONF_DIR
create_placement_conf
- write_uwsgi_config "$PLACEMENT_UWSGI_CONF" "$PLACEMENT_UWSGI" "/placement"
+ write_uwsgi_config "$PLACEMENT_UWSGI_CONF" "$PLACEMENT_UWSGI" "/placement" "" "placement-api"
if [[ "$PLACEMENT_ENFORCE_SCOPE" == "True" || "$ENFORCE_SCOPE" == "True" ]]; then
iniset $PLACEMENT_CONF oslo_policy enforce_new_defaults True
iniset $PLACEMENT_CONF oslo_policy enforce_scope True
diff --git a/stack.sh b/stack.sh
index dcfd398..bfa0573 100755
--- a/stack.sh
+++ b/stack.sh
@@ -308,8 +308,11 @@
# adding delorean-deps repo to provide current master rpms
sudo wget https://trunk.rdoproject.org/centos9-master/delorean-deps.repo -O /etc/yum.repos.d/delorean-deps.repo
else
- # For stable/unmaintained branches use corresponding release rpm
- sudo dnf -y install centos-release-openstack-${rdo_release}
+ if sudo dnf provides centos-release-openstack-${rdo_release} >/dev/null 2>&1; then
+ sudo dnf -y install centos-release-openstack-${rdo_release}
+ else
+ sudo wget https://trunk.rdoproject.org/centos9-${rdo_release}/delorean-deps.repo -O /etc/yum.repos.d/delorean-deps.repo
+ fi
fi
fi
sudo dnf -y update