aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.rst89
-rw-r--r--doc/source/ceph_versions.csv2
-rw-r--r--doc/source/contributor/release-management.rst2
-rw-r--r--doc/source/contributor/versions.rst16
-rw-r--r--doc/source/matrix_aarch64.csv4
-rw-r--r--doc/source/matrix_x86.csv4
-rw-r--r--doc/source/openvswitch_versions.csv5
-rw-r--r--doc/source/ovn_versions.csv5
-rw-r--r--doc/source/support_matrix.rst18
-rw-r--r--docker/base/Dockerfile.j219
-rw-r--r--docker/base/apt_preferences.debian2
-rw-r--r--docker/base/debian.sources13
-rw-r--r--docker/base/sources.list.debian11
-rw-r--r--docker/base/sources.list.ubuntu15
-rw-r--r--docker/base/sources.list.ubuntu.aarch6415
-rw-r--r--docker/base/ubuntu.sources24
-rw-r--r--docker/base/ubuntu.sources.arm6424
-rw-r--r--docker/bifrost/bifrost-base/Dockerfile.j221
-rw-r--r--docker/glance/glance-api/Dockerfile.j22
-rw-r--r--docker/haproxy/haproxy-ssh/extend_start.sh2
-rw-r--r--docker/horizon/Dockerfile.j210
-rw-r--r--docker/httpd/Dockerfile.j244
-rw-r--r--docker/httpd/extend_start.sh1
-rw-r--r--docker/influxdb/Dockerfile.j229
-rw-r--r--docker/influxdb/extend_start.sh11
-rw-r--r--docker/influxdb/influxdb_sudoers1
-rw-r--r--docker/ironic/ironic-pxe/Dockerfile.j27
-rw-r--r--docker/kolla-toolbox/Dockerfile.j234
-rw-r--r--docker/kolla-toolbox/ansible.cfg3
-rw-r--r--docker/kolla-toolbox/requirements.yml6
-rw-r--r--docker/manila/manila-share/Dockerfile.j24
-rw-r--r--docker/mariadb-server/Dockerfile.j210
-rw-r--r--docker/neutron/neutron-base/Dockerfile.j21
-rw-r--r--docker/nova/nova-compute-ironic/Dockerfile.j26
-rw-r--r--docker/nova/nova-libvirt/Dockerfile.j21
-rw-r--r--docker/openstack-base/Dockerfile.j25
-rw-r--r--docker/prometheus/prometheus-valkey-exporter/Dockerfile.j225
-rw-r--r--docker/rabbitmq/Dockerfile.j22
-rw-r--r--docker/rabbitmq/apt_preferences_rabbitmq.debian2
-rw-r--r--docker/rabbitmq/apt_preferences_rabbitmq.ubuntu2
-rw-r--r--docker/redis/redis-base/Dockerfile.j217
-rw-r--r--docker/redis/redis-base/extend_start.sh9
-rw-r--r--docker/redis/redis-sentinel/Dockerfile.j225
-rw-r--r--docker/redis/redis-sentinel/extend_start.sh32
-rw-r--r--docker/redis/redis/Dockerfile.j222
-rw-r--r--docker/telegraf/Dockerfile.j246
-rw-r--r--docker/telegraf/extend_start.sh10
-rw-r--r--docker/telegraf/telegraf_sudoers1
-rw-r--r--docker/valkey/valkey-server/Dockerfile.j26
-rw-r--r--kolla/common/config.py23
-rw-r--r--kolla/common/sources.py87
-rw-r--r--kolla/common/users.py6
-rw-r--r--kolla/image/kolla_worker.py74
-rw-r--r--kolla/image/tasks.py3
-rw-r--r--kolla/image/unbuildable.py6
-rw-r--r--kolla/template/repos.yaml31
-rw-r--r--kolla/tests/test_methods.py10
-rw-r--r--releasenotes/notes/add-oci-standard-labels-f68cc6eb3a4db7c7.yaml10
-rw-r--r--releasenotes/notes/add-valkey-exporter-e21762a106307538.yaml5
-rw-r--r--releasenotes/notes/ansible-core-2-20-bd912e1767d5f197.yaml5
-rw-r--r--releasenotes/notes/bug-2035975-94c5670049a7e1a6.yaml5
-rw-r--r--releasenotes/notes/bug-2093414-12e2d0f21e34bc59.yaml7
-rw-r--r--releasenotes/notes/bug-2132960-genisoimage_package_nova-compute-ironic-28f4c262ec201f99.yaml6
-rw-r--r--releasenotes/notes/deb822-3f0435dfce6da841.yaml6
-rw-r--r--releasenotes/notes/debian-trixie-23987480043dc662.yaml5
-rw-r--r--releasenotes/notes/debian-trixie-spice-814929ed1efbcad1.yaml8
-rw-r--r--releasenotes/notes/deprecate-collectd-8ba94052bdc9424b.yaml4
-rw-r--r--releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml2
-rw-r--r--releasenotes/notes/drop-influxdb-cb3161a1e04fa38e.yaml4
-rw-r--r--releasenotes/notes/drop-redis-d286ca1237747c48.yaml4
-rw-r--r--releasenotes/notes/drop-telegraf-28dd961f18ed7825.yaml4
-rw-r--r--releasenotes/notes/drop-venus-435234b3bff7f209.yaml4
-rw-r--r--releasenotes/notes/flamingo-prelude-b72f2599ed9d25d5.yaml24
-rw-r--r--releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml2
-rw-r--r--releasenotes/notes/handle-deprecated-rabbitmq-package-archive-47548e7a41baa68b.yaml7
-rw-r--r--releasenotes/notes/image-purpose-1884e00f993e09d0.yaml7
-rw-r--r--releasenotes/notes/influxdb-repo-gpg-key-04eb924f249e54a5.yaml6
-rw-r--r--releasenotes/notes/ironic-pxe-syslinux-tftpboot-3dc6415ed140dc50.yaml6
-rw-r--r--releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml6
-rw-r--r--releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml2
-rw-r--r--releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml2
-rw-r--r--releasenotes/notes/rabbitmq-42-84cf0d09c9f33ef4.yaml4
-rw-r--r--releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml6
-rw-r--r--releasenotes/notes/rocky-10-4111fa0160be14ab.yaml12
-rw-r--r--releasenotes/notes/rocky-ovn-25.09-345468aec8cc8073.yaml4
-rw-r--r--releasenotes/notes/switch-proxysql3-base-to-almalinux10-d64c97ba1a894a34.yaml5
-rw-r--r--releasenotes/notes/update-packages-071d1863639fe3e3.yaml14
-rw-r--r--releasenotes/notes/update-prometheus-server-3.5.1-e23a9826b25573a8.yaml4
-rw-r--r--releasenotes/notes/update-prometheus-services-98085e2ccf13d1fb.yaml16
-rw-r--r--releasenotes/source/2024.1.rst2
-rw-r--r--releasenotes/source/2025.2.rst6
-rw-r--r--releasenotes/source/index.rst1
-rw-r--r--setup.cfg5
-rw-r--r--tests/playbooks/publish.yml2
-rw-r--r--tests/templates/template_overrides.j231
-rw-r--r--tox.ini2
-rw-r--r--zuul.d/debian.yaml54
-rw-r--r--zuul.d/nodesets.yaml13
-rw-r--r--zuul.d/periodics/copr.yaml3
-rw-r--r--zuul.d/rocky.yaml6
-rw-r--r--zuul.d/scenarios/aio.yaml41
-rw-r--r--zuul.d/scenarios/bifrost.yaml2
-rw-r--r--zuul.d/scenarios/cells.yaml2
-rw-r--r--zuul.d/scenarios/cephadm.yaml4
-rw-r--r--zuul.d/scenarios/ironic.yaml2
-rw-r--r--zuul.d/scenarios/mariadb.yaml2
-rw-r--r--zuul.d/scenarios/masakari.yaml2
-rw-r--r--zuul.d/scenarios/ovn.yaml2
-rw-r--r--zuul.d/secrets.yaml110
-rw-r--r--zuul.d/ubuntu.yaml21
110 files changed, 787 insertions, 637 deletions
diff --git a/README.rst b/README.rst
index 4af919296..766d6b928 100644
--- a/README.rst
+++ b/README.rst
@@ -8,17 +8,18 @@ Kolla Overview
.. Change things from this point on
-The Kolla project is a member of the OpenStack `Big Tent
-Governance <https://governance.openstack.org/tc/reference/projects/index.html>`__.
+The Kolla project is a member of the OpenStack `Governance
+<https://governance.openstack.org/tc/reference/projects/index.html>`__.
Kolla's mission statement is:
::
- To provide production-ready containers and deployment tools for operating
- OpenStack clouds.
+ To provide tools to create production-ready containers and
+ to provide deployment tools for operating OpenStack clouds.
-Kolla provides `Docker <https://docker.com/>`__ containers,
+Kolla provides tools to create containers that can be run under either
+`Docker <https://docker.com/>`__ or `Podman <https://podman.io/>`, as well as
`Ansible <https://ansible.com/>`__ playbooks to deploy OpenStack on baremetal
or virtual machine to meet Kolla's mission.
@@ -39,29 +40,28 @@ Quickstart <https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html
The Kolla Repository
====================
-The Kolla repository is one of three deliverables of the OpenStack Kolla
-project. The three deliverables that make up the Kolla project are:
-
-================ =========================================================
-Deliverable Repository
-================ =========================================================
-kolla https://opendev.org/openstack/kolla
-kolla-ansible https://opendev.org/openstack/kolla-ansible
-kayobe https://opendev.org/openstack/kayobe
-================ =========================================================
-
-The `Docker images <https://docs.docker.com/storage/storagedriver/>`__
-are built by the Kolla project maintainers. A detailed process for
-contributing to the images can be found in the `image building
-guide <https://docs.openstack.org/kolla/latest/admin/image-building.html>`__.
-
-The Kolla developers build images in the `kolla` namespace for every tagged
-release.
-
-You can view the available images on `Docker Hub
-<https://hub.docker.com/u/kolla/>`__ or with the Docker CLI::
-
- $ sudo docker search kolla
+The Kolla repository is one of four deliverables of the OpenStack Kolla
+project. The four deliverables that make up the Kolla project are:
+
+======================== ======================================================
+Deliverable Repository
+======================== ======================================================
+kolla https://opendev.org/openstack/kolla
+kolla-ansible https://opendev.org/openstack/kolla-ansible
+ansible-collection-kolla https://opendev.org/openstack/ansible-collection-kolla
+kayobe https://opendev.org/openstack/kayobe
+======================== ======================================================
+
+The Kolla developers publish images in the Quay.io `openstack.kolla` namespace
+for every tagged release. You can view the available images on `Quay.io
+<https://quay.io/organization/openstack.kolla>`__.
+
+.. warning::
+ Kolla(-ansible) defaults to using these images in order to ease testing and
+ demonstration setups, but they are not intended to be used beyond this.
+ In particular, they do not undergo any security scrutiny. If you intend to
+ deploy Kolla for production purposes, you are advised to create and curate your
+ own set of images using the ``kolla`` tool.
OpenStack services
------------------
@@ -87,10 +87,10 @@ Kolla provides images to deploy the following OpenStack projects:
- `Manila <https://docs.openstack.org/manila/latest/>`__
- `Masakari <https://docs.openstack.org/masakari/latest/>`__
- `Mistral <https://docs.openstack.org/mistral/latest/>`__
-- `Monasca <https://docs.openstack.org/monasca-api/latest/>`__
- `Neutron <https://docs.openstack.org/neutron/latest/>`__
- `Nova <https://docs.openstack.org/nova/latest/>`__
- `Octavia <https://docs.openstack.org/octavia/latest/>`__
+- `Placement <https://docs.openstack.org/placement/latest/>`__
- Skyline (`APIServer <https://docs.openstack.org/skyline-apiserver/latest/>`__ and `Console <https://docs.openstack.org/skyline-console/latest/>`__)
- `Tacker <https://docs.openstack.org/tacker/latest/>`__
- `Trove <https://docs.openstack.org/trove/latest/>`__
@@ -103,44 +103,33 @@ Infrastructure components
Kolla provides images to deploy the following infrastructure components:
- `Collectd <https://collectd.org>`__,
- `InfluxDB <https://influxdata.com/time-series-platform/influxdb/>`__, and
`Grafana <https://grafana.com>`__ for performance monitoring.
-- `Corosync <https://clusterlabs.org/corosync.html>`__ and
- `Pacemaker <https://clusterlabs.org/pacemaker>`__ for HAcluster.
-- `Elasticsearch <https://www.elastic.co/de/products/elasticsearch>`__ and
- `Kibana <https://www.elastic.co/products/kibana>`__ to search, analyze,
- and visualize log messages.
- `Cron <https://cron-job.org>`__ for log rotation.
- `Etcd <https://etcd.io/>`__ a distributed key value store that provides
a reliable way to store data across a cluster of machines.
- `Fluentd <https://www.fluentd.org/>`__ as an open source data collector
for unified logging layer.
- `Gnocchi <https://gnocchi.xyz/>`__ a time-series storage database.
+- `Corosync <https://clusterlabs.org/corosync.html>`__ and
+ `Pacemaker <https://clusterlabs.org/pacemaker>`__ for HAcluster.
- `HAProxy <https://www.haproxy.org/>`__ and
`Keepalived <https://www.keepalived.org/>`__ for high availability of services
and their endpoints.
-- `Kafka <https://kafka.apache.org/documentation/>`__ a distributed streaming
- platform.
- `MariaDB and Galera Cluster <https://mariadb.com/kb/en/library/galera-cluster/>`__
for highly available MySQL databases.
- `Memcached <https://www.memcached.org/>`__ a distributed memory object caching system.
-- `Open vSwitch <https://www.openvswitch.org/>`__ for use with Neutron.
- MariaDB Backup A tool which provides a method of performing a hot backup of your MySQL data while the
system is running.
+- `Open vSwitch <https://www.openvswitch.org/>`__ for use with Neutron.
+- `Opensearch <https://opensearch.org/>`__ to search, analyze,
+ and visualize log messages.
- `Prometheus <https://prometheus.io/>`__ an open-source systems monitoring
and alerting toolkit originally built at SoundCloud.
-- `Qdrouterd <https://qpid.apache.org/components/dispatch-router/index.html>`__ as a
- direct messaging back end for communication between services.
- `RabbitMQ <https://www.rabbitmq.com/>`__ as a broker messaging back end for
communication between services.
-- `Redis Sentinel <https://redis.io/topics/sentinel>`__ provides high availability for redis
+- `Valkey Sentinel <https://valkey.io/topics/sentinel>`__ provides high availability for valkey
along with collateral tasks such as monitoring, notification and acts as configuration
provider for clients.
-- `Telegraf <https://www.docs.influxdata.com/telegraf/>`__ as a plugin-driven server
- agent for collecting & reporting metrics.
-- `ZooKeeper <https://zookeeper.apache.org/>`__ as a centralized service for maintaining
- configuration information, naming, providing distributed synchronization, and providing
- group services.
Directories
===========
@@ -175,14 +164,6 @@ workflow <https://docs.openstack.org/infra/manual/developers.html>`__.
<https://docs.openstack.org/kolla/latest/contributor/meeting.html>`__.
- Contribute `code <https://opendev.org/openstack/kolla>`__.
-Contributors
-============
-
-Check out who is `contributing
-code <https://stackalytics.io/?module=kolla-group&metric=commits>`__ and
-`contributing
-reviews <https://stackalytics.io/?module=kolla-group&metric=marks>`__.
-
Notices
=======
diff --git a/doc/source/ceph_versions.csv b/doc/source/ceph_versions.csv
index 36c9cc80c..85af90aa2 100644
--- a/doc/source/ceph_versions.csv
+++ b/doc/source/ceph_versions.csv
@@ -1,5 +1,5 @@
Distro,Ceph,
-,Source, Release
+,Source,Release
Rocky Linux,CentOS Storage SIG,Squid
Ubuntu,Ubuntu,Squid
Debian,Debian,Pacific
diff --git a/doc/source/contributor/release-management.rst b/doc/source/contributor/release-management.rst
index 441bf3907..91f483e38 100644
--- a/doc/source/contributor/release-management.rst
+++ b/doc/source/contributor/release-management.rst
@@ -473,7 +473,7 @@ After a branch enters EM, we typically do the following:
* stop backporting fixes to the branch by default. Important fixes or those
requested by community members may be merged if deemed appropriate
-* stop publishing images to Dockerhub
+* stop publishing images to Quay.io
* stop actively maintaining CI
End of Life (EOL)
diff --git a/doc/source/contributor/versions.rst b/doc/source/contributor/versions.rst
index b3adf1920..b549f19a2 100644
--- a/doc/source/contributor/versions.rst
+++ b/doc/source/contributor/versions.rst
@@ -15,32 +15,26 @@ information about package sources.
============== ================ =============================================
Name Version Package source information
============== ================ =============================================
- Grafana 9.x `Grafana install guide`_
- InfluxDB 1.8.x `InfluxDB upstream repo`_
- Kibana 7.x `Kibana install guide`_
- Logstash 7.x `Logstash install guide`_
- MariaDB 10.11 (LTS) `MariaDB Community downloads`_
+ Grafana 12.x `Grafana install guide`_
+ MariaDB 11.4 (LTS) `MariaDB Community downloads`_
Galera 26.4 (LTS) `MariaDB Community downloads`_
OpenSearch 3.x `OpenSearch install guide`_
- ProxySQL 2.7.x `ProxySQL repository`_
- Rabbitmq 4.1.x - CentOS/Rocky:
+ ProxySQL 3.0.x `ProxySQL repository`_
+ RabbitMQ 4.2.x - CentOS/Rocky:
`Team RabbitMQ 'Cloudsmith' repo (RPM)`_
- Debian/Ubuntu:
`Team RabbitMQ 'Cloudsmith' repo (Deb)`_
- Erlang 27.X - CentOS/Rocky aarch64:
+ Erlang 27.x - CentOS/Rocky aarch64:
`openstack-kolla COPR`_
- CentOS/Rocky x86-64:
`Team RabbitMQ 'Cloudsmith' repo (RPM)`_
- Debian/Ubuntu:
`Team RabbitMQ 'Modern Erlang' PPA`_
Fluentd 6.x (LTS) `Fluentd install guide`_
- Telegraf 1.24.x `InfluxDB upstream repo`_
============== ================ =============================================
.. _`InfluxDB upstream repo`: https://repos.influxdata.com/
.. _`OpenSearch install guide`: https://opensearch.org/downloads.html
-.. _`Kibana install guide`: https://www.elastic.co/guide/en/kibana/7.10/install.html
-.. _`Logstash install guide`: https://www.elastic.co/guide/en/logstash/7.9/installing-logstash.html
.. _`Fluentd install guide`: https://www.fluentd.org/download
.. _`ProxySQL repository`: https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/
diff --git a/doc/source/matrix_aarch64.csv b/doc/source/matrix_aarch64.csv
index 028bba2c2..7dbd5849f 100644
--- a/doc/source/matrix_aarch64.csv
+++ b/doc/source/matrix_aarch64.csv
@@ -20,7 +20,6 @@ hacluster,N,U,U
haproxy,U,U,U
heat,U,U,U
horizon,U,U,U
-influxdb,N,U,U
ironic,U,U,U
iscsid,U,U,U
keepalived,U,U,U
@@ -46,11 +45,10 @@ 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 14c37597d..512577aac 100644
--- a/doc/source/matrix_x86.csv
+++ b/doc/source/matrix_x86.csv
@@ -21,7 +21,6 @@ hacluster-pcs,N,U,U
haproxy,T,T,U
heat,T,T,T
horizon,T,T,T
-influxdb,U,U,U
ironic,T,T,U
iscsid,T,T,U
keepalived,T,T,U
@@ -47,12 +46,11 @@ 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/openvswitch_versions.csv b/doc/source/openvswitch_versions.csv
new file mode 100644
index 000000000..55813a60b
--- /dev/null
+++ b/doc/source/openvswitch_versions.csv
@@ -0,0 +1,5 @@
+Distro,Open vSwitch,
+,Source,Release
+Rocky Linux,CentOS NFV SIG,3.5
+Ubuntu,UCA,3.6
+Debian,DEB,3.5
diff --git a/doc/source/ovn_versions.csv b/doc/source/ovn_versions.csv
new file mode 100644
index 000000000..f0a8c5210
--- /dev/null
+++ b/doc/source/ovn_versions.csv
@@ -0,0 +1,5 @@
+Distro,OVN,
+,Source,Release
+Rocky Linux,CentOS NFV SIG,25.09
+Ubuntu,UCA,25.09
+Debian,DEB,25.03
diff --git a/doc/source/support_matrix.rst b/doc/source/support_matrix.rst
index 48338af6f..31c67e70a 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
================== =============================== ================
@@ -33,6 +33,22 @@ Ceph versions in Kolla images
:stub-columns: 1
:file: ./ceph_versions.csv
+Open vSwitch versions in Kolla images
+=====================================
+
+.. csv-table:: Open vSwitch versions
+ :header-rows: 2
+ :stub-columns: 1
+ :file: ./openvswitch_versions.csv
+
+OVN versions in Kolla images
+============================
+
+.. csv-table:: OVN versions
+ :header-rows: 2
+ :stub-columns: 1
+ :file: ./ovn_versions.csv
+
Support clause definitions
==========================
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index 45e7f9c03..0503098df 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -40,7 +40,7 @@ ENV PS1="$(tput bold)($(printenv KOLLA_SERVICE_NAME))$(tput sgr0)[$(id -un)@$(ho
# desire such functionality. I think we will :)
ENV KOLLA_RPM_OVS_VERSION=3.5 \
- KOLLA_RPM_OVN_VERSION=25.03
+ KOLLA_RPM_OVN_VERSION=25.09
RUN cat /tmp/kolla_bashrc >> /etc/bashrc \
&& sed -i 's|^\(override_install_langs=.*\)|# \1|' /etc/dnf/dnf.conf
@@ -115,11 +115,6 @@ RUN {{ macros.install_packages(base_centos_yum_repo_packages | customizable("cen
{% block base_centos_repo_overrides_post_yum %}{% endblock -%}
&& {{ macros.rpm_security_update(clean_package_cache) }}
-{# NOTE(mnasiadka): dumb-init is only in EPEL10.1 onwards and RHEL/Rocky/clones use the same #}
-{# EPEL release as the installed distro release #}
-{# TODO: Remove it when Rocky 10.1 is out #}
-RUN dnf config-manager --save --setopt=*.metalink="https://mirrors.fedoraproject.org/metalink?repo=epel-z-10.1&arch=\$basearch" epel
-
#### END REPO ENABLEMENT
{# We are back to the basic if conditional here which is:
@@ -192,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 %}
@@ -243,7 +238,7 @@ COPY apt_preferences /etc/apt/preferences.d/kolla-custom
{% set base_apt_keys = [
{'name': 'erlang-ppa', 'keyid': 'F77F1EDA57EBB1CC'},
- {'name': 'rabbitmq', 'keyid': '9F4587F226208342'},
+ {'name': 'rabbitmq', 'keyid': '6B73A36E6026DFCA'},
{'name': 'haproxy', 'keyid': 'CFFB779AADC995E4F350A060505D97A41C61B9CD'},
] %}
@@ -252,7 +247,7 @@ COPY apt_preferences /etc/apt/preferences.d/kolla-custom
{'name': 'docker-ce', 'url': 'https://download.docker.com/linux/debian/gpg'},
{'name': 'fluentd', 'url': 'https://fluentd.cdn.cncf.io/GPG-KEY-fluent-package'},
{'name': 'grafana', 'url': 'https://rpm.grafana.com/gpg.key'},
- {'name': 'influxdb', 'url': 'https://repos.influxdata.com/influxdata-archive_compat.key'},
+ {'name': 'influxdb', 'url': 'https://repos.influxdata.com/influxdata-archive.key'},
{'name': 'mariadb', 'url': 'https://downloads.mariadb.com/MariaDB/mariadb-keyring-2019.gpg', 'type': 'gpg'},
{'name': 'opensearch', 'url': 'https://artifacts.opensearch.org/publickeys/opensearch-release.pgp'},
{'name': 'proxysql', 'url': 'https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key'},
diff --git a/docker/base/apt_preferences.debian b/docker/base/apt_preferences.debian
index 5edb8814a..08e21ff22 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 000000000..28c61c81d
--- /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 89f7a1160..000000000
--- 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 6542433e3..000000000
--- a/docker/base/sources.list.ubuntu
+++ /dev/null
@@ -1,15 +0,0 @@
-# For non-x86 architectures we use sources.list.ubuntu.<arch>
-
-# 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 d4cfbe20f..000000000
--- 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 000000000..f8f609cee
--- /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/gazpacho
+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 000000000..751af7ccf
--- /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/gazpacho
+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/bifrost/bifrost-base/Dockerfile.j2 b/docker/bifrost/bifrost-base/Dockerfile.j2
index e31a12b32..a84f0e0e3 100644
--- a/docker/bifrost/bifrost-base/Dockerfile.j2
+++ b/docker/bifrost/bifrost-base/Dockerfile.j2
@@ -19,22 +19,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{# NOTE(mgoddard): EPEL required for nginx #}
{{ macros.enable_extra_repos(['epel']) }}
-
- {% set bifrost_base_packages = bifrost_base_packages + [
- 'python3.12',
- 'python3.12-devel'
- ] %}
{% endif %}
{{ macros.install_packages(bifrost_base_packages | customizable("packages")) }}
-{# Ensure we use Python 3.12 on RPM-based systems #}
-{% if base_package_type == 'rpm' %}
-RUN cd /usr/bin && \
- rm -f python3 && \
- ln -s python3.12 python3
-{% endif %}
-
ENV VENV {{ venv_path }}
{% set bifrost_base_pip_packages = [
@@ -47,12 +35,7 @@ COPY build_arg.yml /tmp/build_arg.yml
RUN mkdir -p /requirements \
&& curl -o /requirements/upper-constraints.txt ${UPPER_CONSTRAINTS_FILE:-https://releases.openstack.org/constraints/upper/{{ openstack_release }}} \
&& python3 -m venv --system-site-packages {{ venv_path }} \
- && KOLLA_DISTRO_PYTHON_VERSION=$(/usr/bin/python3 -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))") \
- && cd {{ venv_path }}/lib \
- && rm -f python3 \
- && ln -s python${KOLLA_DISTRO_PYTHON_VERSION} python3
-
-RUN ln -s bifrost-base-source/* bifrost \
+ && ln -s bifrost-base-source/* bifrost \
&& {{ macros.install_pip(['pip', 'wheel', 'setuptools']) }} \
&& {{ macros.install_pip(bifrost_base_pip_packages | customizable("pip_packages")) }}
@@ -67,7 +50,7 @@ RUN apt-get --error-on=any update && \
{%- else %}
RUN echo " " && \
{%- endif %}
- bash -c '$VENV/bin/pip install "ansible>=12,<13" && \
+ bash -c '$VENV/bin/pip install "ansible>=12,<14" && \
$VENV/bin/ansible-galaxy collection install -r /bifrost/ansible-collections-requirements.yml && \
$VENV/bin/ansible-playbook -vvvv -i /bifrost/playbooks/inventory/target \
/bifrost/playbooks/install.yaml \
diff --git a/docker/glance/glance-api/Dockerfile.j2 b/docker/glance/glance-api/Dockerfile.j2
index 992fc0996..045efb6ae 100644
--- a/docker/glance/glance-api/Dockerfile.j2
+++ b/docker/glance/glance-api/Dockerfile.j2
@@ -11,6 +11,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set glance_api_packages = [
'lsscsi',
'device-mapper-multipath',
+ 'nvme-cli',
'qemu-img'
] %}
{% elif base_package_type == 'deb' %}
@@ -18,6 +19,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'lsscsi',
'multipath-tools',
'nfs-common',
+ 'nvme-cli',
'qemu-utils'
] %}
{% endif %}
diff --git a/docker/haproxy/haproxy-ssh/extend_start.sh b/docker/haproxy/haproxy-ssh/extend_start.sh
index 421e4bd6f..4b2239100 100644
--- a/docker/haproxy/haproxy-ssh/extend_start.sh
+++ b/docker/haproxy/haproxy-ssh/extend_start.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-SSH_HOST_KEY_TYPES=( "rsa" "dsa" "ecdsa" "ed25519" )
+SSH_HOST_KEY_TYPES=( "rsa" "ecdsa" "ed25519" )
for key_type in ${SSH_HOST_KEY_TYPES[@]}; do
KEY_PATH=/etc/ssh/ssh_host_${key_type}_key
diff --git a/docker/horizon/Dockerfile.j2 b/docker/horizon/Dockerfile.j2
index f2cb0b433..c7d6f8aa2 100644
--- a/docker/horizon/Dockerfile.j2
+++ b/docker/horizon/Dockerfile.j2
@@ -36,7 +36,8 @@ ADD horizon-archive /horizon-source
ADD plugins-archive /
{% set horizon_pip_packages = [
- '/horizon'
+ '/horizon',
+ 'django_redis'
] %}
{% set horizon_plugins_pip_packages = [
@@ -49,10 +50,13 @@ COPY extend_start.sh /usr/local/bin/kolla_extend_start
# NOTE(kevko): This dance with local settings python paths below is needed
# because we are using different distros with different python version and we need to
# know to which path symlink should point to.
-# NOTE(mnasiadka): pinning setuptools due to https://bugs.launchpad.net/horizon/+bug/2007574
+# NOTE(bbezak): pin setuptools for pip build isolation due to
+# https://bugs.launchpad.net/horizon/+bug/2141293
RUN ln -s horizon-source/* horizon \
&& {{ macros.upper_constraints_remove("horizon") }} \
- && {{ macros.install_pip(horizon_pip_packages | customizable("pip_packages")) }} \
+ && echo "setuptools<82" > /tmp/horizon-build-constraints.txt \
+ && PIP_BUILD_CONSTRAINT=/tmp/horizon-build-constraints.txt \
+ {{ macros.install_pip(horizon_pip_packages | customizable("pip_packages")) }} \
&& mkdir -p /etc/openstack-dashboard \
&& cp -r /horizon/openstack_dashboard/conf/* /etc/openstack-dashboard/ \
&& cp /horizon/openstack_dashboard/local/local_settings.py.example /etc/openstack-dashboard/local_settings.py \
diff --git a/docker/httpd/Dockerfile.j2 b/docker/httpd/Dockerfile.j2
new file mode 100644
index 000000000..a41465661
--- /dev/null
+++ b/docker/httpd/Dockerfile.j2
@@ -0,0 +1,44 @@
+FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
+{% block labels %}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+{% endblock %}
+
+{% block apache_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{% if base_package_type == 'rpm' %}
+{# NOTE(mnasiadka): mod_auth_mellon missing in CentOS 10 Stream - temporarily from Kolla COPR #}
+{{ macros.enable_extra_repos(['epel', 'kolla_el10']) }}
+ {% set apache_packages = [
+ 'httpd',
+ 'mod_ssl',
+ 'mod_auth_mellon',
+ 'mod_auth_openidc',
+ 'mod_proxy_uwsgi'
+ ] %}
+{% elif base_package_type == 'deb' %}
+ {% set apache_packages = [
+ 'apache2',
+ 'ca-certificates',
+ 'libapache2-mod-auth-mellon',
+ 'libapache2-mod-auth-openidc'
+ ] %}
+{% endif %}
+
+{{ macros.install_packages(apache_packages | customizable("packages")) }}
+
+{% if base_package_type == 'rpm' %}
+RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \
+ && sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf
+{% elif base_package_type == 'deb' %}
+RUN echo > /etc/apache2/ports.conf
+{% endif %}
+
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+RUN chmod 644 /usr/local/bin/kolla_extend_start
+
+USER root
+
+{% block apache_footer %}{% endblock %}
+
diff --git a/docker/httpd/extend_start.sh b/docker/httpd/extend_start.sh
new file mode 100644
index 000000000..d47af64b9
--- /dev/null
+++ b/docker/httpd/extend_start.sh
@@ -0,0 +1 @@
+. /usr/local/bin/kolla_httpd_setup
diff --git a/docker/influxdb/Dockerfile.j2 b/docker/influxdb/Dockerfile.j2
deleted file mode 100644
index 060973dd6..000000000
--- a/docker/influxdb/Dockerfile.j2
+++ /dev/null
@@ -1,29 +0,0 @@
-FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
-{% block labels %}
-LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
-{% endblock %}
-
-{% block influxdb_header %}{% endblock %}
-
-{% import "macros.j2" as macros with context %}
-
-{{ macros.configure_user(name='influxdb') }}
-
-{{ macros.enable_extra_repos(['influxdb']) }}
-
-{% set influxdb_packages = ['influxdb'] %}
-{{ macros.install_packages(influxdb_packages | customizable("packages")) }}
-
-COPY influxdb_sudoers /etc/sudoers.d/kolla_influxdb_sudoers
-COPY extend_start.sh /usr/local/bin/kolla_extend_start
-
-RUN chmod 750 /etc/sudoers.d \
- && chmod 440 /etc/sudoers.d/kolla_influxdb_sudoers \
- && chmod 644 /usr/local/bin/kolla_extend_start
-
-{{ macros.kolla_patch_sources() }}
-
-{% block influxdb_footer %}{% endblock %}
-{% block footer %}{% endblock %}
-
-USER influxdb
diff --git a/docker/influxdb/extend_start.sh b/docker/influxdb/extend_start.sh
deleted file mode 100644
index 42a3c4607..000000000
--- a/docker/influxdb/extend_start.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-# Create log directory, with appropriate permissions
-INFLUXDB_LOG_DIR=/var/log/kolla/influxdb
-
-if [[ ! -d "${INFLUXDB_LOG_DIR}" ]]; then
- mkdir -p ${INFLUXDB_LOG_DIR}
-fi
-if [[ $(stat -c %a ${INFLUXDB_LOG_DIR}) != "755" ]]; then
- chmod 755 ${INFLUXDB_LOG_DIR}
-fi
diff --git a/docker/influxdb/influxdb_sudoers b/docker/influxdb/influxdb_sudoers
deleted file mode 100644
index a9757b264..000000000
--- a/docker/influxdb/influxdb_sudoers
+++ /dev/null
@@ -1 +0,0 @@
-%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R influxdb\: /var/lib/influxdb, /bin/chown -R influxdb\: /var/lib/influxdb
diff --git a/docker/ironic/ironic-pxe/Dockerfile.j2 b/docker/ironic/ironic-pxe/Dockerfile.j2
index 6a2131de6..eb357610b 100644
--- a/docker/ironic/ironic-pxe/Dockerfile.j2
+++ b/docker/ironic/ironic-pxe/Dockerfile.j2
@@ -17,15 +17,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'ipxe-bootimgs-aarch64',
'mtools',
'shim-*64',
+ 'syslinux-tftpboot',
'tftp-server',
] %}
- {% if base_arch in ['x86_64'] %}
- {% set ironic_pxe_packages = ironic_pxe_packages + [
- 'syslinux-tftpboot'
- ] %}
- {% endif %}
-
{{ macros.install_packages(ironic_pxe_packages | customizable("packages")) }}
{% elif base_package_type == 'deb' %}
{% set ironic_pxe_packages = [
diff --git a/docker/kolla-toolbox/Dockerfile.j2 b/docker/kolla-toolbox/Dockerfile.j2
index 9f97ed386..c730c5566 100644
--- a/docker/kolla-toolbox/Dockerfile.j2
+++ b/docker/kolla-toolbox/Dockerfile.j2
@@ -40,7 +40,7 @@ COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq
'openvswitch${KOLLA_RPM_OVS_VERSION}',
'python3',
'python3-devel',
- 'rabbitmq-server-4.1.*'
+ 'rabbitmq-server-4.2.*'
] %}
{% elif base_package_type == 'deb' %}
@@ -61,31 +61,17 @@ COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq
{% endif %}
{{ macros.install_packages(kolla_toolbox_packages | customizable("packages")) }}
-{# NOTE(kevko):
- In all distros, there is always a /usr/bin/python3 -> python3.X.
- However, this is disrupted for RHEL-based systems because, unlike
- other distros, we upgrade Python above [1], but we forget to set
- the default python3 to the new python3.X. As a result also, everything
- outside of the virtual environment ends up running on Python 3.9.
-
- So, let's correctly set python3 -> python3.X since we had to install
- it and now have default python3 points to the new version.
-
- [1] https://review.opendev.org/c/openstack/kolla/+/924245
-#}
-{% if base_package_type == 'rpm' %}
-RUN cd /usr/bin && \
- rm -f python3 && \
- ln -s python3.12 python3
-{% endif %}
-
{% block kolla_toolbox_pip_conf %}
-ENV UPPER_CONSTRAINTS_FILE=https://releases.openstack.org/constraints/upper/{{ openstack_release }}
+ENV UPPER_CONSTRAINTS_FILE=/requirements/upper-constraints.txt
{% endblock %}
{% block kolla_toolbox_upper_constraints %}
-RUN mkdir -p /requirements \
- && curl -o /requirements/upper-constraints.txt $UPPER_CONSTRAINTS_FILE \
+ADD kolla-toolbox-archive /kolla-toolbox-source
+
+RUN case "$UPPER_CONSTRAINTS_FILE" in \
+ http*) mkdir -p /requirements && curl -LO $UPPER_CONSTRAINTS_FILE /requirements/upper-constraints.txt ;; \
+ *) ln -s kolla-toolbox-source/* /requirements ;; \
+ esac \
&& {{ macros.upper_constraints_remove("openstacksdk") }} \
&& python3 -m venv --system-site-packages {{ venv_path }} \
&& KOLLA_DISTRO_PYTHON_VERSION=$(/usr/bin/python3 -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))") \
@@ -96,9 +82,9 @@ RUN mkdir -p /requirements \
ENV PATH {{ venv_path }}/bin:$PATH
{% set kolla_toolbox_pip_packages = [
- 'ansible-core==2.19.*',
+ 'ansible-core==2.20.*',
+ 'ansible-runner',
'cmd2',
- 'influxdb',
'openstacksdk',
'os-client-config',
'pbr',
diff --git a/docker/kolla-toolbox/ansible.cfg b/docker/kolla-toolbox/ansible.cfg
index 53708de39..ec505f4a4 100644
--- a/docker/kolla-toolbox/ansible.cfg
+++ b/docker/kolla-toolbox/ansible.cfg
@@ -1,3 +1,4 @@
[defaults]
-remote_tmp = /tmp
+inject_facts_as_vars = False
log_path = /var/log/kolla/ansible.log
+remote_tmp = /tmp
diff --git a/docker/kolla-toolbox/requirements.yml b/docker/kolla-toolbox/requirements.yml
index 0c4025d01..83c795142 100644
--- a/docker/kolla-toolbox/requirements.yml
+++ b/docker/kolla-toolbox/requirements.yml
@@ -1,11 +1,11 @@
---
collections:
- name: ansible.posix
- version: '<2'
+ version: '<3'
- name: community.general
- version: '<4'
+ version: '<13'
- name: community.mysql
- version: '<3'
+ version: '<5'
- name: community.rabbitmq
version: '<2'
- name: openstack.cloud
diff --git a/docker/manila/manila-share/Dockerfile.j2 b/docker/manila/manila-share/Dockerfile.j2
index 35ff6b8f4..210d8b31c 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 8d17ff4ff..af9297396 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 e3d19178d..956551fbd 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 b248025c8..c849dc18f 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/nova/nova-libvirt/Dockerfile.j2 b/docker/nova/nova-libvirt/Dockerfile.j2
index d65d31584..88e4a52d6 100644
--- a/docker/nova/nova-libvirt/Dockerfile.j2
+++ b/docker/nova/nova-libvirt/Dockerfile.j2
@@ -54,6 +54,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'python3-rbd',
'qemu-block-extra',
'qemu-system',
+ 'qemu-system-modules-spice',
'qemu-utils',
'sasl2-bin',
'swtpm',
diff --git a/docker/openstack-base/Dockerfile.j2 b/docker/openstack-base/Dockerfile.j2
index fafd405d5..1b5d0ae89 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',
@@ -174,10 +174,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'simplegeneric',
'simplejson',
'six',
- 'sqlalchemy-migrate',
'sqlparse',
'stevedore',
- 'tooz[consul,etcd,etcd3gw,zake,redis,postgresql,mysql,zookeeper,memcached,ipc]',
+ 'tooz[consul,etcd,etcd3gw,redis,postgresql,mysql,zookeeper,memcached,ipc]',
'unicodecsv',
'uwsgi',
'warlock',
diff --git a/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2
new file mode 100644
index 000000000..7f38bae19
--- /dev/null
+++ b/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2
@@ -0,0 +1,25 @@
+FROM {{ namespace }}/{{ image_prefix }}prometheus-base:{{ tag }}
+{% block labels %}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{% block prometheus_valkey_exporter_header %}{% endblock %}
+
+{{ macros.install_packages(prometheus_valkey_exporter_packages | customizable("packages")) }}
+
+{% block prometheus_valkey_exporter_install %}
+ADD prometheus-valkey-exporter-archive /prometheus-valkey-exporter-source
+
+RUN ln -s /prometheus-valkey-exporter-source/* prometheus-valkey-exporter \
+ && cp /prometheus-valkey-exporter/redis_exporter /opt/valkey-exporter
+
+{% endblock %}
+
+{{ macros.kolla_patch_sources() }}
+
+{% block prometheus_valkey_exporter_footer %}{% endblock %}
+{% block footer %}{% endblock %}
+
+USER prometheus
diff --git a/docker/rabbitmq/Dockerfile.j2 b/docker/rabbitmq/Dockerfile.j2
index 4f00c818a..36feb9c25 100644
--- a/docker/rabbitmq/Dockerfile.j2
+++ b/docker/rabbitmq/Dockerfile.j2
@@ -24,7 +24,7 @@ COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq
{% set rabbitmq_packages = [
'erlang-27.*',
- 'rabbitmq-server-4.1.*'
+ 'rabbitmq-server-4.2.*'
] %}
{% elif base_package_type == 'deb' %}
diff --git a/docker/rabbitmq/apt_preferences_rabbitmq.debian b/docker/rabbitmq/apt_preferences_rabbitmq.debian
index 714f52fac..cc6404b3e 100644
--- a/docker/rabbitmq/apt_preferences_rabbitmq.debian
+++ b/docker/rabbitmq/apt_preferences_rabbitmq.debian
@@ -1,5 +1,5 @@
Package: rabbitmq-server
-Pin: version 4.1.*
+Pin: version 4.2.*
Pin-Priority: 1000
Package: erlang*
diff --git a/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu b/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu
index 714f52fac..cc6404b3e 100644
--- a/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu
+++ b/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu
@@ -1,5 +1,5 @@
Package: rabbitmq-server
-Pin: version 4.1.*
+Pin: version 4.2.*
Pin-Priority: 1000
Package: erlang*
diff --git a/docker/redis/redis-base/Dockerfile.j2 b/docker/redis/redis-base/Dockerfile.j2
deleted file mode 100644
index 89dccd258..000000000
--- 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 f5f12ac70..000000000
--- 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 83fc60df0..000000000
--- 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 9044f3990..000000000
--- 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 7e5ce923b..000000000
--- 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/telegraf/Dockerfile.j2 b/docker/telegraf/Dockerfile.j2
deleted file mode 100644
index da431aeee..000000000
--- a/docker/telegraf/Dockerfile.j2
+++ /dev/null
@@ -1,46 +0,0 @@
-FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
-{% block labels %}
-LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
-{% endblock %}
-
-{% block telegraf_header %}{% endblock %}
-
-{% import "macros.j2" as macros with context %}
-
-{{ macros.enable_extra_repos(['influxdb']) }}
-{{ macros.configure_user(name='telegraf', homedir='/etc/telegraf') }}
-
-{% set telegraf_packages = [
- 'chrony',
- 'net-tools',
- 'telegraf'
-] %}
-
-{% if base_package_type == 'rpm' %}
-
-{{ macros.enable_extra_repos(['opstools']) }}
-
- {% set telegraf_packages = telegraf_packages + [
- 'collectd',
- ] %}
-{% elif base_package_type == 'deb' %}
- {% set telegraf_packages = telegraf_packages + [
- 'collectd-core',
- ] %}
-{% endif %}
-
-{{ macros.install_packages(telegraf_packages | customizable("packages")) }}
-
-COPY telegraf_sudoers /etc/sudoers.d/kolla_telegraf_sudoers
-COPY extend_start.sh /usr/local/bin/kolla_extend_start
-
-RUN chmod 750 /etc/sudoers.d \
- && chmod 440 /etc/sudoers.d/kolla_telegraf_sudoers \
- && chmod 644 /usr/local/bin/kolla_extend_start
-
-{{ macros.kolla_patch_sources() }}
-
-{% block telegraf_footer %}{% endblock %}
-{% block footer %}{% endblock %}
-
-USER telegraf
diff --git a/docker/telegraf/extend_start.sh b/docker/telegraf/extend_start.sh
deleted file mode 100644
index 2830da1cb..000000000
--- a/docker/telegraf/extend_start.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-TELEGRAF_LOG_DIR="/var/log/kolla/telegraf"
-
-if [[ ! -d "${TELEGRAF_LOG_DIR}" ]]; then
- mkdir -p ${TELEGRAF_LOG_DIR}
-fi
-if [[ $(stat -c %a ${TELEGRAF_LOG_DIR}) != "755" ]]; then
- chmod 755 ${TELEGRAF_LOG_DIR}
-fi
diff --git a/docker/telegraf/telegraf_sudoers b/docker/telegraf/telegraf_sudoers
deleted file mode 100644
index d6e1e092f..000000000
--- a/docker/telegraf/telegraf_sudoers
+++ /dev/null
@@ -1 +0,0 @@
-%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R telegraf\: /var/lib/telegraf, /bin/chown -R telegraf\: /var/lib/telegraf
diff --git a/docker/valkey/valkey-server/Dockerfile.j2 b/docker/valkey/valkey-server/Dockerfile.j2
index 046260d7b..9d187ffbe 100644
--- a/docker/valkey/valkey-server/Dockerfile.j2
+++ b/docker/valkey/valkey-server/Dockerfile.j2
@@ -9,10 +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' %}
- {% set valkey_server_packages = ['valkey'] %}
{% 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 2ec2194ac..d66221af1 100644
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -26,22 +26,20 @@ BASE_ARCH = ['x86_64', 'aarch64']
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 = '2026.1'
+OPENSTACK_RELEASE_CODENAME = 'Gazpacho'
# TODO(mandre) check for file integrity instead of downloading from an HTTPS
# source
@@ -64,9 +62,8 @@ _PROFILE_OPTS = [
'openvswitch',
'proxysql',
'rabbitmq',
- 'redis',
- 'storm',
'tgtd',
+ 'valkey',
],
help='Infra images'),
cfg.ListOpt('main',
@@ -90,20 +87,16 @@ _PROFILE_OPTS = [
'cloudkitty',
'designate',
'gnocchi',
- 'influxdb',
'ironic',
- 'kafka',
'kuryr',
'magnum',
'manila',
'masakari',
'mistral',
'octavia',
- 'redis',
'tacker',
- 'telegraf',
'trove',
- 'zookeeper',
+ 'valkey',
'zun',
],
help='Aux Images'),
@@ -203,9 +196,7 @@ _CLI_OPTS = [
cfg.MultiOpt('regex', types.String(), positional=True, required=False,
help=('Build only images matching regex and its'
' dependencies')),
- cfg.StrOpt('registry',
- help=('The container image registry host. The default registry'
- ' host is Docker Hub')),
+ cfg.StrOpt('registry', help='The container image registry host'),
cfg.StrOpt('save-dependency',
help=('Path to the file to store the docker image'
' dependency in Graphviz dot format')),
diff --git a/kolla/common/sources.py b/kolla/common/sources.py
index 4073ae12a..24a0d7851 100644
--- a/kolla/common/sources.py
+++ b/kolla/common/sources.py
@@ -54,11 +54,11 @@ SOURCES = {
'etcd': {
# NOTE(wszumski): Upgrade one minor version at a time:
# https://etcd.io/docs/v3.6/upgrades/upgrade_3_6/
- 'version': '3.6.4',
+ 'version': '3.6.5',
'type': 'url',
'sha256': {
- 'amd64': '4d5f3101daa534e45ccaf3eec8d21c19b7222db377bcfd5e5a9144155238c105', # noqa: E501
- 'arm64': '323421fa279f4f3d7da4c7f2dfa17d9e49529cb2b4cdf40899a7416bccdde42d'}, # noqa: E501
+ 'amd64': '66bad39ed920f6fc15fd74adcb8bfd38ba9a6412f8c7852d09eb11670e88cac3', # noqa: E501
+ 'arm64': '7010161787077b07de29b15b76825ceacbbcedcb77fe2e6832f509be102cab6b'}, # noqa: E501
'location': ('https://github.com/etcd-io/etcd/'
'releases/download/v${version}'
'/etcd-v${version}-linux-${debian_arch}.tar.gz')},
@@ -156,6 +156,10 @@ SOURCES = {
'type': 'url',
'location': ('$tarballs_base/openstack/keystone/'
'keystone-${openstack_branch}.tar.gz')},
+ 'kolla-toolbox': {
+ 'type': 'url',
+ 'location': ('$tarballs_base/openstack/requirements/'
+ 'requirements-${openstack_branch}.tar.gz')},
'kuryr-base': {
'type': 'url',
'location': ('$tarballs_base/openstack/kuryr/'
@@ -165,11 +169,11 @@ SOURCES = {
'location': ('$tarballs_base/openstack/kuryr-libnetwork/'
'kuryr-libnetwork-${openstack_branch}.tar.gz')},
'letsencrypt-lego': {
- 'version': 'v4.25.2',
+ 'version': 'v4.27.0',
'type': 'url',
'sha256': {
- 'amd64': '6022cf99bdc310ebba21c059fcbf1cb5939e17b2f95dade6bb6f878f9590a961', # noqa: E501
- 'arm64': '3dc4bc343b265a66bb174d3dd03b769bc40c326d680b240b948d12e97ddd4bf8'}, # noqa: E501
+ 'amd64': '898b58bbbca4282d706b4f204593cb94fc2ed13232777236c06dc20259bbcd02', # noqa: E501
+ 'arm64': '2973b412d37e5d652a91bda1a6bf7642491e316bc0f855a614e2c996249014dc'}, # noqa: E501
'location': ('https://github.com/go-acme/lego/'
'releases/download/${version}/'
'lego_${version}_linux_${debian_arch}.tar.gz')},
@@ -178,11 +182,11 @@ SOURCES = {
'location': ('$tarballs_base/openstack/magnum/'
'magnum-${openstack_branch}.tar.gz')},
'magnum-conductor-plugin-helm': {
- 'version': 'v3.16.3',
+ 'version': 'v3.19.0',
'type': 'url',
'sha256': {
- 'amd64': 'f5355c79190951eed23c5432a3b920e071f4c00a64f75e077de0dd4cb7b294ea', # noqa: E501
- 'arm64': '5bd34ed774df6914b323ff84a0a156ea6ff2ba1eaf0113962fa773f3f9def798'}, # noqa: E501
+ 'amd64': 'a7f81ce08007091b86d8bd696eb4d86b8d0f2e1b9f6c714be62f82f96a594496', # noqa: E501
+ 'arm64': '440cf7add0aee27ebc93fada965523c1dc2e0ab340d4348da2215737fc0d76ad'}, # noqa: E501
'location': ('https://get.helm.sh/helm'
'-${version}-linux-${debian_arch}.tar.gz')},
'manila-base': {
@@ -271,66 +275,66 @@ SOURCES = {
'location': ('$tarballs_base/openstack/placement/'
'placement-${openstack_branch}.tar.gz')},
'prometheus-alertmanager': {
- 'version': '0.28.1',
+ 'version': '0.31.1',
'type': 'url',
'sha256': {
- 'amd64': '5ac7ab5e4b8ee5ce4d8fb0988f9cb275efcc3f181b4b408179fafee121693311', # noqa: E501
- 'arm64': 'd8832540e5b9f613d2fd759e31d603173b9c61cc7bb5e3bc7ae2f12038b1ce4f'}, # noqa: E501
+ 'amd64': '35191cbd9d4f8162458b78dd7e93990cccd246044d9a6f788adb1c66ac3ea07b', # noqa: E501
+ 'arm64': '266dda88b64318c27847ef9af4ff450fc178c827550a8039420c5ca8657a4a8b'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/alertmanager/'
'releases/download/v${version}/'
'alertmanager'
'-${version}.linux-${debian_arch}.tar.gz')},
'prometheus-blackbox-exporter': {
- 'version': '0.27.0',
+ 'version': '0.28.0',
'type': 'url',
'sha256': {
- 'amd64': '507a77ff411822fd6b543e8b8d9e00e1cc49408df465588cd746753bf05046e2', # noqa: E501
- 'arm64': '618f0ce44ecec617d5aab28f7e4cb930b41b45fcd3d899536d2b9653fc176e5a'}, # noqa: E501
+ 'amd64': 'caf5d242fb1cf6d5cb678f3f799f22703d4fafea26b03dcbbd7e1f1825e06329', # noqa: E501
+ 'arm64': '63312be0983d85e5109710a7dc93df3051157ae581853fa3655d171cc1b2806e'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/blackbox_exporter/'
'releases/download/v${version}/'
'blackbox_exporter'
'-${version}.linux-${debian_arch}.tar.gz')},
'prometheus-cadvisor': {
- 'version': '0.53.0',
+ 'version': '0.56.2',
'type': 'url',
'sha256': {
- 'amd64': '999c2c77b3ae80ea00b63a876a1ed92cc68e0a307fb3c51057107101e417bd0a', # noqa: E501
- 'arm64': '8c898e2d9a9d8e3b3b8b22a1a29b4489b2a7c962d0b8bca204c4f777d3961feb'}, # noqa: E501
+ 'amd64': 'ad92930f16a2f9da15190675e09eeaceb8fd38637d07a686bb0dd68695f692af', # noqa: E501
+ 'arm64': 'b7a707379496fd7a7b5d2768c5c494427112f534ba5069f889af28ffe6ad11bb'}, # noqa: E501
'location': ('https://github.com/'
'google/cadvisor/'
'releases/download/v${version}/'
'cadvisor'
'-v${version}-linux-${debian_arch}')},
'prometheus-elasticsearch-exporter': {
- 'version': '1.9.0',
+ 'version': '1.10.0',
'type': 'url',
'sha256': {
- 'amd64': '472fcafab63c5a3a2dd17d9a5e9919de4741a72e4f286c1e6252f3d99cebe425', # noqa: E501
- 'arm64': 'd1ba36fe0a6b7ce84d995e728044b53cc869f6033ce0ead4601232205d850947'}, # noqa: E501
+ 'amd64': '1dcf288082a25b2741e98da6c9fc012b6c821696a26c6ac57c20042f24714a74', # noqa: E501
+ 'arm64': '0ff4753a975eb5611c03123d565e8aaa84e4c05f698ce0a2d6c0f437a14bfe34'}, # noqa: E501
'location': ('https://github.com/'
'prometheus-community/elasticsearch_exporter/'
'releases/download/v${version}/'
'elasticsearch_exporter'
'-${version}.linux-${debian_arch}.tar.gz')},
'prometheus-libvirt-exporter': {
- 'version': '2.2.0',
+ 'version': '2.3.1',
'type': 'url',
'sha256': {
- 'amd64': '37e26779be1ebaef2e76d7304a3d3ecfbdc232a5c57645ee0f97b13f014bd842', # noqa: E501
- 'arm64': '94ac011349d60d70c14985df2942d02ecac87c0b7c7a468133394eb1800a22b0'}, # noqa: E501
+ 'amd64': '2e1657d10291059f420a467cbe3363c7353bbce9d5445f0d8d302bd96caaf0a8', # noqa: E501
+ 'arm64': '676dc76766ce4a2eaa8324a3aca8cfe89711536337d3b5b862ddf141fb57a224'}, # noqa: E501
'location': ('https://github.com/'
'inovex/prometheus-libvirt-exporter/'
'releases/download/v${version}/'
'prometheus-libvirt-exporter'
'-${version}.linux-${debian_arch}.tar.gz')},
'prometheus-memcached-exporter': {
- 'version': '0.15.3',
+ 'version': '0.15.5',
'type': 'url',
'sha256': {
- 'amd64': '7e4eb9f4af3971918fbfd35fa31b74dc08b2a728f488f934d8c7c7ecced2c85f', # noqa: E501
- 'arm64': '8565c24a80e30e189479b1092d23a7cc9173fc3f3591881b34ed99c62c3ead6f'}, # noqa: E501
+ 'amd64': '5b82e6579b77fae00683d10d5923329173925a5abd95a799f5489a66136b884c', # noqa: E501
+ 'arm64': '609e6d7484f22fd9e405c0022a9e2d7f86eedef1cfa55772231528271082aeae'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/memcached_exporter/'
'releases/download/v${version}/'
@@ -348,22 +352,22 @@ SOURCES = {
'mtail'
'_${version}_linux_${debian_arch}.tar.gz')},
'prometheus-mysqld-exporter': {
- 'version': '0.17.2',
+ 'version': '0.18.0',
'type': 'url',
'sha256': {
- 'amd64': 'ef6a2322b869d7d3c1ee3493e28a939ff80b367373142b9b2f3f70a6709d00d7', # noqa: E501
- 'arm64': '7d7ba18830ca374812a75cca1519b7c2fdea6d14183787bcd1b36900cdf588ee'}, # noqa: E501
+ 'amd64': '46e8f45654352bdd42d162b2b4a68f00055d45acc168f9c068235b9e3acc39c1', # noqa: E501
+ 'arm64': 'abdb452600ca086b68244aadf8045fbf0b6a48dcb76eed5576995806c176f6ce'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/mysqld_exporter/'
'releases/download/v${version}/'
'mysqld_exporter'
'-${version}.linux-${debian_arch}.tar.gz')},
'prometheus-node-exporter': {
- 'version': '1.9.1',
+ 'version': '1.10.2',
'type': 'url',
'sha256': {
- 'amd64': 'becb950ee80daa8ae7331d77966d94a611af79ad0d3307380907e0ec08f5b4e8', # noqa: E501
- 'arm64': '848f139986f63232ced83babe3cad1679efdbb26c694737edc1f4fbd27b96203'}, # noqa: E501
+ 'amd64': 'c46e5b6f53948477ff3a19d97c58307394a29fe64a01905646f026ddc32cb65b', # noqa: E501
+ 'arm64': 'de69ec8341c8068b7c8e4cfe3eb85065d24d984a3b33007f575d307d13eb89a6'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/node_exporter/'
'releases/download/v${version}/'
@@ -381,16 +385,27 @@ SOURCES = {
'openstack-exporter'
'_${version}_linux_${debian_arch}.tar.gz')},
'prometheus-server': {
- 'version': '3.5.0',
+ 'version': '3.5.1',
'type': 'url',
'sha256': {
- 'amd64': 'e811827af26d822afb09a4f28314f61b618b12cff5369835a67f674d8b46f39a', # noqa: E501
- 'arm64': '173389cc42bf09c4e6e54cb53fa07a5a835d7c261e14775d2183181d6e385d1c'}, # noqa: E501
+ 'amd64': 'cd6aea0ab214b05838470668dfcee7d01a7d91913509a227b00401ca872423f0', # noqa: E501
+ 'arm64': 'cdb1de33d6d3ed73b4633cebedb70258c29e41bd132d287d387f322a046143d2'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/prometheus/'
'releases/download/v${version}/'
'prometheus'
'-${version}.linux-${debian_arch}.tar.gz')},
+ 'prometheus-valkey-exporter': {
+ 'version': '1.82.0',
+ 'type': 'url',
+ 'sha256': {
+ 'amd64': '2d98dd0888f46e206bf3ad1b7c1784934a3a39cd8774cf47615f4c15594547cd', # noqa: E501
+ 'arm64': '13aaa6acbb145848cb97ed3bab22747e094b3f0ed22df83c8ace593e3c527c95'}, # noqa: E501
+ 'location': ('https://github.com/'
+ 'oliver006/redis_exporter/'
+ 'releases/download/v${version}/'
+ 'redis_exporter'
+ '-v${version}.linux-${debian_arch}.tar.gz')},
'skyline-apiserver': {
'type': 'url',
'location': ('$tarballs_base/openstack/skyline-apiserver/'
diff --git a/kolla/common/users.py b/kolla/common/users.py
index de8fc315c..623456071 100644
--- a/kolla/common/users.py
+++ b/kolla/common/users.py
@@ -89,7 +89,7 @@ USERS = {
'uid': 42420,
'gid': 42420,
},
- 'influxdb-user': {
+ 'influxdb-user': { # unused user (influxdb dropped)
'uid': 42421,
'gid': 42421,
},
@@ -185,7 +185,7 @@ USERS = {
'uid': 42447,
'gid': 42447,
},
- 'telegraf-user': {
+ 'telegraf-user': { # unused user (telegraf dropped)
'uid': 42448,
'gid': 42448,
},
@@ -217,7 +217,7 @@ USERS = {
'uid': 42459,
'gid': 42459,
},
- 'redis-user': {
+ 'redis-user': { # unused user (redis dropped)
'uid': 42460,
'gid': 42460,
},
diff --git a/kolla/image/kolla_worker.py b/kolla/image/kolla_worker.py
index 723914f5a..680595f86 100644
--- a/kolla/image/kolla_worker.py
+++ b/kolla/image/kolla_worker.py
@@ -11,6 +11,8 @@
# limitations under the License.
import datetime
+import git
+import importlib.metadata
import json
import os
import queue
@@ -42,7 +44,7 @@ PROJECT_ROOT = os.path.abspath(os.path.join(
class Image(object):
def __init__(self, name, canonical_name, path, parent_name='',
status=Status.UNPROCESSED, parent=None,
- source=None, logger=None, engine_client=None):
+ source=None, logger=None, engine_client=None, labels=None):
self.name = name
self.canonical_name = canonical_name
self.path = path
@@ -57,11 +59,12 @@ class Image(object):
self.plugins = []
self.additions = []
self.engine_client = engine_client
+ self.labels = labels or {}
def copy(self):
c = Image(self.name, self.canonical_name, self.path,
logger=self.logger, parent_name=self.parent_name,
- status=self.status, parent=self.parent)
+ status=self.status, parent=self.parent, labels=self.labels)
if self.source:
c.source = self.source.copy()
if self.children:
@@ -143,6 +146,9 @@ class KollaWorker(object):
self.image_statuses_allowed_to_fail = dict()
self.maintainer = conf.maintainer
self.patches_path = conf.patches_path
+ self.scm_labels = self._get_scm_labels()
+ self.build_created = (datetime.datetime.now(datetime.timezone.utc)
+ .strftime('%Y-%m-%dT%H:%M:%SZ'))
try:
self.engine_client = engine.getEngineClient(self.conf)
@@ -157,6 +163,53 @@ class KollaWorker(object):
LOG.info("Exception caught: {0}".format(e))
sys.exit(1)
+ def _get_scm_labels(self):
+ labels = {}
+
+ # Method 1: Install via PIP (direct_url.json)
+ try:
+ dist = importlib.metadata.distribution('kolla')
+ direct_url_file = [
+ p for p in dist.files if p.name == 'direct_url.json'
+ ]
+
+ if direct_url_file:
+ content = dist.read_text('direct_url.json')
+ if content:
+ data = json.loads(content)
+ if 'url' in data:
+ labels['org.opencontainers.image.source'] = data['url']
+ if 'vcs_info' in data and 'commit_id' in data['vcs_info']:
+ labels['org.opencontainers.image.revision'] = (
+ data['vcs_info']['commit_id'])
+ except Exception as e:
+ LOG.debug(f"Could not retrieve PIP direct_url info: {e}")
+
+ # Method 2: Fallback to Git (if PIP info is local or missing)
+ source = labels.get('org.opencontainers.image.source', '')
+ if not labels.get('org.opencontainers.image.revision') or \
+ source.startswith('file:'):
+ try:
+ repo = git.Repo(PROJECT_ROOT, search_parent_directories=True)
+
+ labels['org.opencontainers.image.revision'] = (
+ repo.head.object.hexsha)
+
+ if source.startswith('file:') or not source:
+ labels['org.opencontainers.image.source'] = (
+ 'https://opendev.org/openstack/kolla')
+
+ LOG.debug("Detected SCM info via Git fallback: %s", labels)
+ except Exception as e:
+ LOG.debug("Git fallback failed: %s", e)
+
+ source_url = labels.get('org.opencontainers.image.source', '')
+ if source_url.startswith('file:'):
+ labels['org.opencontainers.image.source'] = (
+ 'https://opendev.org/openstack/kolla')
+
+ return labels
+
def _get_images_dir(self):
possible_paths = (
PROJECT_ROOT,
@@ -694,10 +747,25 @@ class KollaWorker(object):
else:
parent_name = ''
del match
+
+ oci_labels = self.scm_labels.copy()
+ oci_labels.update({
+ "org.opencontainers.image.title": image_name,
+ "org.opencontainers.image.description": (
+ "OpenStack Kolla {} image".format(image_name)),
+ "org.opencontainers.image.version": self.tag,
+ "org.opencontainers.image.created": self.build_created,
+ "org.opencontainers.image.authors": self.maintainer,
+ "org.opencontainers.image.url": (
+ "https://opendev.org/openstack/kolla"),
+ "org.opencontainers.image.licenses": "Apache-2.0"
+ })
+
image = Image(image_name, canonical_name, path,
parent_name=parent_name,
logger=utils.make_a_logger(self.conf, image_name),
- engine_client=self.engine_client)
+ engine_client=self.engine_client,
+ labels=oci_labels)
# NOTE(jeffrey4l): register the opts if the section didn't
# register in the kolla/common/config.py file
diff --git a/kolla/image/tasks.py b/kolla/image/tasks.py
index 39d759390..6bee905f7 100644
--- a/kolla/image/tasks.py
+++ b/kolla/image/tasks.py
@@ -407,6 +407,9 @@ class BuildTask(EngineTask):
buildargs = self.update_buildargs()
kwargs = {}
+ if hasattr(image, 'labels') and image.labels:
+ kwargs['labels'] = image.labels
+
if self.conf.engine == engine.Engine.PODMAN.value:
# TODO(kevko): dockerfile path is a workaround,
# should be removed as soon as it will be fixed in podman-py
diff --git a/kolla/image/unbuildable.py b/kolla/image/unbuildable.py
index 997b4b86b..5dbc72094 100644
--- a/kolla/image/unbuildable.py
+++ b/kolla/image/unbuildable.py
@@ -26,14 +26,10 @@ UNBUILDABLE_IMAGES = {
"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,8 +37,6 @@ UNBUILDABLE_IMAGES = {
"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 6739c9bd1..d559f6f09 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://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian"
- suite: "bookworm"
+ url: "https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie/"
+ suite: "trixie"
component: "main"
gpg_key: "rabbitmq.gpg"
debian-aarch64:
rabbitmq:
- url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian"
- 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.
@@ -93,14 +94,14 @@ ubuntu:
component: ""
gpg_key: "proxysql.asc"
rabbitmq:
- url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu"
+ url: "https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble"
suite: "noble"
component: "main"
gpg_key: "rabbitmq.gpg"
ubuntu-aarch64:
rabbitmq:
- url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu"
+ url: "https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble"
suite: "noble"
component: "main"
# NOTE(mnasiadka): Since rabbitmq is really noarch and community mirror is not
@@ -111,7 +112,7 @@ ubuntu-aarch64:
rpm:
ceph:
gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage"
- metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch"
+ metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-10-stream&arch=$basearch"
name: "centos-ceph-squid"
crb:
distro: True
@@ -146,7 +147,7 @@ rpm:
distro: true
influxdb:
baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable"
- gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key"
+ gpgkey: "https://repos.influxdata.com/influxdata-archive.key"
name: "influxdb"
kolla_el10:
baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/"
@@ -160,7 +161,7 @@ rpm:
baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum"
gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
repo_gpgcheck: 1
- name: "opensearch32.x"
+ name: "opensearch-3.x"
opensearch-dashboards:
baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum"
gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp"
@@ -174,7 +175,7 @@ rpm:
distro: True
name: "opstools"
proxysql:
- baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9"
+ baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/10"
gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key"
name: "proxysql"
rabbitmq:
diff --git a/kolla/tests/test_methods.py b/kolla/tests/test_methods.py
index 6559c5d4d..e1dc810d1 100644
--- a/kolla/tests/test_methods.py
+++ b/kolla/tests/test_methods.py
@@ -58,7 +58,7 @@ class MethodsTest(base.TestCase):
expectCmd += ">>/etc/yum.repos.d/ceph.repo && "
expectCmd += "echo 'gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage' " # noqa: E501
expectCmd += ">>/etc/yum.repos.d/ceph.repo && "
- expectCmd += "echo 'metalink=https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch' " # noqa: E501
+ expectCmd += "echo 'metalink=https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-10-stream&arch=$basearch' " # noqa: E501
expectCmd += ">>/etc/yum.repos.d/ceph.repo"
self.assertEqual(expectCmd, result)
@@ -191,13 +191,13 @@ class MethodsTest(base.TestCase):
}
result = methods.handle_repos(template_vars, ["rabbitmq"], "enable")
- expectCmd = "RUN echo 'Uris: https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian' " # 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 @@ class MethodsTest(base.TestCase):
expectCmd += ">>/etc/apt/sources.list.d/grafana.sources && "
expectCmd += "echo 'Uris: "
- expectCmd += "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian' " # 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/add-oci-standard-labels-f68cc6eb3a4db7c7.yaml b/releasenotes/notes/add-oci-standard-labels-f68cc6eb3a4db7c7.yaml
new file mode 100644
index 000000000..e9ba30dfb
--- /dev/null
+++ b/releasenotes/notes/add-oci-standard-labels-f68cc6eb3a4db7c7.yaml
@@ -0,0 +1,10 @@
+---
+features:
+ - |
+ Implemented support for Open Container Initiative (OCI) standard labels
+ in generated container images.
+
+ Kolla images are now tagged with standard metadata to improve traceability
+ and observability. The build process automatically detects source
+ information and populates labels such as build creation time, version,
+ source URL, and commit revision.
diff --git a/releasenotes/notes/add-valkey-exporter-e21762a106307538.yaml b/releasenotes/notes/add-valkey-exporter-e21762a106307538.yaml
new file mode 100644
index 000000000..78cf5d4f8
--- /dev/null
+++ b/releasenotes/notes/add-valkey-exporter-e21762a106307538.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Adds support for Valkey monitoring by introducing a new
+ ``prometheus-valkey-exporter`` container image.
diff --git a/releasenotes/notes/ansible-core-2-20-bd912e1767d5f197.yaml b/releasenotes/notes/ansible-core-2-20-bd912e1767d5f197.yaml
new file mode 100644
index 000000000..bf7ac0e7d
--- /dev/null
+++ b/releasenotes/notes/ansible-core-2-20-bd912e1767d5f197.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Version of ``ansible-core`` in ``kolla-toolbox`` has been updated to
+ ``2.20``.
diff --git a/releasenotes/notes/bug-2035975-94c5670049a7e1a6.yaml b/releasenotes/notes/bug-2035975-94c5670049a7e1a6.yaml
new file mode 100644
index 000000000..2c4186576
--- /dev/null
+++ b/releasenotes/notes/bug-2035975-94c5670049a7e1a6.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fix missing nvme-cli package in Glance container.
+ `LP#2035975 <https://launchpad.net/bugs/2035975>`__
diff --git a/releasenotes/notes/bug-2093414-12e2d0f21e34bc59.yaml b/releasenotes/notes/bug-2093414-12e2d0f21e34bc59.yaml
new file mode 100644
index 000000000..0cf23f330
--- /dev/null
+++ b/releasenotes/notes/bug-2093414-12e2d0f21e34bc59.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+ - |
+ Adds the ``django-redis`` package to the Horizon image.
+ This enables using Redis or Valkey as a Django cache and
+ session backend.
+ `LP#2093414 <https://launchpad.net/bugs/2093414>`__
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 000000000..beffc2df0
--- /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 <https://bugs.launchpad.net/kolla/+bug/2132960>`__
diff --git a/releasenotes/notes/deb822-3f0435dfce6da841.yaml b/releasenotes/notes/deb822-3f0435dfce6da841.yaml
new file mode 100644
index 000000000..572248317
--- /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 000000000..68555cfea
--- /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/debian-trixie-spice-814929ed1efbcad1.yaml b/releasenotes/notes/debian-trixie-spice-814929ed1efbcad1.yaml
new file mode 100644
index 000000000..eca8927dd
--- /dev/null
+++ b/releasenotes/notes/debian-trixie-spice-814929ed1efbcad1.yaml
@@ -0,0 +1,8 @@
+---
+fixes:
+ - |
+ Debian Trixie container images require the additional
+ qemu-system-modules-spice operating system package for SPICE consoles
+ to function correctly. This package has therefore been added
+ to the nova-libvirt container build. Further details are available in
+ the bug report at `LP#2138186 <https://launchpad.net/bugs/2138186>`__.
diff --git a/releasenotes/notes/deprecate-collectd-8ba94052bdc9424b.yaml b/releasenotes/notes/deprecate-collectd-8ba94052bdc9424b.yaml
deleted file mode 100644
index c41b720f9..000000000
--- a/releasenotes/notes/deprecate-collectd-8ba94052bdc9424b.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-deprecations:
- - |
- Deprecates support for building ``collectd`` images.
diff --git a/releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml b/releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml
index 7aa96baff..0667f571d 100644
--- a/releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml
+++ b/releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml
@@ -1,4 +1,4 @@
---
deprecations:
- |
- Deprecates support for building ``telegraf`` images.
+ Deprecates support for building ``collectd`` and ``telegraf`` images.
diff --git a/releasenotes/notes/drop-influxdb-cb3161a1e04fa38e.yaml b/releasenotes/notes/drop-influxdb-cb3161a1e04fa38e.yaml
new file mode 100644
index 000000000..47800626e
--- /dev/null
+++ b/releasenotes/notes/drop-influxdb-cb3161a1e04fa38e.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+ - |
+ Support for building ``influxdb`` container images has been dropped.
diff --git a/releasenotes/notes/drop-redis-d286ca1237747c48.yaml b/releasenotes/notes/drop-redis-d286ca1237747c48.yaml
new file mode 100644
index 000000000..9710a37a2
--- /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/releasenotes/notes/drop-telegraf-28dd961f18ed7825.yaml b/releasenotes/notes/drop-telegraf-28dd961f18ed7825.yaml
new file mode 100644
index 000000000..93de985b2
--- /dev/null
+++ b/releasenotes/notes/drop-telegraf-28dd961f18ed7825.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+ - |
+ Support for building ``telegraf`` container images has been dropped.
diff --git a/releasenotes/notes/drop-venus-435234b3bff7f209.yaml b/releasenotes/notes/drop-venus-435234b3bff7f209.yaml
index 879e494a0..b6d221842 100644
--- a/releasenotes/notes/drop-venus-435234b3bff7f209.yaml
+++ b/releasenotes/notes/drop-venus-435234b3bff7f209.yaml
@@ -1,5 +1,5 @@
---
upgrade:
- |
- Support for building ``Venus`` container images has been dropped,
- following it's inactivity and producing breaking Horizon plugin builds.
+ Support for building ``Venus`` container images has been dropped due to the
+ project's inactivity and the Horizon plugin build failures it caused.
diff --git a/releasenotes/notes/flamingo-prelude-b72f2599ed9d25d5.yaml b/releasenotes/notes/flamingo-prelude-b72f2599ed9d25d5.yaml
new file mode 100644
index 000000000..c0b40675a
--- /dev/null
+++ b/releasenotes/notes/flamingo-prelude-b72f2599ed9d25d5.yaml
@@ -0,0 +1,24 @@
+---
+prelude: |
+ The Kolla ``21.0.0`` (Flamingo) release modernises the base operating
+ systems and core infrastructure shipped by the containers. Highlights
+ include:
+
+ * Rocky Linux 10 replaces Rocky Linux 9 as the only supported Rocky base
+ image, removing the Delorean/CentOS Cloud SIG dependency and tightening RPM
+ repository handling via ``repos.yaml`` (including a new versioned Erlang
+ source for aarch64).
+ * Data-plane services received major upgrades: ``MariaDB`` now tracks the
+ 11.4 LTS series with the upstream health check script and the legacy
+ clustercheck image removed, ``ProxySQL`` moves to 3.x, ``Bifrost`` consumes
+ Ansible 11, ``RabbitMQ`` advances to 4.1, and ``Gnocchi`` is updated to
+ 4.7.0.
+ * Observability components were refreshed with ``Fluentd`` 6.x LTS,
+ ``OpenSearch``/``OpenSearch Dashboards`` 3.x, broad ``Prometheus`` exporter
+ and infrastructure bumps (``etcd``, ``helm``, ``letsencrypt-lego``), and the
+ retirement of the ``collectd``, ``telegraf``, and ``prometheus-ovn-exporter``
+ images.
+ * The container portfolio was streamlined: support landed for the
+ ``ironic-pxe-filter`` image and ``neutron-metadata-agent`` wrapper scripts,
+ while dormant services such as ``ironic-inspector`` and ``Venus`` were
+ dropped.
diff --git a/releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml b/releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml
index 6ecb744c0..7ac12764b 100644
--- a/releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml
+++ b/releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml
@@ -1,4 +1,4 @@
---
upgrade:
- |
- Update Fluentd to version 6.x LTS.
+ Updates ``Fluentd`` to the 6.x LTS series.
diff --git a/releasenotes/notes/handle-deprecated-rabbitmq-package-archive-47548e7a41baa68b.yaml b/releasenotes/notes/handle-deprecated-rabbitmq-package-archive-47548e7a41baa68b.yaml
new file mode 100644
index 000000000..b24cc3cdc
--- /dev/null
+++ b/releasenotes/notes/handle-deprecated-rabbitmq-package-archive-47548e7a41baa68b.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+ - |
+ `As announced in July 2025 <https://www.rabbitmq.com/blog/2025/07/16/debian-apt-repositories-are-moving>`__,
+ the RabbitMQ project has changed the location and signing key for their Debian and
+ Ubuntu packages. The repository configuration has been updated accordingly.
+ `LP#2131736 <https://launchpad.net/bugs/2131736>`__
diff --git a/releasenotes/notes/image-purpose-1884e00f993e09d0.yaml b/releasenotes/notes/image-purpose-1884e00f993e09d0.yaml
new file mode 100644
index 000000000..0296e9e1b
--- /dev/null
+++ b/releasenotes/notes/image-purpose-1884e00f993e09d0.yaml
@@ -0,0 +1,7 @@
+---
+prelude: >
+ The Kolla project publishes images to quay.io.
+ These are however only intended for demonstration and testing purposes.
+ In particular, they do not undergo any security scrutiny. If you intend to
+ deploy Kolla for production purposes, you are advised to create and curate your
+ own set of images.
diff --git a/releasenotes/notes/influxdb-repo-gpg-key-04eb924f249e54a5.yaml b/releasenotes/notes/influxdb-repo-gpg-key-04eb924f249e54a5.yaml
new file mode 100644
index 000000000..07b865f2c
--- /dev/null
+++ b/releasenotes/notes/influxdb-repo-gpg-key-04eb924f249e54a5.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Updates the InfluxDB repository GPG key from the expired
+ ``influxdata-archive_compat.key`` to the recommended
+ ``influxdata-archive.key`` as per https://repos.influxdata.com.
diff --git a/releasenotes/notes/ironic-pxe-syslinux-tftpboot-3dc6415ed140dc50.yaml b/releasenotes/notes/ironic-pxe-syslinux-tftpboot-3dc6415ed140dc50.yaml
new file mode 100644
index 000000000..a2764704b
--- /dev/null
+++ b/releasenotes/notes/ironic-pxe-syslinux-tftpboot-3dc6415ed140dc50.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Install syslinux-tftpboot in the ironic-pxe RPM image on all architectures
+ so TFTP boot files (pxelinux.0, chain.c32, ldlinux.c32) are present on
+ aarch64.
diff --git a/releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml b/releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml
index 17c0f9845..9fa74e899 100644
--- a/releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml
+++ b/releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml
@@ -1,5 +1,5 @@
---
-features:
+upgrade:
- |
- ``MariaDB`` version has been updated to ``11.4 LTS``.
- This version will be supported until 29th May 2029.
+ Updates ``MariaDB`` to the ``11.4`` LTS release, which is supported until
+ 29 May 2029.
diff --git a/releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml b/releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml
index d7e00e331..9c3f5a300 100644
--- a/releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml
+++ b/releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml
@@ -1,4 +1,4 @@
---
upgrade:
- |
- Update OpenSearch and OpenSearch Dashboards to version 3.x.
+ Updates ``OpenSearch`` and ``OpenSearch Dashboards`` to version 3.x.
diff --git a/releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml b/releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml
index 8046fc722..2456bcf66 100644
--- a/releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml
+++ b/releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml
@@ -1,4 +1,4 @@
---
upgrade:
- |
- ``rabbitmq`` version has been updated to ``4.1``.
+ Updates ``RabbitMQ`` to version ``4.1``.
diff --git a/releasenotes/notes/rabbitmq-42-84cf0d09c9f33ef4.yaml b/releasenotes/notes/rabbitmq-42-84cf0d09c9f33ef4.yaml
new file mode 100644
index 000000000..f30512f6e
--- /dev/null
+++ b/releasenotes/notes/rabbitmq-42-84cf0d09c9f33ef4.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+ - |
+ ``rabbitmq`` version has been updated to ``4.2``.
diff --git a/releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml b/releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml
index 6bac39901..04382375e 100644
--- a/releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml
+++ b/releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml
@@ -1,5 +1,5 @@
---
-deprecations:
+upgrade:
- |
- The OVN exporter has been removed with immediate effect since 1) it isn't
- used in Kolla Ansible and 2) the source repo was archived in Dec 2024.
+ Removes the ``prometheus-ovn-exporter`` image because it is unused by
+ Kolla Ansible and the upstream repository was archived in December 2024.
diff --git a/releasenotes/notes/rocky-10-4111fa0160be14ab.yaml b/releasenotes/notes/rocky-10-4111fa0160be14ab.yaml
index 2fccba796..98ef21f28 100644
--- a/releasenotes/notes/rocky-10-4111fa0160be14ab.yaml
+++ b/releasenotes/notes/rocky-10-4111fa0160be14ab.yaml
@@ -1,12 +1,12 @@
---
features:
- |
- Adds support for Rocky 10 as a base container image. This is the only major
- version of Rocky supported from the 2025.2 release.
+ Adds support for Rocky Linux 10 as a base container image. From the 2025.2
+ release onward, Rocky Linux 10 is the only supported Rocky Linux major version.
upgrade:
- |
- Rocky 9 is no longer supported as a base container image. Rocky users
- should migrate to Rocky 10.
+ Rocky Linux 9 is no longer supported as a base container image, so
+ deployments using Rocky Linux should migrate to Rocky Linux 10.
- |
- The following images were supported by Rocky 9 but lack suitable packages
- in Rocky, and are no longer supported for Rocky: ``telegraf``.
+ The ``telegraf`` image relied on Rocky Linux 9-only packages and is therefore
+ unavailable for Rocky Linux-based builds.
diff --git a/releasenotes/notes/rocky-ovn-25.09-345468aec8cc8073.yaml b/releasenotes/notes/rocky-ovn-25.09-345468aec8cc8073.yaml
new file mode 100644
index 000000000..5af612530
--- /dev/null
+++ b/releasenotes/notes/rocky-ovn-25.09-345468aec8cc8073.yaml
@@ -0,0 +1,4 @@
+---
+features:
+ - |
+ Updates OVN to version 25.09 on Rocky Linux 10.
diff --git a/releasenotes/notes/switch-proxysql3-base-to-almalinux10-d64c97ba1a894a34.yaml b/releasenotes/notes/switch-proxysql3-base-to-almalinux10-d64c97ba1a894a34.yaml
new file mode 100644
index 000000000..bb2a0f526
--- /dev/null
+++ b/releasenotes/notes/switch-proxysql3-base-to-almalinux10-d64c97ba1a894a34.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+ - |
+ Bumped ProxySQL 3.0.x repository to Almalinux 10 for Redhat family
+ distributions.
diff --git a/releasenotes/notes/update-packages-071d1863639fe3e3.yaml b/releasenotes/notes/update-packages-071d1863639fe3e3.yaml
index 8f30730d0..efe10a960 100644
--- a/releasenotes/notes/update-packages-071d1863639fe3e3.yaml
+++ b/releasenotes/notes/update-packages-071d1863639fe3e3.yaml
@@ -1,11 +1,13 @@
---
upgrade:
- |
- Update monitoring and key infrastructure components to their latest versions.
- This upgrade includes several prometheus-related services, as well as Etcd and Lego.
+ Updates monitoring and key infrastructure components to their latest
+ supported versions. This covers several Prometheus exporters as well as
+ ``etcd``, ``helm``, and ``letsencrypt-lego``.
- * etcd: 3.5.16 -> 3.6.4
- * letsencrypt-lego: 4.20.4 -> 4.25.2
+ * etcd: 3.5.16 -> 3.6.5
+ * helm: 3.16.3 -> 3.19.0
+ * letsencrypt-lego: 4.20.4 -> 4.27.0
* prometheus-blackbox-exporter: 0.25.0 -> 0.27.0
* prometheus-cadvisor: 0.49.2 -> 0.53.0
* prometheus-elasticsearch-exporter: 1.8.0 -> 1.9.0
@@ -14,5 +16,5 @@ upgrade:
* prometheus-node-exporter: 1.8.2 -> 1.9.1
* prometheus-server: 3.2.1 -> 3.5.0 (LTS)
- Additionally, Prometheus-server has been switched to its Long-Term Support (LTS)
- version to ensure greater stability and extended support.
+ Additionally, ``prometheus-server`` now tracks the Long-Term Support (LTS)
+ channel to provide longer maintenance windows.
diff --git a/releasenotes/notes/update-prometheus-server-3.5.1-e23a9826b25573a8.yaml b/releasenotes/notes/update-prometheus-server-3.5.1-e23a9826b25573a8.yaml
new file mode 100644
index 000000000..7404ee0b3
--- /dev/null
+++ b/releasenotes/notes/update-prometheus-server-3.5.1-e23a9826b25573a8.yaml
@@ -0,0 +1,4 @@
+---
+features:
+ - |
+ Updates Prometheus to version 3.5.1.
diff --git a/releasenotes/notes/update-prometheus-services-98085e2ccf13d1fb.yaml b/releasenotes/notes/update-prometheus-services-98085e2ccf13d1fb.yaml
new file mode 100644
index 000000000..f894ffef7
--- /dev/null
+++ b/releasenotes/notes/update-prometheus-services-98085e2ccf13d1fb.yaml
@@ -0,0 +1,16 @@
+---
+upgrade:
+ - |
+ Update Prometheus Alertmanager and exporters to the latest releases:
+
+ * prometheus-alertmanager: 0.28.1 -> 0.31.1
+ * prometheus-blackbox-exporter: 0.27.0 -> 0.28.0
+ * prometheus-cadvisor: 0.53.0 -> 0.56.2
+ * prometheus-elasticsearch-exporter: 1.9.0 -> 1.10.0
+ * prometheus-libvirt-exporter: 2.2.0 -> 2.3.1
+ * prometheus-memcached-exporter: 0.15.3 -> 0.15.5
+ * prometheus-mysqld-exporter: 0.17.2 -> 0.18.0
+ * prometheus-node-exporter: 1.9.1 -> 1.10.2
+
+ prometheus-mtail and prometheus-openstack-exporter were not updated as
+ there are no later stable releases.
diff --git a/releasenotes/source/2024.1.rst b/releasenotes/source/2024.1.rst
index 4977a4f1a..6896656be 100644
--- a/releasenotes/source/2024.1.rst
+++ b/releasenotes/source/2024.1.rst
@@ -3,4 +3,4 @@
===========================
.. release-notes::
- :branch: stable/2024.1
+ :branch: unmaintained/2024.1
diff --git a/releasenotes/source/2025.2.rst b/releasenotes/source/2025.2.rst
new file mode 100644
index 000000000..4dae18d86
--- /dev/null
+++ b/releasenotes/source/2025.2.rst
@@ -0,0 +1,6 @@
+===========================
+2025.2 Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/2025.2
diff --git a/releasenotes/source/index.rst b/releasenotes/source/index.rst
index 30aeae854..690c29a49 100644
--- a/releasenotes/source/index.rst
+++ b/releasenotes/source/index.rst
@@ -9,6 +9,7 @@ Contents
:maxdepth: 2
unreleased
+ 2025.2
2025.1
2024.2
2024.1
diff --git a/setup.cfg b/setup.cfg
index 1ee28f601..2634ee512 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/playbooks/publish.yml b/tests/playbooks/publish.yml
index aaa451b75..7c217fa37 100644
--- a/tests/playbooks/publish.yml
+++ b/tests/playbooks/publish.yml
@@ -37,7 +37,7 @@
url: "https://quay.io/api/v1/repository/{{ item.RepoTags.0 }}/changevisibility"
method: POST
headers:
- Authorization: "Bearer {{ kolla_quay_io_api_oct_2025.token | trim }}"
+ Authorization: "Bearer {{ kolla_quay_io_api.token | trim }}"
body: '{"visibility": "public"}'
body_format: json
loop: "{{ docker_host_info.images }}"
diff --git a/tests/templates/template_overrides.j2 b/tests/templates/template_overrides.j2
index d9d89b3e0..481795cd6 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/tox.ini b/tox.ini
index 4289657a2..30e5fe85b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,10 +1,8 @@
[tox]
minversion = 3.18
envlist = pep8,py310-{docker,podman}
-ignore_basepython_conflict = True
[testenv]
-basepython = python3
usedevelop = True
allowlist_externals = find
rm
diff --git a/zuul.d/debian.yaml b/zuul.d/debian.yaml
index cf6c847b8..bebea13b7 100644
--- a/zuul.d/debian.yaml
+++ b/zuul.d/debian.yaml
@@ -1,48 +1,52 @@
---
- 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
kolla_registry: quay.io
kolla_namespace: openstack.kolla
secrets:
- - kolla_quay_io_creds
- - kolla_quay_io_api_oct_2025
+ - name: kolla_quay_io_creds
+ secret: kolla_quay_io_creds_jan_2026
+ - name: kolla_quay_io_api
+ secret: kolla_quay_io_api_jan_2026
- 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
kolla_registry: quay.io
kolla_namespace: openstack.kolla
secrets:
- - kolla_quay_io_creds
- - kolla_quay_io_api
+ - name: kolla_quay_io_creds
+ secret: kolla_quay_io_creds_jan_2026
+ - name: kolla_quay_io_api
+ secret: kolla_quay_io_api_jan_2026
- 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 +54,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 5a069beb6..1c85b45fb 100644
--- a/zuul.d/nodesets.yaml
+++ b/zuul.d/nodesets.yaml
@@ -16,7 +16,6 @@
nodes:
- name: primary
label: debian-bookworm-8GB
-
- nodeset:
name: kolla-debian-bookworm-arm64-8GB
nodes:
@@ -24,6 +23,18 @@
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:
- name: primary
diff --git a/zuul.d/periodics/copr.yaml b/zuul.d/periodics/copr.yaml
index 77b99cf0f..5b0f9f644 100644
--- a/zuul.d/periodics/copr.yaml
+++ b/zuul.d/periodics/copr.yaml
@@ -6,7 +6,8 @@
timeout: 3600
run: tests/playbooks/copr-erlang-update.yml
secrets:
- - kolla_copr_webhooks
+ - name: kolla_copr_webhooks
+ secret: kolla_copr_webhooks_jan_2026
- project-template:
name: kolla-periodic-copr
diff --git a/zuul.d/rocky.yaml b/zuul.d/rocky.yaml
index 1306998e9..52dedb8dd 100644
--- a/zuul.d/rocky.yaml
+++ b/zuul.d/rocky.yaml
@@ -29,8 +29,10 @@
kolla_registry: quay.io
kolla_namespace: openstack.kolla
secrets:
- - kolla_quay_io_creds
- - kolla_quay_io_api_oct_2025
+ - name: kolla_quay_io_creds
+ secret: kolla_quay_io_creds_jan_2026
+ - name: kolla_quay_io_api
+ secret: kolla_quay_io_api_jan_2026
- project-template:
name: kolla-build-rocky
diff --git a/zuul.d/scenarios/aio.yaml b/zuul.d/scenarios/aio.yaml
index ee58ed05d..392ea7b22 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 4c4dd5465..e72f5b406 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 4105c48ed..474bd3ec6 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 93578439a..c41162ee8 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 4484ccd7f..4c501ad32 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 3627e11a4..f89e8f087 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 81c8e84dd..0974a2aff 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 1ca2a1d22..a531a02b4 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)/
diff --git a/zuul.d/secrets.yaml b/zuul.d/secrets.yaml
index fd3fffc4e..973350100 100644
--- a/zuul.d/secrets.yaml
+++ b/zuul.d/secrets.yaml
@@ -1,66 +1,68 @@
---
- secret:
- name: kolla_quay_io_creds
+ name: kolla_quay_io_creds_jan_2026
data:
username: !encrypted/pkcs1-oaep
- - VsvMvV5wOUfl5B2HJboWfN8mta/Tuk7PXcJf5RfKk4uXP6qYGM4dcMB9EdoJNhMCi7FeA
- NrTZaxf/AjLAkgKlRhz7sPKhmR95+jrFRgEzedpcCamdPkCa+wNQEMNMd0rTwioYUEWm4
- Y+Oa2mIswy5LcUViz38MPQhf0725U5sYtH2qkuhMbU8u8vzYhSk749xtAN6I1T8ziTKKB
- 3FBowFc2rSRJUQPsLLZjTxBHbrk+00p/DPoHLOz9/9Jf5U//jkqx4ziE2w1a4+x/kWlYT
- BPXuRL9wWN9ci2uKuoDRRd6QHJzPIJerKG07YU4PAcS3M245rbjjUQC3n3SQJs3u4kKI8
- rZrxfbmtbfjkzRQXnhnhPk47PebpjnpEUNw6+scnQ+ELdQ0QYGsVRM4x4/ywe5CeFYVDR
- whQQ1iG21FOs3iv592I7P7l4cEKqKFyx9qiV4t2fyLrHgtU+L/05iENH9igGJ0tDCQ5zT
- 2F2laUWGtzUh76txuFDjpBxR3qS62g825dZXaTegkA+v6c1az23lrYTqbTRf63cuAQyYX
- APPRC5QU0URXBoIbWb0ry3O5lr/uudI1ZCLN8SSJhpmZAIlviOfaxrKu9fg2YY9e0xpz9
- CMEWQ/n1EsUyL34Wv189Rvpq4M4GTvozEKsRsjY3u0ygwEUXcH2lEXGOrs+hms=
+ - ErjFWydLer2Pxmg9lZi+Ru2y26IT1BtfdKtueWwNM6UFb52vlbN0KTlDLMqBT9gb60KHw
+ pp+bUnlj0mG+LNVH9Sa93Ux7+g2j+2sh7JovPYLf4N67U+J6DgYeEqavU8KVYo/5eSr5x
+ ZP+YtfEg/pjhROJQW+I7FA+q3YkOHCcvX9GdiszjWhgQdGAXxPhzFsfrwZ2p7yXWoY6If
+ uro0SyPAFvfs9aq8s5rU4YFhCk2ToUwXz2UyJpOI6OmJCNYFZkRwi7Ot0uBBJXnKl2uSl
+ mq5PmliG5qWkjGCB5W+IJrlnHBQGJFuIL2mbWSASL8HdCg/X/sc6DcVjFYylAYm/nfHr8
+ mM2wz9fs7mFGNcpdYnHmcJXkDV7iIOO1zNJASykR2TTSEljGI5ImlgSD2t/3ZfNExtw8o
+ bOZYcnHjfTjmwAymQ0mBerc8d5SaHgm3JOZ/YKrQJllR7SDRMIMnIwTzMNGbqoJ3Or9ir
+ v6J3u3h6AWSZhkdOYc5dnTic5VBiFgbhmyVv0j3W9CpORZMrnzpbFMaCVbgvyMZ3OYBGa
+ 112khOQOA7xazMTfoTOB+MSl5QeHvHJKbHYsphmPYPtjVCBAAs4PxaSAAFGLoGvG268rx
+ rXb2FFYk1Yb4PdYzxOByEL/1PwWTFPtjSHhYSlKQfGF45T8LvWJmgYlqTgK1c8=
password: !encrypted/pkcs1-oaep
- - dR2beX9Bn7O8iCqNHtWo1FWX71vy+CwffDk5rafUh5yew2OVNcVtVjVOPvHwb5zZv1LCd
- MVcgIJe513dM5tQkn2H/HvN/seVu/CfHA6lg6Tj+ueW9VdUH6KiBPr+NCgQWX+Xt3sXbt
- sPzfNGpvTw1ZCUp0nnudZEKPZ2jn83baNMumW8E8xPb4s2kePzINsb8sGvqy6BOk5rUIo
- 7DaEwWrNnq9TTnMcWGIF+fLP5Pin7+fmvnLkT6qRN4v5FszpHYm8YCpv02nzqI1/F9HeM
- P3GtkUdIPxa1+3VwZ/DSA9BWi4VG15jDtaxeZFVGQuMqQAiCx8Jqvd+xX2qugAq1m+U7W
- JobDbaeTYrUmJ1zUaspPZ16RTSf9UGCTaejoSVKM9lJHv6ixtsX7UWkgFvceVrlkt7TtH
- 2mqhBnXvwB6VD5d311WRUfNXz7gb60otisB5G2k/UnRnv1Mu33TPVT7XOFDpVnAvRS3lt
- haJ34N7AWnDIsllvzcmVWTw3wf/6LLfOQrW2Z+vNambyR4Oc+LVUTbEvZVIU65LpOTIn3
- LfDhCLDD3VtnVOrj4UxZsjzmPbday1fziua/7f+CXsShC5erz0ZM65rMCwkjWeI6Kc63A
- 0M27tl+OWHO3KkfFR4tWc3dws3r1kYjQeds0adBHyYD0eL8SJfwZkbtojAQ1JM=
+ - bDvuushT06Xz//YFxAaIM1AWRm8oPNGTm12kRhmuXnpvb7cANH7IjO/z5C2OvSpvNEOhl
+ 5IkBNcnWMI5hhS/uI41l4dBmue5QI9/SlLIIQ9XJrZFqGwbYmbvTioIBkBcvwCDU23dy6
+ pr8n8xBoO6eNvRUDjN0wnFyiq5+vgD+fdsXtQAUHdh67q6WwYIkIbKSSVJAc8C9b1Fx52
+ JhTGlhMFLP+8KwufwBUs1udHuGxIKdqQ2nj+3S+a7codZg20rtEqImmhecSHZ3XzxlNSE
+ hSMwfgrAULHtWX3lqn09n841wejnSx6R6gG2tJ3QrUr8NuZMMMlffwc/95imPtYliIvOC
+ MmYcBO5jDz5mvbZpl4DAGzs3Q8LcBVrsIhoVeMXW5Z/DH4cDldcXzagUR8TbWB16My9GR
+ jm54zuxDX0tIO1tHa+s3SftQf32fEbJSqjEszQYw81DQEoqpNauOugfP+j/5YfWTEv7im
+ Z8WKIkgxv7dnxOxpu6d5DfmarUHIIDyA7Pd3UprQWVPXnTpff9x8zcGhiRYfBWefhCFIM
+ D+ujFoYgbSO9PguPuGFMwHtt2GHSd/gkqoypz/9mLYeY83dcW6YsrpnEQRIJYyeGr54ko
+ 0obnRaoKKlJ9O6am06D01lNhiiG8NhreNONZTbY7h8nvJXyMfYTo0zqHTJhHiY=
- secret:
- name: kolla_quay_io_api_oct_2025
+ name: kolla_quay_io_api_jan_2026
data:
token: !encrypted/pkcs1-oaep
- - oFB1aOCzcHVFgcSj/P6ZC3tEyz2QkzXOQ9T5mDSRligunVNccvMPp/l4jsku5tT5PMq7u
- hGmT8EhLcEOTLUg/ABRHqeb3Kg+HdaJFoubqbZwde92miHuB+vs+BlXX9sTOusa8wvuzd
- XeYfJh2hEMgEVC121GTa8gi0hmGJkuQCjoGFwtQeGCI4eqQNqiyfl5pL7x8woQGv4mb2s
- B+IdGyEKTyD3G6yB7JOBHvawxH7SRh7pJayA5ihsazMCNHjwMKhPX2KjGB59CLW+ewrZW
- L5ecnXP3WsSFqK+bMu4vRuwdcOaSyGK1gqlo3VH0hXG3cUOCo4Y8cNwOMK6i6SUsmcdga
- c3sk7fKAyn9SNHMeSMZBjNU/bqNRMsppwftYW5ll0qHkPjzYo/6pQijv/OQ3Y30eDAQhb
- SGJAfS/SLeVrO4HMR0OoEtpvnepOylKw6vv+d8nKSJ1NaCLY9aA+r71VADyauAiz0tmJQ
- egZ5DrJKwr7ZNb1BqW3LgN3vDDRWqFg0hctN0e0+bypuhIbxQnR5whLuzVeAAdypQCwZB
- 9vigCETV/l1aujlY6puQjoqAjqjUOSz25LvB6bUDbFbjWNDCMfy5+rccUK3O7s5MLaTd9
- xGjgEKxofFQXiJo+QRacOk6s+1DndR+g3N667UXj8o+e8yx33ipBmeS94L8DLc=
+ - I11kiXYFewlPo2Wujs/t8dcMMuqS52rb30WizTQBuJOi4sghsHASzgY3k5li/dwW/EYos
+ TmdyEfWyjrgv5y9Wi7TVYtXrXVpE5ya9ggdgMhOz1HXr3GybePlvzTqJo4kVcza3dMpIC
+ 6UchgV88d2DwTbCY+iropdEfh+DEZPA3nf8WQigoJM5ENTS2Fq017WjBQ5WEBDCUMkp2d
+ ZbNn4M1yJnfusxFKjY5BuZazVN2DNrnLA+JiaCu9+jitr1QumGN1N/6DPv4c3dr/JiBuT
+ 3Dd68CRJKlavfHllkGhOnzoSz9Kabo36QAyxuHd9MC2DBdIaXq2sopAv8adPq8J1uoGJ6
+ GaTrlVUMhUMZIXtnO3PwvrFp10K0pia9IM7II6CdKFi9BHfiNI0G8DWqnG2JqvYBEiQWs
+ f22IDPoqAPGdx02U1j3DxjYJzjOl+7KDOFlRXoGs5b3Fhy8sRtpXI6vCs9oCMXZYPq8kg
+ aj9/tCe/QulQ6v5MQpsweaUkDVThE8oki3vhN1BQg6Ft74l+MuDMTJdDSSObXJThbmLEg
+ Pe47ijg8lK5Vo14pLBqUVr2lKlv4H4DgBtz8h76Cr5S2CJ7n0VoYLojWgB/KoI+A/w/7u
+ Eck+aULrPnRwIMaA7PU8y0vigUgP62tQh/osB9TmGpi5jDFB/mB00YUnHtJBp4=
- secret:
- name: kolla_copr_webhooks
+ name: kolla_copr_webhooks_jan_2026
data:
- urls: !encrypted/pkcs1-oaep
- - HVzZktKoHuCElzSojsc4u+Edrz8pKKngHVuiRKO0STX5pGbQ40QkfLJbOykMjfpE5d9q+
- wH57Vh/zFG6lYxRfHTdCYoPayaREyx9Y9isBNZTg5kKmUdpwavU1WmlaR7lAaGoy3VjgZ
- UA5m0fp7nwuESex7Wi0oj3HPgYGfoMd9OIBgdXPKwo/StNVm903lOwieiTj+vx5rVf0It
- ZYYT6q0+L7U5v7kE2TSrl71RDPyMEo7KpQdEgvR4inF7DVRVLUK7Usb7X/eKCqPnNTqfg
- sSmQ4KWaqUIIpp1xo/Zbwm1nwweRGPadU+mIFgnmT9HMKfRy5GsNOXPn8KGc/NvgJhPlU
- o5zNhfDlK7SHEja/XLjzAptnFmFJa8cYBXXL3wwRNOd+Pg8zi4WpB4pj3nEXJ7eAJP/AZ
- 7IItGuUJUYm367Lt84txgc15lOSAHD0yp/wY1BH9ww01K8Ir7RldV2TnIoSpReLy6oZK6
- 9LlisAwgMr6V+Z3b+xJI/ekSyl9SKaomrQhcV3oJLsUbgexmuDVPpbhXLjnK950pQRbo1
- DxDg5cOn3oP3NUUyGanlWj4S/8UosILueXcqKqqVr9nv74phVYCSfvl6VS6ASBdp8I6Yi
- q69eYtc68f5d4GQuz3BVaUWFni/ehlz98wuyyMoi0MiDK1DTIC4POqBUFJ05zw=
- - H4gyRfIDNeZUaP9VDw9Ho0SA/nuoay5jY7lBZou+yVFD1UAPI7+rfz8WI04T+9zz2Wy2+
- 9CTSxTxdrBOI4ydaB41FMw48DnPYtbgtqnWKPB6da3+N4mWiAu6OoZHYxQTbc+T5z/wFG
- 7wLr/701fYsiJwHFKGDcoDrigpayTyi/2mrgwKyKxZrmRFk9Bm/3I8yAjcT4VSIHR7AT+
- LqV6m/zP3nJCbIZcYhBf+COEXLuZUNaFXrixCUcCkKmGBK0pmdgUlfwq9wh9c18M/kOzr
- HWrzAe33e0FDQM7o44uAzJOYmt+4UVMmgHxjJJMuq6MFX4jGgCWT1cBVoNCEcfETYl6LL
- 05GVVkPGxpNraBXAgQxsYkQ0VwJWB51/NR0JkOA7Q15wp5yMWiqPxIYqnw8Pyc6eQlXAL
- TP9oeNMZV6U7PhhT0BqBADindcESpvDLyov/3ssR5/KsjyLe0siSm6txOspkgMNdJIM5t
- vOcjgITfjJwmkzhmBC+jkPBlIKK/T2RHnDoxnnE85tde/6s4s3bm+UAJadyFU0uf4vOad
- MgN23hyNjtcBY0lbw4vx9VjngQxs99HBw7MleypvU6xIpzGhHi7N/wLhFVnMrzDSPH9hn
- AmIY5AigVeUjCGK0SQ5zph0bWIqcek0te8vO13hG37rvAAD+s+qUMwLEOaHTCk=
+ urls:
+ - !encrypted/pkcs1-oaep |
+ bDxYK2BjxCkgskAeAHZyxXEJkomgp5k9rNEjmR2QA3ddSiI2j2C/o3FZii369X4pfH2Y6
+ QAW5vieKURmkXjVbiHMjxUGlezXpiUYA0TVdpGOmVfmzz2vy42BdQZArO5Xt1TIg+aPao
+ aGGxF355LIGIAr1RMrD3f3ex3oLROxsmgivKGJPpetHZNOFxIfJT+54tCSL/DvEJJYORp
+ S1UeSB9R9MR7Dpp0WSy1FZLrzwPvMx9Tx3HY0QTrK2+T1ooFplMo7HJnvpL3Km5XykK77
+ GaPmu3Irz5IGOyLZLdqaFepblMU0Xj/3/EvsaQsUA1VfR0mGoAIZTJmbdljtiBZ0nSLMn
+ /RrHoCk8JPM+qHtrCXglnQxzGbSzrMGbAxxIsy4CRpl2qjElxqh+nW0eimO3PVHsQfdc1
+ OULS6F37G9WuTZ2jt5kiQp+aDcDlANSSUcLppvaKvlvXTUicFWF/rZZtK8/HaefaAfSwB
+ OWxEdC1zJnFMs5puzpvCUfJt4AaP17UCPyDdTcHwCSOdM2gaX18JgKrLoV7YXX6SEGNMX
+ 6nq8hNKvICsW3DHG6HEVhLZuCRhZNWEpRLv4ihuweuFAxXUcGyvysbT/3XFMEyYJ8Smvn
+ 3ZPd5Zk5hZKZD0V0pQocHs5d/uIfwKAb/QCZ8qtsVs+bERjSFhf9fJFguVJKFg=
+ - !encrypted/pkcs1-oaep |
+ FagelGYHE9xesRXrYBbLWwlBcM0I1NoQEPoLQ/DS4+c8aJoc//uJaW8/e/37djcYs5f8r
+ SU4KvyzZrQpKGA7aHEfvM6jwODF79nNwbFjfC1mQtiVJcCsYGG7KbQLrBZp9QtFdbpHvF
+ l5dBeE+mW7HeO+T8UifbGupgORcOPHNti/yhC8ApV8tqKZh89y7+ziKMbluvAVbCwraau
+ tE5NquigzMDqqAqJHUtNSIouBGE2kWIFV8Uo6gks/XGDxab49z6wY20o2BfGr/biYHCOF
+ F4nQ8r061T6I57GhInSNlYeS2kz1TEdT37k7u1w7WwJlRgQvqJVp802AARbiPeYEC64W+
+ bK/rNOqBd+iVjEK8xKn4VsDGsU/QYMBSK6euo0Ki0G4L5ZUw8CmFiz902nS+WW1UsR9Re
+ 6v1T+Ir1UMiI1KQ5lJg52uzCKZpJ92UshMBxmRoRVXPrudYR+p1Fq3z22pw8vMkmWmLuk
+ lw2vQsUg39UwROimyApTHsXRS/pbyEvZNcuBgD3L95YofiONHYWraYJPfcuBbOrqESCjd
+ sHzJOC+DBHjgMUnEQs40KxaIVvSA9lIyRYTSKReUHzsJz8t6m9CARVTNrzt2OJjHignpI
+ lX7v5sXi1ZgUTeWaWYyzdTU71YYL5SBcCma2TJDrWo2B1JKvDRzBrIzaVewpVM=
diff --git a/zuul.d/ubuntu.yaml b/zuul.d/ubuntu.yaml
index 28a6ac3bb..824789287 100644
--- a/zuul.d/ubuntu.yaml
+++ b/zuul.d/ubuntu.yaml
@@ -24,8 +24,24 @@
kolla_registry: quay.io
kolla_namespace: openstack.kolla
secrets:
- - kolla_quay_io_creds
- - kolla_quay_io_api_oct_2025
+ - name: kolla_quay_io_creds
+ secret: kolla_quay_io_creds_jan_2026
+ - name: kolla_quay_io_api
+ secret: kolla_quay_io_api_jan_2026
+
+- job:
+ name: kolla-publish-ubuntu-noble-arm64-quay
+ parent: kolla-build-ubuntu-noble-arm64
+ post-run: tests/playbooks/publish.yml
+ vars:
+ publisher: true
+ kolla_registry: quay.io
+ kolla_namespace: openstack.kolla
+ secrets:
+ - name: kolla_quay_io_creds
+ secret: kolla_quay_io_creds_jan_2026
+ - name: kolla_quay_io_api
+ secret: kolla_quay_io_api_jan_2026
- job:
name: kolla-build-ubuntu-noble-no-infra-wheels
@@ -53,3 +69,4 @@
periodic:
jobs:
- kolla-publish-ubuntu-noble-quay
+ - kolla-publish-ubuntu-noble-arm64-quay