diff --git a/README.rst b/README.rst
index 4af919296e..a8cf66238f 100644
--- a/README.rst
+++ b/README.rst
@@ -133,7 +133,7 @@ Kolla provides images to deploy the following infrastructure components:
direct messaging back end for communication between services.
- `RabbitMQ `__ as a broker messaging back end for
communication between services.
-- `Redis Sentinel `__ provides high availability for redis
+- `Valkey Sentinel `__ provides high availability for valkey
along with collateral tasks such as monitoring, notification and acts as configuration
provider for clients.
- `Telegraf `__ as a plugin-driven server
diff --git a/doc/source/matrix_aarch64.csv b/doc/source/matrix_aarch64.csv
index 028bba2c21..04e94f1690 100644
--- a/doc/source/matrix_aarch64.csv
+++ b/doc/source/matrix_aarch64.csv
@@ -46,11 +46,11 @@ ovsdpdk,N,U,U
placement,U,U,U
prometheus,U,U,U
rabbitmq,U,U,U
-redis,U,U,U
skyline,U,U,U
tacker,U,U,U
telegraf,N,N,N
tgtd,U,U,U
trove,U,U,U
+valkey,U,U,U
watcher,U,U,U
zun,U,U,U
diff --git a/doc/source/matrix_x86.csv b/doc/source/matrix_x86.csv
index 14c37597dc..738475b61f 100644
--- a/doc/source/matrix_x86.csv
+++ b/doc/source/matrix_x86.csv
@@ -47,12 +47,12 @@ ovsdpdk,N,U,U
placement,T,T,T
prometheus,U,U,U
rabbitmq,T,T,T
-redis,T,U,U
skyline,U,U,U
swift,T,T,U
tacker,T,U,U
telegraf,U,U,U
tgtd,N,T,U
trove,U,U,U
+valkey,T,U,U
watcher,U,U,U
zun,T,T,U
diff --git a/doc/source/support_matrix.rst b/doc/source/support_matrix.rst
index 48338af6f9..445ed08c63 100644
--- a/doc/source/support_matrix.rst
+++ b/doc/source/support_matrix.rst
@@ -18,7 +18,7 @@ The following base container images are supported:
Distribution Default base Default base tag
================== =============================== ================
Rocky Linux quay.io/rockylinux/rockylinux 10
-Debian Bookworm debian bookworm
+Debian Trixie debian trixie
Ubuntu Noble ubuntu 24.04
================== =============================== ================
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index 5ba1d5a874..53ef731cc9 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -187,12 +187,12 @@ RUN cat /tmp/kolla_bashrc >> /etc/bash.bashrc \
&& sed -i -e s/#*LAST_SYSTEM_UID=999/LAST_SYSTEM_UID=59999/g \
-e s/#*LAST_SYSTEM_GID=999/LAST_SYSTEM_GID=59999/g /etc/adduser.conf
+{# NOTE(mnasiadka): Ubuntu arm64 uses ports.ubuntu.com #}
{% block base_ubuntu_package_sources_list %}
-{% if base_distro == 'debian' or ( base_distro == 'ubuntu' and base_arch == 'x86_64' ) %}
-RUN rm -f /etc/apt/sources.list.d/{{ base_distro }}.sources
-COPY sources.list.{{ base_distro }} /etc/apt/sources.list
+{% if base_distro == "ubuntu" and base_arch == 'aarch64' %}
+COPY {{ base_distro }}.sources.arm64 /etc/apt/sources.list.d/{{ base_distro }}.sources
{% else %}
-COPY sources.list.{{ base_distro }}.{{ base_arch }} /etc/apt/sources.list
+COPY {{ base_distro }}.sources /etc/apt/sources.list.d/
{% endif %}
COPY sources.list /etc/apt/sources.list.d/kolla-custom.list
{% endblock %}
diff --git a/docker/base/apt_preferences.debian b/docker/base/apt_preferences.debian
index 5edb8814a4..08e21ff227 100644
--- a/docker/base/apt_preferences.debian
+++ b/docker/base/apt_preferences.debian
@@ -1,4 +1,4 @@
# NOTE(hrw): we do not want backports unless requested
Package: *
-Pin: release n=bookworm-backports
+Pin: release n=trixie-backports
Pin-Priority: -1000
diff --git a/docker/base/debian.sources b/docker/base/debian.sources
new file mode 100644
index 0000000000..28c61c81d4
--- /dev/null
+++ b/docker/base/debian.sources
@@ -0,0 +1,13 @@
+Types: deb
+# http://snapshot.debian.org/archive/debian/20251020T000000Z
+URIs: http://deb.debian.org/debian
+Suites: trixie trixie-updates trixie-backports
+Components: main
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
+
+Types: deb
+# http://snapshot.debian.org/archive/debian-security/20251020T000000Z
+URIs: http://deb.debian.org/debian-security
+Suites: trixie-security
+Components: main
+Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
diff --git a/docker/base/sources.list.debian b/docker/base/sources.list.debian
deleted file mode 100644
index 89f7a1160b..0000000000
--- a/docker/base/sources.list.debian
+++ /dev/null
@@ -1,11 +0,0 @@
-# Default repos
-deb http://deb.debian.org/debian bookworm main
-
-# debian security updates
-deb http://deb.debian.org/debian-security bookworm-security main
-
-# debian updates
-deb http://deb.debian.org/debian bookworm-updates main
-
-# debian backports
-deb http://deb.debian.org/debian bookworm-backports main
diff --git a/docker/base/sources.list.ubuntu b/docker/base/sources.list.ubuntu
deleted file mode 100644
index 6542433e39..0000000000
--- a/docker/base/sources.list.ubuntu
+++ /dev/null
@@ -1,15 +0,0 @@
-# For non-x86 architectures we use sources.list.ubuntu.
-
-# Default repos
-deb mirror://mirrors.ubuntu.com/mirrors.txt noble main universe
-deb mirror://mirrors.ubuntu.com/mirrors.txt noble-updates main universe
-deb mirror://mirrors.ubuntu.com/mirrors.txt noble-backports main universe
-deb mirror://mirrors.ubuntu.com/mirrors.txt noble-security main universe
-
-# We need to add the repo for the updated packages they provide. The main ones
-# are qemu, libvirt, and openvswitch.
-deb http://ubuntu-cloud.archive.canonical.com/ubuntu noble-updates/flamingo main
-
-# NOTE(hrw): extra repositories are added into image when they are needed as
-# separate files in /etc/apt/sources.list.d/ directory. For that purpose they
-# are defined in kolla/template/repos.yaml file.
diff --git a/docker/base/sources.list.ubuntu.aarch64 b/docker/base/sources.list.ubuntu.aarch64
deleted file mode 100644
index d4cfbe20f5..0000000000
--- a/docker/base/sources.list.ubuntu.aarch64
+++ /dev/null
@@ -1,15 +0,0 @@
-# Default repos
-deb http://ports.ubuntu.com/ noble main universe
-deb http://ports.ubuntu.com/ noble-updates main universe
-deb http://ports.ubuntu.com/ noble-security main universe
-
-# Backports have a lower priority and must be explicitly installed to be used
-deb http://ports.ubuntu.com/ noble-backports main universe
-
-# We need to add the repo for the updated packages they provide. The main ones
-# are qemu, libvirt, and openvswitch.
-deb http://ubuntu-cloud.archive.canonical.com/ubuntu noble-updates/flamingo main
-
-# NOTE(hrw): extra repositories are added into image when they are needed as
-# separate files in /etc/apt/sources.list.d/ directory. For that purpose they
-# are defined in kolla/template/repos.yaml file.
diff --git a/docker/base/ubuntu.sources b/docker/base/ubuntu.sources
new file mode 100644
index 0000000000..6e12fb58ce
--- /dev/null
+++ b/docker/base/ubuntu.sources
@@ -0,0 +1,24 @@
+Types: deb
+URIs: http://archive.ubuntu.com/ubuntu/
+Suites: noble noble-updates noble-backports
+Components: main universe
+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
+
+## Ubuntu security updates. Aside from URIs and Suites,
+## this should mirror your choices in the previous section.
+Types: deb
+URIs: http://security.ubuntu.com/ubuntu/
+Suites: noble-security
+Components: main universe
+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
+
+## Ubuntu Cloud Archive
+Types: deb
+URIs: http://ubuntu-cloud.archive.canonical.com/ubuntu
+Suites: noble-updates/flamingo
+Components: main
+Signed-By: /usr/share/keyrings/ubuntu-cloud-keyring.gpg
+
+# NOTE(hrw): extra repositories are added into image when they are needed as
+# separate files in /etc/apt/sources.list.d/ directory. For that purpose they
+# are defined in kolla/template/repos.yaml file.
diff --git a/docker/base/ubuntu.sources.arm64 b/docker/base/ubuntu.sources.arm64
new file mode 100644
index 0000000000..da3ecdfdab
--- /dev/null
+++ b/docker/base/ubuntu.sources.arm64
@@ -0,0 +1,24 @@
+Types: deb
+URIs: http://ports.ubuntu.com/ubuntu-ports/
+Suites: noble noble-updates noble-backports
+Components: main universe
+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
+
+## Ubuntu security updates. Aside from URIs and Suites,
+## this should mirror your choices in the previous section.
+Types: deb
+URIs: http://ports.ubuntu.com/ubuntu-ports/
+Suites: noble-security
+Components: main universe
+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
+
+## Ubuntu Cloud Archive
+Types: deb
+URIs: http://ubuntu-cloud.archive.canonical.com/ubuntu
+Suites: noble-updates/flamingo
+Components: main
+Signed-By: /usr/share/keyrings/ubuntu-cloud-keyring.gpg
+
+# NOTE(hrw): extra repositories are added into image when they are needed as
+# separate files in /etc/apt/sources.list.d/ directory. For that purpose they
+# are defined in kolla/template/repos.yaml file.
diff --git a/docker/httpd/Dockerfile.j2 b/docker/httpd/Dockerfile.j2
index 2b58e7b127..a414656611 100644
--- a/docker/httpd/Dockerfile.j2
+++ b/docker/httpd/Dockerfile.j2
@@ -22,8 +22,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'apache2',
'ca-certificates',
'libapache2-mod-auth-mellon',
- 'libapache2-mod-auth-openidc',
- 'libapache2-mod-proxy-uwsgi'
+ 'libapache2-mod-auth-openidc'
] %}
{% endif %}
diff --git a/docker/manila/manila-share/Dockerfile.j2 b/docker/manila/manila-share/Dockerfile.j2
index 35ff6b8f48..210d8b31c2 100644
--- a/docker/manila/manila-share/Dockerfile.j2
+++ b/docker/manila/manila-share/Dockerfile.j2
@@ -8,10 +8,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% import "macros.j2" as macros with context %}
{% if base_package_type == 'rpm' %}
-
-{# NOTE(mnasiadka): glusterfs-fuse missing in CentOS 10 Stream - temporarily from Kolla COPR #}
-{{ macros.enable_extra_repos(['ceph', 'epel', 'kolla_el10']) }}
-
{% set manila_share_packages = [
'ceph-common',
'sqlite',
diff --git a/docker/mariadb-server/Dockerfile.j2 b/docker/mariadb-server/Dockerfile.j2
index 8d17ff4ff9..af9297396a 100644
--- a/docker/mariadb-server/Dockerfile.j2
+++ b/docker/mariadb-server/Dockerfile.j2
@@ -9,19 +9,16 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.configure_user(name='mysql') }}
-{# NOTE(mnasiadka): Use AppStream version of MariaDB for now in CentOS #}
-
{% if base_package_type == 'rpm' %}
{# NOTE(mgoddard): EPEL required for pv package #}
-{{ macros.enable_extra_repos(['epel']) }}
+{{ macros.enable_extra_repos(['epel', 'mariadb']) }}
{% set mariadb_packages = [
'expect',
'mariadb',
'mariadb-backup',
'mariadb-server',
- 'mariadb-server-galera',
'pv',
'rsync',
'tar'
@@ -36,7 +33,10 @@ RUN ln -s /usr/lib64/galera-4 /usr/lib64/galera
'expect',
'mariadb-backup',
'mariadb-client',
- 'mariadb-server'
+ 'mariadb-server',
+ 'pv',
+ 'rsync',
+ 'tar'
] %}
{% endif %}
diff --git a/docker/neutron/neutron-base/Dockerfile.j2 b/docker/neutron/neutron-base/Dockerfile.j2
index e3d19178d4..956551fbda 100644
--- a/docker/neutron/neutron-base/Dockerfile.j2
+++ b/docker/neutron/neutron-base/Dockerfile.j2
@@ -78,6 +78,7 @@ RUN chmod +x /usr/local/lib/neutron-wrappers/copy-wrappers \
&& chmod +x /usr/local/lib/neutron-wrappers/delete-wrappers
RUN ln -s neutron-base-source/* neutron \
+ && {{ macros.upper_constraints_remove('networking-generic-switch') }} \
&& {{ macros.install_pip(neutron_base_pip_packages | customizable("pip_packages")) }} \
&& mkdir -p /etc/neutron \
&& cp -r /neutron/etc/* /etc/neutron/ \
diff --git a/docker/nova/nova-compute-ironic/Dockerfile.j2 b/docker/nova/nova-compute-ironic/Dockerfile.j2
index b248025c8c..c849dc18fc 100644
--- a/docker/nova/nova-compute-ironic/Dockerfile.j2
+++ b/docker/nova/nova-compute-ironic/Dockerfile.j2
@@ -7,7 +7,11 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% import "macros.j2" as macros with context %}
-{% set nova_compute_ironic_packages = ['xorriso', 'nvme-cli'] %}
+{% set nova_compute_ironic_packages = [
+ 'genisoimage',
+ 'nvme-cli',
+ 'xorriso'
+] %}
{{ macros.install_packages(nova_compute_ironic_packages | customizable("packages")) }}
diff --git a/docker/openstack-base/Dockerfile.j2 b/docker/openstack-base/Dockerfile.j2
index fafd405d55..85b1f4b002 100644
--- a/docker/openstack-base/Dockerfile.j2
+++ b/docker/openstack-base/Dockerfile.j2
@@ -44,7 +44,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'git',
'libapache2-mod-wsgi-py3',
'libffi-dev',
- 'libpcre3-dev',
+ 'libpcre2-dev',
'libpq-dev',
'libssl-dev',
'libxml2-dev',
diff --git a/docker/redis/redis-base/Dockerfile.j2 b/docker/redis/redis-base/Dockerfile.j2
deleted file mode 100644
index 89dccd2580..0000000000
--- a/docker/redis/redis-base/Dockerfile.j2
+++ /dev/null
@@ -1,17 +0,0 @@
-FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
-{% block labels %}
-LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
-{% endblock %}
-
-{% block redis_base_header %}{% endblock %}
-
-{% import "macros.j2" as macros with context %}
-
-{{ macros.configure_user(name='redis', homedir='/run/redis') }}
-
-COPY extend_start.sh /usr/local/bin/kolla_extend_start
-RUN chmod 644 /usr/local/bin/kolla_extend_start
-
-{{ macros.kolla_patch_sources() }}
-
-{% block redis_base_footer %}{% endblock %}
diff --git a/docker/redis/redis-base/extend_start.sh b/docker/redis/redis-base/extend_start.sh
deleted file mode 100644
index f5f12ac70f..0000000000
--- a/docker/redis/redis-base/extend_start.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-if [[ ! -d "/var/log/kolla/redis" ]]; then
- mkdir -p /var/log/kolla/redis
-fi
-
-if [[ $(stat -c %a /var/log/kolla/redis) != "755" ]]; then
- chmod 755 /var/log/kolla/redis
-fi
diff --git a/docker/redis/redis-sentinel/Dockerfile.j2 b/docker/redis/redis-sentinel/Dockerfile.j2
deleted file mode 100644
index 83fc60df05..0000000000
--- a/docker/redis/redis-sentinel/Dockerfile.j2
+++ /dev/null
@@ -1,25 +0,0 @@
-FROM {{ namespace }}/{{ image_prefix }}redis-base:{{ tag }}
-{% block labels %}
-LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
-{% endblock %}
-
-{% block redis_sentinel_header %}{% endblock %}
-
-{% import "macros.j2" as macros with context %}
-
-{% if base_package_type == 'rpm' %}
- {% set redis_sentinel_packages = ['redis'] %}
-{% elif base_package_type == 'deb' %}
- {% set redis_sentinel_packages = ['redis-sentinel'] %}
-{% endif %}
-{{ macros.install_packages(redis_sentinel_packages | customizable("packages")) }}
-
-COPY extend_start.sh /usr/local/bin/kolla_extend_start
-RUN chmod 644 /usr/local/bin/kolla_extend_start
-
-{{ macros.kolla_patch_sources() }}
-
-{% block redis_sentinel_footer %}{% endblock %}
-{% block footer %}{% endblock %}
-
-USER redis
diff --git a/docker/redis/redis-sentinel/extend_start.sh b/docker/redis/redis-sentinel/extend_start.sh
deleted file mode 100644
index 9044f39908..0000000000
--- a/docker/redis/redis-sentinel/extend_start.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-
-if [[ ! -d "/var/log/kolla/redis" ]]; then
- mkdir -p /var/log/kolla/redis
-fi
-
-if [[ $(stat -c %a /var/log/kolla/redis) != "755" ]]; then
- chmod 755 /var/log/kolla/redis
-fi
-
-# The CONFIG REWRITE command rewrites the redis.conf
-# file the server was started with, applying the minimal
-# changes needed to make it reflect the configuration
-# currently used by the server, which may be different
-# compared to the original one because of the use of
-# the CONFIG SET command.
-#
-# https://redis.io/commands/config-rewrite/
-#
-# Because of above behaviour it's needed to
-# hack kolla's CMD.
-#
-# Without this hack
-# /usr/local/bin/kolla_set_configs --check
-# is always reporting changed.
-#
-# Therefore redis-sentinel is always restarted
-# even if configuration is not changed from
-# kolla-ansible side.
-if [ ! -z "${REDIS_CONF}" ] && [ ! -z ${REDIS_GEN_CONF} ]; then
- cp ${REDIS_CONF} ${REDIS_GEN_CONF}
-fi
diff --git a/docker/redis/redis/Dockerfile.j2 b/docker/redis/redis/Dockerfile.j2
deleted file mode 100644
index 7e5ce923b2..0000000000
--- a/docker/redis/redis/Dockerfile.j2
+++ /dev/null
@@ -1,22 +0,0 @@
-FROM {{ namespace }}/{{ image_prefix }}redis-base:{{ tag }}
-{% block labels %}
-LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
-{% endblock %}
-
-{% block redis_header %}{% endblock %}
-
-{% import "macros.j2" as macros with context %}
-
-{% if base_package_type == 'rpm' %}
- {% set redis_packages = ['redis'] %}
-{% elif base_package_type == 'deb' %}
- {% set redis_packages = ['redis-server'] %}
-{% endif %}
-{{ macros.install_packages(redis_packages | customizable("packages")) }}
-
-{{ macros.kolla_patch_sources() }}
-
-{% block redis_footer %}{% endblock %}
-{% block footer %}{% endblock %}
-
-USER redis
diff --git a/docker/valkey/valkey-sentinel/Dockerfile.j2 b/docker/valkey/valkey-sentinel/Dockerfile.j2
index e3045d2fe9..9cdfac282f 100644
--- a/docker/valkey/valkey-sentinel/Dockerfile.j2
+++ b/docker/valkey/valkey-sentinel/Dockerfile.j2
@@ -11,11 +11,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.enable_extra_repos(['epel']) }}
{% set valkey_sentinel_packages = ['valkey'] %}
{% elif base_package_type == 'deb' %}
- {% if base_distro == 'debian' %}
- {% set valkey_sentinel_packages = ['valkey-sentinel/bookworm-backports'] %}
- {% else %}
- {% set valkey_sentinel_packages = ['valkey-sentinel'] %}
- {% endif %}
+ {% set valkey_sentinel_packages = ['valkey-sentinel'] %}
{% endif %}
{{ macros.install_packages(valkey_sentinel_packages | customizable("packages")) }}
diff --git a/docker/valkey/valkey-server/Dockerfile.j2 b/docker/valkey/valkey-server/Dockerfile.j2
index 7b989f66b4..9d187ffbe4 100644
--- a/docker/valkey/valkey-server/Dockerfile.j2
+++ b/docker/valkey/valkey-server/Dockerfile.j2
@@ -9,14 +9,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{{ macros.enable_extra_repos(['epel']) }}
- {% set valkey_server_packages = ['valkey'] %}
-{% elif base_package_type == 'deb' %}
- {% if base_distro == 'debian' %}
- {% set valkey_server_packages = ['valkey/bookworm-backports'] %}
- {% else %}
- {% set valkey_server_packages = ['valkey'] %}
- {% endif %}
{% endif %}
+
+{% set valkey_server_packages = ['valkey'] %}
+
{{ macros.install_packages(valkey_server_packages | customizable("packages")) }}
{{ macros.kolla_patch_sources() }}
diff --git a/kolla/common/config.py b/kolla/common/config.py
index 2ec2194ac5..9999393010 100644
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -26,22 +26,21 @@
DEBIAN_ARCH = ['amd64', 'arm64']
DEFAULT_BASE_TAGS = {
'centos': {'name': 'quay.io/centos/centos', 'tag': 'stream10'},
- 'debian': {'name': 'debian', 'tag': 'bookworm'},
+ 'debian': {'name': 'debian', 'tag': 'trixie'},
'rocky': {'name': 'quay.io/rockylinux/rockylinux', 'tag': '10'},
'ubuntu': {'name': 'ubuntu', 'tag': '24.04'},
}
# NOTE(hrw): has to match PRETTY_NAME in /etc/os-release
DISTRO_PRETTY_NAME = {
'centos': 'CentOS Stream 10',
- 'debian': 'Debian GNU/Linux 12 (bookworm)',
+ 'debian': 'Debian GNU/Linux 13 (trixie)',
'rocky': 'Rocky Linux 10.* (Red Quartz)',
'ubuntu': 'Ubuntu 24.04.* LTS',
}
-OPENSTACK_RELEASE = '2025.2'
-# NOTE(mnasiadka): Using Epoxy here, since Debian OpenStack builds Flamingo
-# only for Trixie
-OPENSTACK_RELEASE_CODENAME = 'Epoxy'
+OPENSTACK_RELEASE = 'master'
+# NOTE(mnasiadka): Using Flamingo here until Gazpacho shows up in osbpo
+OPENSTACK_RELEASE_CODENAME = 'Flamingo'
# TODO(mandre) check for file integrity instead of downloading from an HTTPS
# source
@@ -64,9 +63,9 @@
'openvswitch',
'proxysql',
'rabbitmq',
- 'redis',
'storm',
'tgtd',
+ 'valkey',
],
help='Infra images'),
cfg.ListOpt('main',
@@ -99,10 +98,10 @@
'masakari',
'mistral',
'octavia',
- 'redis',
'tacker',
'telegraf',
'trove',
+ 'valkey',
'zookeeper',
'zun',
],
diff --git a/kolla/common/users.py b/kolla/common/users.py
index de8fc315cd..ec21b06581 100644
--- a/kolla/common/users.py
+++ b/kolla/common/users.py
@@ -217,7 +217,7 @@
'uid': 42459,
'gid': 42459,
},
- 'redis-user': {
+ 'redis-user': { # unused user (redis dropped)
'uid': 42460,
'gid': 42460,
},
diff --git a/kolla/image/unbuildable.py b/kolla/image/unbuildable.py
index 997b4b86b3..06c1f51f99 100644
--- a/kolla/image/unbuildable.py
+++ b/kolla/image/unbuildable.py
@@ -26,14 +26,11 @@
"hacluster-pcs", # Missing crmsh package
"nova-spicehtml5proxy", # Missing spicehtml5 package
"ovsdpdk", # Not supported on CentOS
- "redis-base", # Missing in CS10
"telegraf", # CS10 no opstools repo
"tgtd", # Not supported on CentOS
},
'debian': {
- "openvswitch-netcontrold",
- # https://bugs.launchpad.net/kolla/+bug/2027668
},
'rocky': {
@@ -41,7 +38,6 @@
"hacluster-pcs", # Missing crmsh package
"nova-spicehtml5proxy", # Missing spicehtml5 package
"ovsdpdk", # Not supported on CentOS
- "redis-base", # Missing in Rocky10
"telegraf", # CS10 no opstools repo
"tgtd", # Not supported on CentOS
},
diff --git a/kolla/template/repos.yaml b/kolla/template/repos.yaml
index 7d9d7ec71a..efdb15376b 100644
--- a/kolla/template/repos.yaml
+++ b/kolla/template/repos.yaml
@@ -27,39 +27,40 @@ deb:
debian:
erlang:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang/ubuntu"
- suite: "jammy"
+ suite: "noble"
component: "main"
gpg_key: "erlang-ppa.gpg"
docker-ce:
url: "https://download.docker.com/linux/debian"
- suite: "bookworm"
+ suite: "trixie"
component: "stable"
gpg_key: "docker-ce.asc"
fluentd:
- url: "https://fluentd.cdn.cncf.io/lts/6/debian/bookworm"
- suite: "bookworm"
+ url: "https://fluentd.cdn.cncf.io/lts/6/debian/trixie"
+ suite: "trixie"
component: "contrib"
gpg_key: "fluentd.asc"
+ # NOTE(mnasiadka): 11.4 does not have trixie builds yet
mariadb:
url: "https://dlm.mariadb.com/repo/mariadb-server/11.4/repo/debian"
suite: "bookworm"
component: "main"
gpg_key: "mariadb.gpg"
proxysql:
- url: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/bookworm/"
+ url: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/trixie/"
suite: "./"
component: ""
gpg_key: "proxysql.asc"
rabbitmq:
- url: "https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm"
- suite: "bookworm"
+ url: "https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie/"
+ suite: "trixie"
component: "main"
gpg_key: "rabbitmq.gpg"
debian-aarch64:
rabbitmq:
- url: "https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm"
- suite: "bookworm"
+ url: "https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie"
+ suite: "trixie"
component: "main"
# NOTE(mnasiadka): Since rabbitmq is really noarch and community mirror is not
# syncing binary-aarch64 - we're using amd64 here.
diff --git a/kolla/tests/test_methods.py b/kolla/tests/test_methods.py
index 2d2fdd3edc..f304623625 100644
--- a/kolla/tests/test_methods.py
+++ b/kolla/tests/test_methods.py
@@ -191,13 +191,13 @@ def test_enable_repos_debian_arch(self):
}
result = methods.handle_repos(template_vars, ["rabbitmq"], "enable")
- expectCmd = "RUN echo 'Uris: https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm' " # noqa: E501
+ expectCmd = "RUN echo 'Uris: https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie' " # noqa: E501
expectCmd += ">/etc/apt/sources.list.d/rabbitmq.sources && "
expectCmd += "echo 'Components: main' "
expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && "
expectCmd += "echo 'Types: deb' "
expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && "
- expectCmd += "echo 'Suites: bookworm' "
+ expectCmd += "echo 'Suites: trixie' "
expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && "
expectCmd += "echo 'Signed-By: /etc/kolla/apt-keys/rabbitmq.gpg' "
expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && "
@@ -236,13 +236,13 @@ def test_enable_repos_debian_multiple(self):
expectCmd += ">>/etc/apt/sources.list.d/grafana.sources && "
expectCmd += "echo 'Uris: "
- expectCmd += "https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm' " # noqa: E501
+ expectCmd += "https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie/' " # noqa: E501
expectCmd += ">/etc/apt/sources.list.d/rabbitmq.sources && "
expectCmd += "echo 'Components: main' "
expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && "
expectCmd += "echo 'Types: deb' "
expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && "
- expectCmd += "echo 'Suites: bookworm' "
+ expectCmd += "echo 'Suites: trixie' "
expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && "
expectCmd += "echo 'Signed-By: /etc/kolla/apt-keys/rabbitmq.gpg' "
expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources"
diff --git a/releasenotes/notes/bug-2132960-genisoimage_package_nova-compute-ironic-28f4c262ec201f99.yaml b/releasenotes/notes/bug-2132960-genisoimage_package_nova-compute-ironic-28f4c262ec201f99.yaml
new file mode 100644
index 0000000000..beffc2df00
--- /dev/null
+++ b/releasenotes/notes/bug-2132960-genisoimage_package_nova-compute-ironic-28f4c262ec201f99.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Add missing genisoimage package to nova-compute-ironic
+ container to fix ironic baremetal provisioning error.
+ `LP#2132960 `__
diff --git a/releasenotes/notes/deb822-3f0435dfce6da841.yaml b/releasenotes/notes/deb822-3f0435dfce6da841.yaml
new file mode 100644
index 0000000000..572248317f
--- /dev/null
+++ b/releasenotes/notes/deb822-3f0435dfce6da841.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ ``base`` container image sources.list for Debian and Ubuntu have been
+ reworked to use ``deb822`` and now are called ``debian.sources`` and
+ ``ubuntu.sources``.
diff --git a/releasenotes/notes/debian-trixie-23987480043dc662.yaml b/releasenotes/notes/debian-trixie-23987480043dc662.yaml
new file mode 100644
index 0000000000..68555cfea9
--- /dev/null
+++ b/releasenotes/notes/debian-trixie-23987480043dc662.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Debian ``trixie`` is now used instead of ``bookworm``. Trixie is the current
+ stable release of Debian.
diff --git a/releasenotes/notes/drop-redis-d286ca1237747c48.yaml b/releasenotes/notes/drop-redis-d286ca1237747c48.yaml
new file mode 100644
index 0000000000..9710a37a28
--- /dev/null
+++ b/releasenotes/notes/drop-redis-d286ca1237747c48.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+ - |
+ ``redis`` container image has been dropped due to migration to ``valkey``.
diff --git a/setup.cfg b/setup.cfg
index 1ee28f601c..2634ee512e 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -6,7 +6,7 @@ description_file =
author = OpenStack
author_email = openstack-discuss@lists.openstack.org
home_page = https://docs.openstack.org/kolla/latest/
-python_requires = >=3.8
+python_requires = >=3.10
license = Apache License, Version 2.0
classifier =
Environment :: OpenStack
@@ -18,11 +18,10 @@ classifier =
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.8
- Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
+ Programming Language :: Python :: 3.13
[files]
packages =
diff --git a/tests/templates/template_overrides.j2 b/tests/templates/template_overrides.j2
index d9d89b3e0e..481795cd65 100644
--- a/tests/templates/template_overrides.j2
+++ b/tests/templates/template_overrides.j2
@@ -34,16 +34,19 @@ RUN sed -i -e "s/^mirrorlist/#mirrorlist/g" -e "s/^#baseurl/baseurl/g" \
{% endraw %}
{% if base_distro == "debian" %}
-RUN sed -i -e "s|http://deb.debian.org|[trusted=yes] http://{{ nodepool_mirror_host }}|" \
- -e "s|http://security.debian.org|[trusted=yes] http://{{ nodepool_mirror_host }}|" \
- /etc/apt/sources.list
+RUN cp /etc/apt/sources.list.d/debian.sources /tmp/ && \
+ sed -i -e "s|^URIs: http://deb.debian.org/debian$|URIs: http://{{ nodepool_mirror_host }}/debian\nTrusted: yes|" \
+ -e "s|^URIs: http://deb.debian.org/debian-security|URIs: http://{{ nodepool_mirror_host }}/debian-security\nTrusted: yes|" \
+ /etc/apt/sources.list.d/debian.sources
{% elif base_distro == "ubuntu" %}
-RUN sed -i -e "s|mirror://mirrors.ubuntu.com/mirrors.txt|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu/|" \
- -e "s|http://ports.ubuntu.com|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu-ports|" \
- -e "s|http://ubuntu-cloud.archive.canonical.com/ubuntu|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive|" \
- /etc/apt/sources.list
+RUN cp /etc/apt/sources.list.d/ubuntu.sources /tmp/ && \
+ sed -i -e "s|^URIs: http://archive.ubuntu.com/ubuntu/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu/\nTrusted: yes|" \
+ -e "s|^URIs: http://security.ubuntu.com/ubuntu/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu/\nTrusted: yes|" \
+ -e "s|^URIs: http://ports.ubuntu.com/ubuntu-ports/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu-ports/\nTrusted: yes|" \
+ -e "s|^URIs: http://ubuntu-cloud.archive.canonical.com/ubuntu$|URIs: http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive\nTrusted: yes|" \
+ /etc/apt/sources.list.d/ubuntu.sources
{% endif %}
{% raw %}
@@ -59,21 +62,19 @@ ENV PIP_TRUSTED_HOST=
{% if use_infra_wheels_mirror | default(true) %}
ENV PIP_EXTRA_INDEX_URL=
{% endif %}
-
RUN if [ -f /usr/etc/npmrc ]; then \
unlink /usr/etc/npmrc; \
fi \
&& rm -f /etc/npmrc
{% if base_distro == "debian" %}
-RUN sed -i -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}|http://deb.debian.org|" \
- -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}|http://security.debian.org|" \
- /etc/apt/sources.list
+RUN if [ -f /tmp/debian.sources ]; then \
+ mv -f /tmp/debian.sources /etc/apt/sources.list.d/debian.sources; \
+ fi
{% elif base_distro == "ubuntu" %}
-RUN sed -i -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}/ubuntu/|mirror://mirrors.ubuntu.com/mirrors.txt|" \
- -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive|http://ubuntu-cloud.archive.canonical.com/ubuntu|" \
- -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}/ubuntu-ports|http://ports.ubuntu.com|" \
- /etc/apt/sources.list
+RUN if [ -f /tmp/ubuntu.sources ]; then \
+ mv -f /tmp/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources; \
+ fi
{% endif %}
{% raw %}
{% endblock %}
diff --git a/zuul.d/debian.yaml b/zuul.d/debian.yaml
index 847a0b4d17..d40f10fc08 100644
--- a/zuul.d/debian.yaml
+++ b/zuul.d/debian.yaml
@@ -1,23 +1,23 @@
---
- job:
- name: kolla-build-debian-bookworm
+ name: kolla-build-debian-trixie
parent: kolla-base
- nodeset: kolla-debian-bookworm-8GB
+ nodeset: kolla-debian-trixie-8GB
- job:
- name: kolla-build-debian-bookworm-podman
+ name: kolla-build-debian-trixie-podman
parent: kolla-base-podman
- nodeset: kolla-debian-bookworm-8GB
+ nodeset: kolla-debian-trixie-8GB
- job:
- name: kolla-build-debian-bookworm-arm64
- parent: kolla-build-debian-bookworm
- nodeset: kolla-debian-bookworm-arm64-8GB
+ name: kolla-build-debian-trixie-arm64
+ parent: kolla-build-debian-trixie
+ nodeset: kolla-debian-trixie-arm64-8GB
voting: false
- job:
- name: kolla-publish-debian-bookworm-quay
- parent: kolla-build-debian-bookworm
+ name: kolla-publish-debian-trixie-quay
+ parent: kolla-build-debian-trixie
post-run: tests/playbooks/publish.yml
vars:
publisher: true
@@ -28,8 +28,8 @@
- kolla_quay_io_api_oct_2025
- job:
- name: kolla-publish-debian-bookworm-arm64-quay
- parent: kolla-build-debian-bookworm-arm64
+ name: kolla-publish-debian-trixie-arm64-quay
+ parent: kolla-build-debian-trixie-arm64
post-run: tests/playbooks/publish.yml
vars:
publisher: true
@@ -40,9 +40,9 @@
- kolla_quay_io_api_oct_2025
- job:
- name: kolla-build-debian-bookworm-no-infra-wheels
+ name: kolla-build-debian-trixie-no-infra-wheels
parent: kolla-build-no-infra-wheels-base
- nodeset: kolla-debian-bookworm-8GB
+ nodeset: kolla-debian-trixie-8GB
- project-template:
name: kolla-build-debian
@@ -50,19 +50,19 @@
Runs Kolla Debian build jobs.
check:
jobs:
- - kolla-build-debian-bookworm
- - kolla-build-debian-bookworm-podman
+ - kolla-build-debian-trixie
+ - kolla-build-debian-trixie-podman
check-arm64:
jobs:
- - kolla-build-debian-bookworm-arm64
+ - kolla-build-debian-trixie-arm64
gate:
jobs:
- - kolla-build-debian-bookworm
- - kolla-build-debian-bookworm-podman
+ - kolla-build-debian-trixie
+ - kolla-build-debian-trixie-podman
experimental:
jobs:
- - kolla-build-debian-bookworm-no-infra-wheels
+ - kolla-build-debian-trixie-no-infra-wheels
periodic:
jobs:
- - kolla-publish-debian-bookworm-quay
- - kolla-publish-debian-bookworm-arm64-quay
+ - kolla-publish-debian-trixie-quay
+ - kolla-publish-debian-trixie-arm64-quay
diff --git a/zuul.d/nodesets.yaml b/zuul.d/nodesets.yaml
index 5a069beb6e..1c85b45fba 100644
--- a/zuul.d/nodesets.yaml
+++ b/zuul.d/nodesets.yaml
@@ -16,13 +16,24 @@
nodes:
- name: primary
label: debian-bookworm-8GB
-
- nodeset:
name: kolla-debian-bookworm-arm64-8GB
nodes:
- name: primary
label: debian-bookworm-arm64-8GB
+- nodeset:
+ name: kolla-debian-trixie-8GB
+ nodes:
+ - name: primary
+ label: debian-trixie-8GB
+
+- nodeset:
+ name: kolla-debian-trixie-arm64-8GB
+ nodes:
+ - name: primary
+ label: debian-trixie-arm64-8GB
+
- nodeset:
name: kolla-rocky-10-8GB
nodes:
diff --git a/zuul.d/scenarios/aio.yaml b/zuul.d/scenarios/aio.yaml
index ee58ed05da..392ea7b228 100644
--- a/zuul.d/scenarios/aio.yaml
+++ b/zuul.d/scenarios/aio.yaml
@@ -5,18 +5,37 @@
Runs Kolla-Ansible AIO jobs on all Kolla changes.
check:
jobs:
- - kolla-ansible-centos-10s
- - kolla-ansible-debian-bookworm
- - kolla-ansible-debian-bookworm-upgrade
- - kolla-ansible-ubuntu-noble
- - kolla-ansible-ubuntu-noble-upgrade
+ - kolla-ansible-centos-10s:
+ files: ^docker/
+ - kolla-ansible-debian-trixie:
+ files: ^docker/
+ - kolla-ansible-debian-bookworm-upgrade:
+ files: ^docker/
+ - kolla-ansible-rocky-10:
+ files: ^docker/
+ - kolla-ansible-rocky-10-upgrade:
+ files: ^docker/
+ - kolla-ansible-ubuntu-noble:
+ files: ^docker/
+ - kolla-ansible-ubuntu-noble-upgrade:
+ files: ^docker/
check-arm64:
jobs:
- - kolla-ansible-centos-10s-aarch64
- - kolla-ansible-debian-bookworm-aarch64
+ - kolla-ansible-centos-10s-aarch64:
+ files: ^docker/
+ - kolla-ansible-debian-bookworm-aarch64:
+ files: ^docker/
gate:
jobs:
- - kolla-ansible-debian-bookworm
- - kolla-ansible-debian-bookworm-upgrade
- - kolla-ansible-ubuntu-noble
- - kolla-ansible-ubuntu-noble-upgrade
+ - kolla-ansible-debian-trixie:
+ files: ^docker/
+ - kolla-ansible-debian-bookworm-upgrade:
+ files: ^docker/
+ - kolla-ansible-rocky-10:
+ files: ^docker/
+ - kolla-ansible-rocky-10-upgrade:
+ files: ^docker/
+ - kolla-ansible-ubuntu-noble:
+ files: ^docker/
+ - kolla-ansible-ubuntu-noble-upgrade:
+ files: ^docker/
diff --git a/zuul.d/scenarios/bifrost.yaml b/zuul.d/scenarios/bifrost.yaml
index 4c4dd54657..e72f5b4069 100644
--- a/zuul.d/scenarios/bifrost.yaml
+++ b/zuul.d/scenarios/bifrost.yaml
@@ -7,5 +7,7 @@
jobs:
- kolla-ansible-debian-bookworm-bifrost:
files: ^docker/bifrost/
+ - kolla-ansible-rocky-10-bifrost:
+ files: ^docker/bifrost/
- kolla-ansible-ubuntu-noble-bifrost:
files: ^docker/bifrost/
diff --git a/zuul.d/scenarios/cells.yaml b/zuul.d/scenarios/cells.yaml
index 4105c48ed6..474bd3ec64 100644
--- a/zuul.d/scenarios/cells.yaml
+++ b/zuul.d/scenarios/cells.yaml
@@ -7,5 +7,7 @@
jobs:
- kolla-ansible-debian-bookworm-cells:
files: ^docker/proxysql/
+ - kolla-ansible-rocky-10-cells:
+ files: ^docker/proxysql/
- kolla-ansible-ubuntu-noble-cells:
files: ^docker/proxysql/
diff --git a/zuul.d/scenarios/cephadm.yaml b/zuul.d/scenarios/cephadm.yaml
index 93578439ae..c41162ee8d 100644
--- a/zuul.d/scenarios/cephadm.yaml
+++ b/zuul.d/scenarios/cephadm.yaml
@@ -9,6 +9,10 @@
files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.*
- kolla-ansible-debian-bookworm-cephadm-upgrade:
files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.*
+ - kolla-ansible-rocky-10-cephadm:
+ files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.*
+ - kolla-ansible-rocky-10-cephadm-upgrade:
+ files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.*
- kolla-ansible-ubuntu-noble-cephadm:
files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.*
- kolla-ansible-ubuntu-noble-cephadm-upgrade:
diff --git a/zuul.d/scenarios/ironic.yaml b/zuul.d/scenarios/ironic.yaml
index 4484ccd7f2..4c501ad324 100644
--- a/zuul.d/scenarios/ironic.yaml
+++ b/zuul.d/scenarios/ironic.yaml
@@ -7,5 +7,7 @@
jobs:
- kolla-ansible-debian-bookworm-ironic:
files: ^docker\/(base|dnsmasq|ironic|ironic-inspector|iscsid|openstack-base)\/.*
+ - kolla-ansible-rocky-10-ironic:
+ files: ^docker\/(base|dnsmasq|ironic|ironic-inspector|iscsid|openstack-base)\/.*
- kolla-ansible-ubuntu-noble-ironic:
files: ^docker\/(base|dnsmasq|ironic|ironic-inspector|iscsid|openstack-base)\/.*
diff --git a/zuul.d/scenarios/mariadb.yaml b/zuul.d/scenarios/mariadb.yaml
index 3627e11a4a..f89e8f087e 100644
--- a/zuul.d/scenarios/mariadb.yaml
+++ b/zuul.d/scenarios/mariadb.yaml
@@ -7,5 +7,7 @@
jobs:
- kolla-ansible-debian-bookworm-mariadb:
files: ^docker/(base|mariadb-server)/
+ - kolla-ansible-rocky-10-mariadb:
+ files: ^docker/(base|mariadb-server)/
- kolla-ansible-ubuntu-noble-mariadb:
files: ^docker/(base|mariadb-server)/
diff --git a/zuul.d/scenarios/masakari.yaml b/zuul.d/scenarios/masakari.yaml
index 81c8e84dd9..0974a2affc 100644
--- a/zuul.d/scenarios/masakari.yaml
+++ b/zuul.d/scenarios/masakari.yaml
@@ -7,5 +7,7 @@
jobs:
- kolla-ansible-debian-bookworm-masakari:
files: ^docker/(base|masakari|openstack-base)/
+ - kolla-ansible-rocky-10-masakari:
+ files: ^docker/(base|masakari|openstack-base)/
- kolla-ansible-ubuntu-noble-masakari:
files: ^docker/(base|masakari|openstack-base)/
diff --git a/zuul.d/scenarios/ovn.yaml b/zuul.d/scenarios/ovn.yaml
index 1ca2a1d226..a531a02b4b 100644
--- a/zuul.d/scenarios/ovn.yaml
+++ b/zuul.d/scenarios/ovn.yaml
@@ -7,5 +7,7 @@
jobs:
- kolla-ansible-debian-bookworm-ovn:
files: ^docker/(base|neutron|openstack-base|openvswitch|ovn)/
+ - kolla-ansible-rocky-10-ovn:
+ files: ^docker/(base|neutron|openstack-base|openvswitch|ovn)/
- kolla-ansible-ubuntu-noble-ovn:
files: ^docker/(base|neutron|openstack-base|openvswitch|ovn)/