Compare commits

...

82 commits

Author SHA1 Message Date
Michal Arbet
07103ab0a0 debian: Use bookworkm suite for rabbitmq APT repo
Change-Id: Ifd664de82a81830eeda8ccc019b22ee93768635e
(cherry picked from commit c930c9fb9c)
Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
2025-09-09 16:56:14 +00:00
Bartosz Bezak
37d68ab91b [stable] Use versioned Erlang 26 and 27 repo on aarch64
In stable branches we need both Erlang 26.2 (RabbitMQ 3.13) and
Erlang 27 (RabbitMQ 4.1).

Follows [1], adapted for stable branches where both versions are
required.

[1] https://review.opendev.org/c/openstack/kolla/+/959135

Change-Id: Ied94e0fac36e60cbf227eb9105f659adc1500545
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
(cherry picked from commit 688c3c7ed8)
2025-09-05 10:36:14 +00:00
Michal Nasiadka
d0870105a2 docs: Update contributor guide
Remove references to blueprints and kolla-ansible-core Gerrit group.

Change-Id: I56dbc9f8599075b7cc87726f0507c63e74723e0f
(cherry picked from commit 2a941f8268)
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
2025-08-21 10:44:54 +00:00
Alex-Welsh
1fe1364310 Bump libvirt exporter
Bumps libvirt exporter source from v1.6.0 to v2.2.0. This fixes some
metrics that were lost when the exporter was changed from the old
"tinkoff" source to "inovex".

See also Icc8a3651d601ab45d448c9d252ca6155219d21cf

Closes-Bug: #2120639

Change-Id: Ib738325603173157b4c482f9de6d5d9cea0b758a
Signed-off-by: Alex Welsh <alex@stackhpc.com>
(cherry picked from commit ed094e0af4)
2025-08-15 12:14:10 +00:00
Zuul
97350d8337 Merge "Revert "mariadb: pin to 10.11.13"" into stable/2024.1 2025-08-13 13:08:07 +00:00
Michal Nasiadka
519c7e860f Revert "mariadb: pin to 10.11.13"
This reverts commit 9b1a12cdb4.

Reason for revert: mariabackup fixed

Change-Id: I0b7d73cd536ef2de4d0034596558827fba108e37
Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
2025-08-12 19:59:00 +00:00
Zuul
507e8de9d6 Merge "CI: use opendevmirror for debian/ubuntu builds" into stable/2024.1 2025-08-09 10:46:14 +00:00
Bartosz Bezak
e10ef98805 CI: use opendevmirror for debian/ubuntu builds
Depends-On: https://review.opendev.org/c/opendev/system-config/+/956760

Change-Id: I136bb702b20e941611dd90830e81c9d358a2e355
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
(cherry picked from commit 6ec52073b6)
2025-08-08 12:50:15 +00:00
Pierre Riteau
9b1a12cdb4 mariadb: pin to 10.11.13
Closes-Bug: #2119954

Change-Id: I1e334b47c6ab16eb032458141faae55cf39e3eb4
Signed-off-by: Pierre Riteau <pierre@stackhpc.com>
(cherry picked from commit e478adcbe6)
2025-08-07 18:42:37 +02:00
Zuul
9f7cc8ff32 Merge "[2024.1 only] Add conditionals for Ubuntu Jammy" into stable/2024.1 2025-08-07 11:50:23 +00:00
Zuul
eef56454e0 Merge "update debian release in support matrix" into stable/2024.1 2025-08-07 08:58:00 +00:00
Bartosz Bezak
489989c587 send empty X-Registry-Auth for anonymous pushes
Since Docker 28.3.3 the daemon rejects a push that carries no
`X-Registry-Auth` header [1]. The SDK already sets this header when it
finds credentials, so the breakage happens only on anonymous pushes.

During `PushTask.push_image()` we now check whether the SDK can resolve
credentials for the target registry; if it cannot, we inject
`auth_config={}`, causing the SDK to send the minimal "{}" header that
satisfies the daemon while leaving authenticated pushes unchanged.

Drop this addition when [2] is fixed.

[1] https://github.com/moby/moby/pull/50371
[2] https://github.com/docker/docker-py/issues/3348

Closes-Bug: #2119619

Change-Id: I7a2f3fce223afd74741b40bf62836b325fca5b19
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
(cherry picked from commit ddac7ca1ed)
2025-08-06 15:15:00 +00:00
Bartosz Bezak
8345ef2961 update debian release in support matrix
it was omitted in Caracal cycle

Change-Id: I913208b09771bc18ad3214d7518a837d762f6c33
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
(cherry picked from commit f25cf12455)
2025-08-04 14:09:29 +00:00
Bartosz Bezak
2a6a901291 change erlang arm64 repo to rhel based
centos stream diverged too much
nothing provides libcrypto.so.3(OPENSSL_3.4.0)(64bit)
needed by erlang-26.2.5.14-1.el9.aarch64

Change-Id: I3a0aa82d0903b341156c2fce68393cc4031e7728
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
(cherry picked from commit ac1969542d)
2025-07-28 14:46:10 +00:00
Zuul
a2c688add9 Merge "Add rsync package to the nova-ssh container" into stable/2024.1 2025-07-22 10:18:11 +00:00
Zuul
48f076b2d9 Merge "Build RabbitMQ 4.1 in stable releases" into stable/2024.1 2025-07-21 11:31:30 +00:00
Maksim Malchuk
fd4a0e9d5e Add rsync package to the nova-ssh container
This change fixes the issue with absent rsync package when
'remote_filesystem_transport = rsync' is enabled in nova_compute.

Closes-Bug: #2113926
Change-Id: Ie6719928e4ec2901d661f44c9f259add35afa269
Signed-off-by: Maksim Malchuk <maksim.malchuk@gmail.com>
(cherry picked from commit bc018d398b)
2025-07-18 13:54:14 +00:00
Matt Crees
23a40140e9 Build RabbitMQ 4.1 in stable releases
RabbitMQ 4.1 is released, meaning 4.0 and prior are out of community
support. This patch allow for building 4.1 in the `rabbitmq-4-1`
container, while keeping the existing version in the standard `rabbitmq`
container.

We do not need to build 4.0 in past releases, as 4.1 supports upgrades
from 4.0.x and 3.13.x. [1].

Same method as in: https://review.opendev.org/c/openstack/kolla/+/918974

1. https://github.com/rabbitmq/rabbitmq-server/releases/tag/v4.1.0

Change-Id: I4a4fe7244ea0b92cf12b96f4dee8a7abd34028d9
Signed-off-by: Matt Crees <mattc@stackhpc.com>
Co-Authored-by: Seunghun Lee <seunghun@stackhpc.com>
(cherry picked from commit af9f7cf13f)
2025-07-18 14:51:21 +01:00
Grzegorz Koper
fa6431e210 [2024.1 only] Add conditionals for Ubuntu Jammy
This commit aligns Ubuntu Jammy behavior with Debian and
Ubuntu Noble by explicitly removing appropriate `.sources` files
and relying solely on the sources configured by Kolla.
This ensures consistent and reproducible builds both in CI and
on local environments.

Closes-Bug: #2112140
Change-Id: Icfb64a4e2b39e722cb88e72f8f2605379484b54a
Signed-off-by: Grzegorz Koper <grzegorzk@stackhpc.com>
2025-07-18 13:47:57 +02:00
Joachim de Groot
c03188b4d6 Fix glance-api: add missing lsscsi package
Closes-Bug: #2111828
Change-Id: I8e20c77a8f1538162fc1dac9dc92c837348a09f4
Signed-off-by: Maksim Malchuk <maksim.malchuk@gmail.com>
(cherry picked from commit aa2e504a70)
2025-07-15 13:13:57 +00:00
Michal Nasiadka
5f9055397a ovn: Fix log permissions
ovn is running as root, and fluentd can't read it's log files,
so we need to precreate these.

Closes-Bug: #2115244

Change-Id: Icb0e47cf95a67cb4585c71f863e542bc59ff5009
Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
2025-07-14 06:48:37 +00:00
Bartosz Bezak
92c9782e83 Enable EPEL repo for Ceph deps in glance and gnocchi
Ceph Reef client dependencies now require EPEL repo on EL9.
See thread here [1].

[1] https://lists.centos.org/hyperkitty/list/devel%40lists.centos.org/thread/BZM3RO2LNAMB47FBT2QO3ZOSGBHPCO3V/

Closes-Bug: #2115448

Change-Id: I87e4135425e721f2f750402b3fcc6404643a3bd3
Signed-off-by: Bartosz Bezak <bartosz@stackhpc.com>
(cherry picked from commit 62a69190cb)
2025-07-04 14:50:31 +00:00
Michal Nasiadka
9f557299c6 [2024.2 and earlier]: horizon: Work around pyscss bug
See [1] and [2].

[1]: https://bugs.launchpad.net/horizon/+bug/2045394
[2]: https://launchpadlibrarian.net/792177956/horizon_4%3A25.1.0-0ubuntu1_4%3A25.1.0-0ubuntu1.1.diff.gz

Change-Id: Ie99f9d941e91d438f2d983b0a0e5af01483ade82
(cherry picked from commit cb204aa173)
2025-06-05 12:47:57 +00:00
Zuul
a3ca3af0fc Merge "Revert "mariadb: pin to 10.11.11"" into stable/2024.1 2025-05-23 18:33:08 +00:00
Michal Nasiadka
4dde14f101 Revert "mariadb: pin to 10.11.11"
This reverts commit eb29ede7b3.

Reason for revert: 10.11.12 is revoked upstream

Change-Id: I9d559990f96e6d293da6baf8d9b7680be58ff440
2025-05-15 05:07:50 +00:00
Michal Nasiadka
8f50223bb1 CI: Drop upgrade jobs from 2023.2
2023.2 is getting EOL

Change-Id: Icb00df50b8628d1d83bc5e5c07d4c6b0fdb34e7c
2025-05-15 07:03:20 +02:00
Michal Nasiadka
eb29ede7b3 mariadb: pin to 10.11.11
Closes-Bug: #2110122

Change-Id: If301b9ebd7d0dc38bea4d60467e8e80a7a49825d
(cherry picked from commit b0cd0dfe6e)
2025-05-07 18:09:18 +00:00
Zuul
1e2bcd5f26 Merge "[2024.2 and 2024.1 only] Fix issue with 'pycadf' installation" into stable/2024.1 2025-04-29 11:59:15 +00:00
Maksim Malchuk
ca00700185
[2024.2 and 2024.1 only] Fix issue with 'pycadf' installation
Fixes the issue introduced in I5a9162a30b23cfabb64dabe5c12c226fa8627abd
when 'openstack-base' container built with 'pycadf' plugin from git.

Closes-Bug: #2107733
Related-Bug: #2074075
Change-Id: I7944c59d1bb83d42631c3d0ecc14aa8e25ce620e
Signed-off-by: Maksim Malchuk <maksim.malchuk@gmail.com>
(cherry picked from commit 3ef707286e)
2025-04-20 23:23:54 +03:00
Michal Nasiadka
ed303dc385 nova/aarch64: Fix qemu-efi build failures
It probably has been omitted in Ubuntu 24.04 introduction since
aarch64 build jobs have not been stable.

Removing from nova-compute since it's already in nova-base,
nova-libvirt's parent is base - so updating to qemu-efi-aarch64

Change-Id: Idae2e87bfc8a556a090085e46f96d11279080f0f
(cherry picked from commit 7a0c639da3)
2025-04-16 11:28:39 +00:00
Seunghun Lee
0bb6a65ed6 [2024.1 only] Extend base_tag check to cover more ubuntu base image tags
https://hub.docker.com provides base Ubuntu images with two type of
namings.
For example for Ubuntu Noble, there are ``24.04``, ``noble`` and
``noble-20250127``.

Currently whenever Kolla checks base tag to determine which Ubuntu
release is being used, it only expects tag of version number.
So if users use base tag with release codename, they will not get
correct python version or other dependencies.

Fixing this by extending all base_tag checks to include case for
release codenames.

Change-Id: Iab02de97cdde79db540c7336512d7014f9b71753
2025-04-03 22:11:06 +02:00
Zuul
6aba731d6a Merge "Add support for Ubuntu 24.04 LTS" into stable/2024.1 2025-04-01 07:31:44 +00:00
Zuul
6fd8f4f4f5 Merge "Added systemd-standalone-sysusers package for Debuntu" into stable/2024.1 2025-03-31 22:55:11 +00:00
Michal Nasiadka
ce5b6560bc Add support for Ubuntu 24.04 LTS
Add setuptools because Python3.12 dropped distutils

taskflow needs to be bumped to 5.8.0 because that's the first version
that supports python3.12

Needed-By: https://review.opendev.org/c/openstack/kolla-ansible/+/932539

Co-Authored-By: Jakub Darmach <jakub@stackhpc.com>
Change-Id: Ie12c43dc1de122c203edc28181366457ccd67834
(cherry picked from commit 5f9850c5ed)
2025-03-31 21:27:22 +00:00
Piotr Milewski
8cf022c355 Opensearch and opensearch-dashboard image size reduction
When building an image, the RUN command grants
permissions which causes the previous layer
to be copied.

During the test, the image was reduced from 2.84GB to 1.57GB

Closes-Bug: #2104007

Change-Id: I7d2367d4c277287f4db2885f5720a35d934f94b7
(cherry picked from commit 47a6ad020d)
2025-03-26 06:21:28 +00:00
Bartosz Bezak
9ef6688a99 tests: Add cross-arch test for etcd
Ensure that when building etcd with --base-arch aarch64, Kolla
uses the arm64 tarball instead of amd64.

Related-Bug: #2103810

Change-Id: I6248cb6646b2b0c7af1c29f9a0a244cef1c4cf05
(cherry picked from commit 9c6f6ae2d9)
2025-03-24 11:24:18 +00:00
Bartosz Bezak
6053fefb34 fix sources.py based cross-arch builds
Derive debian_arch from base_arch by default when not set by the user.
This ensures that cross-architecture builds correctly download
the appropriate binaries, while preserving any explicit user override.

Closes-Bug: #2103810

Change-Id: I11b7e19ac3a12147138a98fc1e030767f70b44c9
(cherry picked from commit 915189d10b)
2025-03-24 11:02:21 +00:00
Zuul
34d537a90e Merge "Adds missing nvme package in cinder-backup" into stable/2024.1 2025-03-19 17:33:32 +00:00
Michal Arbet
0d3cec1153 Added systemd-standalone-sysusers package for Debuntu
This package provides a standalone sysusers binary with
minimal dependencies, designed for use in non-systemd
environments.

This package simply ensures that all packages that want
to install systemd as dependency will have to settle for
this one because the systemd package breaks
systemd-standalone-sysusers, as it is an alternative.

This backport is necessary to fix failing Opensearch
builds while backporting Noble support to 2024.1.

[1] https://packages.debian.org/bookworm/systemd-standalone-sysusers
[2] https://packages.ubuntu.com/noble/systemd-standalone-sysusers

Needed-by: Ie12c43dc1de122c203edc28181366457ccd67834
Change-Id: I3ba85069c265844bd2f8b5e6d2b14f32e4898cfd
(cherry picked from commit 55168f909d)
2025-03-13 10:27:18 +00:00
Piotr Milewski
9ac6af71cf Prometheus update all exporters to the latest versions
prometheus-alertmanager: 0.27.0 -> 0.28.0
prometheus-blackbox-exporter: 0.24.0 -> 0.25.0
prometheus-cadvisor: 0.49.1 -> 0.49.2
prometheus-elasticsearch-exporter: 1.7.0 -> 1.8.0
prometheus-memcached-exporter: 0.14.2 -> 0.15.0
prometheus-mtail: 3.0.0-rc54 -> 3.0.8
prometheus-mysqld-exporter: 0.15.1 -> 0.16.0
prometheus-node-exporter: 1.7.0 -> 1.8.2
prometheus 2.50.1 -> 2.55.1

Co-authored-by: Piotr Parczewski <piotr@stackhpc.com>

Change-Id: I9359df23a41a600dd46dbc1812a54be57fd33f71
(cherry picked from commit 0f5c679dc9)
2025-02-21 16:54:23 +00:00
FelipeAFV
e99c27ac41 Adds missing nvme package in cinder-backup
The package moved to the cinder-base image since it already added to
the cinder-volume in I84c7633765749a5e9ced983505ef290c32154ccc.

Closes-Bug: #2089587
Change-Id: I06e61ab388d9ecfa78e5d1fe1ae9cb8602d1cd36
Signed-off-by: FelipeAFV <ffigueroa@whitestack.com>
Signed-off-by: Maksim Malchuk <maksim.malchuk@gmail.com>
(cherry picked from commit 4a7af468b6)
2025-02-11 13:13:33 +00:00
Michal Nasiadka
fddc922c3a Fix genconfig
Currently tox -e genconfig fails with stevedore issues,
because tox is not doing sdist.

Closes-Bug: #2051575

Change-Id: Idfc26fe380a546d0fd712a531e5913090b01d808
(cherry picked from commit d3bb06d5ce)
2025-01-24 15:47:13 +00:00
Zuul
efc4b72d18 Merge "ironic: Fix dnsmasq.log permissions" into stable/2024.1 2025-01-14 12:14:20 +00:00
Michal Nasiadka
771272100b openvswitch: Fix logs dir permission
Closes-Bug: #1795609

Change-Id: Iedfb2df027c0cefc45668a76d45ce62193aba9ef
(cherry picked from commit a9c94abf53)
2025-01-14 05:21:12 +00:00
Michal Nasiadka
8a856586c4 ironic: Fix dnsmasq.log permissions
Closes-Bug: #2093881
Change-Id: I3f45178c07a9cd054e572ff80d0e19fb014d69d3
(cherry picked from commit ac2bbcc9f1)
2025-01-14 05:20:06 +00:00
Michal Nasiadka
5e94215406 neutron-dhcp-agent: change dnsmasq.log rights
Fixes /var/log/kolla/neutron/dnsmasq.log rights so
fluentd can read logs from that file.

Closes-Bug: #1693712
Change-Id: I57e36ef07e8840eead2efde77e0ab9dfd4842931
(cherry picked from commit 0f5e399542)
2025-01-07 15:14:19 +00:00
Michal Nasiadka
86d6fac7af magnum: Add helm binary for magnum-cluster-api
Closes-Bug: #2091608

Change-Id: I52105f6cbf7529ce107cabf8a38a10525be7435c
(cherry picked from commit 592f341dd2)
2024-12-17 06:10:13 +00:00
Michal Nasiadka
b0c98b0987 CI: Stop using LABEL for ephemeral0
For some reason it doesn't work in raxflex, i.e. the created filesystems
label is not seen.

Change-Id: I9c805b866ee359d2da150438ca78be25b1462988
(cherry picked from commit a6a15966aa)
2024-12-10 07:13:40 +00:00
Michal Nasiadka
0a8d76e861 CI: Use debian/ubuntu images from quay mirror
Depends-On: https://review.opendev.org/c/openstack/kolla-ansible/+/936666

Change-Id: I3fab494e939478458c2c299303f5c2c91943e0ec
(cherry picked from commit 7ba43d2820)
2024-11-29 07:25:42 +00:00
Michal Arbet
68e96e72f4 Add way to backup from MariaDB replica server
ProxySQL reports its version to MySQL clients,
causing the backup process to fail when ProxySQL is used.

This patch adds a new script that handles backups from
the replica server directly, without modifying the original
backup script. The new script retrieves the server address
via the load balancer and connects directly to the replica
server to execute the backup.

Moreover, this reduces the risk that the backup will be inconsistent
or that it will block OpenStack MySQL clients, because they are
connected to a different server, and no one is connected to the replica,
or that it will overload the load balancer (such as ProxySQL or HAProxy)
which listens on the VIP.

Closes-Bug: #2080818
Change-Id: Ibf7e40e8b059d733e114963022df06180249c650
(cherry picked from commit ec4c4310dd)
2024-11-07 16:31:07 +00:00
Michal Arbet
648be98c9b Fix handling configs in base image
This commit restructures the handling of configuration
files in set_configs.py, introducing functions for managing
default configuration files first.

Closes-Bug: #2060855
Change-Id: If91e0330dc149143c82d2183b8ddf6fa9f68d80e
(cherry picked from commit 36c12676ff)
2024-11-07 09:44:40 +00:00
Rafal Lewandowski
af464eeb36 Fix missing tss user in Ubuntu/Debian nova containers
Closes-Bug: #2067050
Change-Id: Ife426c073048ff27bdfd9f3af30aaaab8c2e4497
(cherry picked from commit 757cf4c147)
2024-10-22 18:51:35 +00:00
Zuul
7eb2f9e9d9 Merge "aarch64: Exclude syslinux from ironic conductor packages" into stable/2024.1 2024-10-03 21:34:54 +00:00
Bartosz Bezak
97a6d193be aarch64: Exclude syslinux from ironic conductor packages
The 'syslinux' package is not available on aarch64, so it is only
included in the ironic conductor packages for x86_64 systems.

Related-Bug: #1749780
Change-Id: I3eea308a0a70e47dd3b185eece106185b25616f5
(cherry picked from commit 7b4913e6f8)
2024-10-03 18:30:41 +00:00
Bartosz Bezak
4537f2b534 aarch64: fix name of rabbitmq copr repo
it should be the same as in repos.yaml

Change-Id: Ieb413f7a4bd1989d7f29309368b6b218d1395e0b
(cherry picked from commit 672601a3e6)
2024-10-03 16:19:01 +00:00
Michal Nasiadka
9a0914d10d erlang/aarch64: Move to openstack-kolla owned COPR
Change-Id: I219418411470bdeae9af84277f5150a623c05e69
(cherry picked from commit 2480da6d98)
2024-10-02 15:17:48 +00:00
Zuul
b3eaf7df8e Merge "Revert "Pin OpenSearch Dashboards to 2.15"" into stable/2024.1 2024-09-27 14:17:13 +00:00
Bartosz Bezak
d9639f05c8 Revert "Pin OpenSearch Dashboards to 2.15"
This reverts commit a58a7f88de.

Reason for revert: bug fixed upstream https://github.com/opensearch-project/OpenSearch-Dashboards/pull/8097

Change-Id: Ib22a7ffaecc97408dcffe351232abbfdf7122c7c
2024-09-27 09:28:35 +00:00
Rafal Lewandowski
abf7a4cf85 Add missing iso packages to ironic-conductor
Closes-Bug: #2067133
Change-Id: I097ad8988a4707173c19006d83b4d76cec5d0940
(cherry picked from commit 8f0a3b5871)
2024-09-24 07:08:12 +00:00
Zuul
04ce136b99 Merge "Fix cinder-backup: add missing sysfsutils,lsscsi package" into stable/2024.1 2024-09-22 02:23:55 +00:00
Zuul
b5e84f4bc6 Merge "Pin OpenSearch Dashboards to 2.15" into stable/2024.1 2024-09-19 13:59:00 +00:00
Bui Doan Dang
b9584882ed Fix cinder-backup: add missing sysfsutils,lsscsi package
Closes-Bug: #2078886
Change-Id: Ia678484c001c66a9db675035dbb4505b0448bf58
Signed-off-by: Bui Doan Dang <doandang27052000@gmail.com>
(cherry picked from commit 546084b0a8)
2024-09-18 08:17:03 +00:00
Matt Crees
6f63211cff rabbitmq: Switch to Cloudsmith mirrors
PackageCloud is discontinued as of August 18th [1].

Also corrects the versions docs for RabbitMQ and Erlang.

Use new RMQ Cloudsmith repo URLs, these now use
*.rabbitmq.com domains [2].

1. https://www.rabbitmq.com/blog/2024/08/11/package-repository-updates#packagecloud-will-be-discontinued-on-aug-18th-2024
2. https://www.rabbitmq.com/blog/2024/08/11/package-repository-updates#mirrors-now-use-rabbitmqcom-domains

Change-Id: I2cce3dd2540c878878ff0aae80ee5a7e0f455da7
(cherry picked from commit 528b7eef16)
2024-09-13 15:28:26 +00:00
Mark Goddard
a58a7f88de Pin OpenSearch Dashboards to 2.15
OpenSearch Dashboards 2.16.0 discover page hangs after initial
deployment due to an upstream bug [1].

This change fixes the issue by pinning OpenSearch Dashboards to 2.15.

Note that it seemed safer not to pin OpenSearch to fix this issue, to
avoid breaking deployments that have already deployed 2.16.

[1] https://github.com/opensearch-project/OpenSearch-Dashboards/issues/7626

Closes-Bug: #2077319
Change-Id: I0de9928b2657ab5f31580325e866bff28f2b5510
(cherry picked from commit 3c49991a86)
2024-09-09 10:28:04 +00:00
Seunghun Lee
4df43abd70 Fix symlinking of openstack-base source
Original symlinking works fine with a tarball source for the
requirements repo.

However, when user supplies git type source of it, we cannot
guarantee that the source direcotry name contains ``requirements``.

This patch fixes it by moving plugins directory outside of
openstack-base directory, which ultimately allow us to use simpler
symlinking as openstack-base-archive would be the only directory
inside.

Closes-Bug: #2074075
Change-Id: I5a9162a30b23cfabb64dabe5c12c226fa8627abd
(cherry picked from commit 978a2864f9)
2024-09-03 12:59:24 +00:00
Michal Nasiadka
9c54f236bc keystone: Fix requests-kerberos installation
Since it was bundled with plugins installation, and we did not
have any plugins in keystone container - it was not installed
at all.

Adding in libkrb5 dependencies for requests-kerberos.

Closes-Bug: #2078305
Change-Id: I51c69d0673280e351daa410d943f769d33a10d6c
(cherry picked from commit 082d90cca0)
2024-09-03 06:02:38 +00:00
Michal Nasiadka
08f6b89cc3 CI: Disable CentOS/Rocky/Ubuntu aarch64 jobs
Since Linaro shut down their nodepool provider - OpenDev infra
is left with OSUOSL cloud with max 15 instances running - let's
not put any additional strain on CI (especially that it seems
there are some I/O or similar issues that cause our jobs to
time out).

Change-Id: I7f0f723b37e552c4ea01bf51b6354209608d904a
(cherry picked from commit fd4f1a8a82)
2024-08-27 15:19:22 +00:00
Maksim Malchuk
7bc03b99ff Configure Apache services to use correct locale
Closes-Bug: #2076453
Change-Id: I6af9baf09a19a7dbcaf98585870aa44ff79398d3
Signed-off-by: Maksim Malchuk <maksim.malchuk@gmail.com>
(cherry picked from commit 2caa64df67)
2024-08-21 15:13:16 +00:00
Zuul
b44df3b5d0 Merge "Trivial fix letsencrypt base image" into stable/2024.1 2024-08-20 12:50:19 +00:00
Zuul
dd701c4d39 Merge "Pass rabbitmq apt preferences into kolla-toolbox" into stable/2024.1 2024-08-01 09:14:27 +00:00
Michal Arbet
6f755f9e75 Trivial fix letsencrypt base image
Replace cinder -> letsencrypt typo in
letsencrypt-base image.

Change-Id: Ia21f81d9cb0850e37882dd6155b4d2d6ba774a05
(cherry picked from commit 7aec372480)
2024-07-29 07:50:00 +00:00
Sven Kieske
745c911f57 [docs] remove not working dev setup
also add the command to clone the repository
and use the pip-install `--editable` option in
it's long form so it's immediately clear what it does.

Change-Id: I00403f967c06af6d8c718ed1245aaa01f1218add
Signed-off-by: Sven Kieske <kieske@osism.tech>
(cherry picked from commit bdf5dae433)
2024-07-18 15:17:29 +00:00
Tadas Sutkaitis
cc66d0a534 fix: apple silicon architecture selection
Closes-Bug: #2073256

Change-Id: I9fdccbe3bde07a7f9a1e6ac82b1096a024e1b0ee
(cherry picked from commit 8b98145f23)
2024-07-16 16:18:35 +00:00
Matt Crees
14081a8251 Pass rabbitmq apt preferences into kolla-toolbox
If the latest and targeted rabbitmq-server dependencies mismatch,
kolla-toolbox will fail to build.

Closes-Bug: #2066171
Change-Id: I64e9442545d98364585e3c632ae9142cd6b4f9bf
(cherry picked from commit 006ccee101)
2024-07-11 10:12:32 +00:00
Bartosz Bezak
4936a6ff98 add kayobe to release management doc's Launchpad admin section
Kayobe moved away from Storyboard some time ago

Change-Id: I9e57150645aebf4b684c609b9b356b8921aa7333
(cherry picked from commit f36e45382e)
2024-06-27 07:45:00 +00:00
Bartosz Bezak
bbe297d5b9 CI: Pin requests to <2.32 for publish jobs
Periodic jobs are failing because Zuul Ansible executor runs with
Ansible 8 which uses community.docker collection that needs requests<2.32.
Revert this patch when Zuul supports Ansible 10, and/or Ansible 9 gets
fixed community.docker collection. [1]

[1] https://github.com/ansible-collections/community.docker/issues/868

Related-Bug: #2066364
Change-Id: I1dda73b0bc9a9f57ec8fda3f2234449b04906410
(cherry picked from commit 428f371249)
2024-06-12 05:59:07 +00:00
Michal Nasiadka
7efe8a37f0 Drop packaging requirement and unpin docker-py
Change-Id: I11d306be5e5bb3d5b05b50dd8ee64ac9424854a1
(cherry picked from commit 968711579f)
2024-05-28 12:20:16 +00:00
Michal Nasiadka
eb23d9cc28 CI: pin codespell to <2.3.0
Change-Id: I403d933b029e846e682fd41a62ada4fc73cdfd12
(cherry picked from commit 91f91e1cc2)
2024-05-28 12:19:18 +00:00
Michal Nasiadka
adaef5768c [2024.1 only] switch rpm distros to Cloud SIG Caracal repos
Change-Id: Ibf4d24657f246a191a4b4c1ab95b47d6873e468a
2024-05-13 13:24:30 +00:00
Michal Nasiadka
84f036a54b collectd: Mark unbuildable on rocky
Since Rocky 9.4 release - delivered libpqos is 5, not 4 - and
CentOS Stream 9 OpsTools packages have not been rebuilt.

Related-Bug: #2065362
Change-Id: Ic0929becd44f25a9fb8d6d789b8169f41c95a226
(cherry picked from commit 25f357ecc8)
2024-05-10 14:41:49 +00:00
OpenStack Release Bot
d48e7ee9da Update TOX_CONSTRAINTS_FILE for stable/2024.1
Update the URL to the upper-constraints file to point to the redirect
rule on releases.openstack.org so that anyone working on this branch
will switch to the correct upper-constraints list automatically when
the requirements repository branches.

Until the requirements repository has as stable/2024.1 branch, tests will
continue to use the upper-constraints list on master.

Change-Id: I8d4b9c6b816bef4f91a04401035c6a689ce979ea
2024-05-08 10:11:58 +00:00
OpenStack Release Bot
e46a6ecb9a Update .gitreview for stable/2024.1
Change-Id: I46f20854bec6d7acb75d86aa3ff0cfc4865e536f
2024-05-08 10:11:55 +00:00
117 changed files with 1629 additions and 252 deletions

View file

@ -2,3 +2,4 @@
host=review.opendev.org
port=29418
project=openstack/kolla.git
defaultbranch=stable/2024.1

View file

@ -87,6 +87,12 @@
- name: primary
label: ubuntu-jammy
- nodeset:
name: kolla-ubuntu-noble
nodes:
- name: primary
label: ubuntu-noble
- nodeset:
name: kolla-debian-bookworm
nodes:
@ -117,6 +123,12 @@
- name: primary
label: ubuntu-jammy-arm64
- nodeset:
name: kolla-ubuntu-noble-aarch64
nodes:
- name: primary
label: ubuntu-noble-arm64
- job:
name: kolla-base
parent: base

View file

@ -4,9 +4,6 @@
jobs:
- kolla-build-centos9s
- kolla-ansible-centos9s
check-arm64:
jobs:
- kolla-build-centos9s-aarch64
experimental:
jobs:
- kolla-build-no-infra-wheels-centos9s

View file

@ -5,7 +5,6 @@
- kolla-build-debian
- kolla-build-debian-podman
- kolla-ansible-debian
- kolla-ansible-debian-upgrade
check-arm64:
jobs:
- kolla-build-debian-aarch64
@ -15,7 +14,6 @@
- kolla-build-debian
- kolla-build-debian-podman
- kolla-ansible-debian
- kolla-ansible-debian-upgrade
periodic:
jobs:
- kolla-publish-debian-quay

View file

@ -8,3 +8,13 @@
- publish-openstack-docs-pti
- release-notes-jobs-python3
- periodic-stable-jobs
check:
jobs:
- kolla-tox-genconfig
- openstack-tox-py312
check-arm64:
jobs:
- openstack-tox-py312-arm64
gate:
jobs:
- kolla-tox-genconfig

View file

@ -5,12 +5,9 @@
- kolla-build-rocky9
- kolla-build-rocky9-podman
- kolla-ansible-rocky9
- kolla-ansible-rocky9-upgrade
# Test rabbitmq and mariadb in multinode ceph jobs.
- kolla-ansible-rocky9-cephadm:
files: ^docker\/(base|cinder|glance|mariadb|openstack-base|rabbitmq)\/.*
- kolla-ansible-rocky9-upgrade-cephadm:
files: ^docker\/(base|cinder|glance|mariadb|openstack-base|rabbitmq)\/.*
- kolla-ansible-rocky9-ironic:
files: ^docker\/(base|dnsmasq|ironic|ironic-inspector|iscsid|openstack-base)\/.*
- kolla-ansible-rocky9-swift:
@ -31,15 +28,11 @@
files: ^docker/proxysql/
- kolla-ansible-rocky9-bifrost:
files: ^docker/bifrost/
check-arm64:
jobs:
- kolla-build-rocky9-aarch64
gate:
jobs:
- kolla-build-rocky9
- kolla-build-rocky9-podman
- kolla-ansible-rocky9
- kolla-ansible-rocky9-upgrade
periodic:
jobs:
- kolla-publish-rocky9-quay

12
.zuul.d/tox.yaml Normal file
View file

@ -0,0 +1,12 @@
---
- job:
name: kolla-tox-genconfig
parent: openstack-tox
timeout: 2400
description: |
Run genconfig
Uses tox with the ``genconfig`` environment.
vars:
tox_envlist: genconfig

View file

@ -2,15 +2,14 @@
- project:
check:
jobs:
- kolla-build-ubuntu
- kolla-build-ubuntu-podman
- kolla-build-ubuntu-jammy
- kolla-build-ubuntu-noble
- kolla-build-ubuntu-jammy-podman
- kolla-build-ubuntu-noble-podman
- kolla-ansible-ubuntu
- kolla-ansible-ubuntu-upgrade
# Test rabbitmq and mariadb in multinode ceph jobs.
- kolla-ansible-ubuntu-cephadm:
files: ^docker\/(base|cinder|glance|mariadb|openstack-base|rabbitmq)\/.*
- kolla-ansible-ubuntu-upgrade-cephadm:
files: ^docker\/(base|cinder|glance|mariadb|openstack-base|rabbitmq)\/.*
- kolla-ansible-ubuntu-ironic:
files: ^docker\/(base|dnsmasq|ironic|ironic-inspector|iscsid|openstack-base)\/.*
- kolla-ansible-ubuntu-swift:
@ -31,27 +30,26 @@
files: ^docker/proxysql/
- kolla-ansible-ubuntu-bifrost:
files: ^docker/bifrost/
check-arm64:
jobs:
- kolla-build-ubuntu-aarch64
gate:
jobs:
- kolla-build-ubuntu
- kolla-build-ubuntu-podman
- kolla-build-ubuntu-jammy
- kolla-build-ubuntu-noble
- kolla-build-ubuntu-jammy-podman
- kolla-build-ubuntu-noble-podman
- kolla-ansible-ubuntu
- kolla-ansible-ubuntu-upgrade
periodic:
jobs:
- kolla-publish-ubuntu-quay
- kolla-publish-ubuntu-jammy-quay
- kolla-publish-ubuntu-noble-quay
periodic-weekly:
jobs:
- kolla-publish-ubuntu-dockerhub
- kolla-publish-ubuntu-jammy-dockerhub
experimental:
jobs:
- kolla-build-no-infra-wheels-ubuntu
- job:
name: kolla-build-ubuntu
name: kolla-build-ubuntu-jammy
parent: kolla-base
nodeset: kolla-ubuntu-jammy
vars:
@ -59,7 +57,16 @@
base_distro_version: jammy
- job:
name: kolla-build-ubuntu-podman
name: kolla-build-ubuntu-noble
parent: kolla-base
nodeset: kolla-ubuntu-noble
vars:
base_distro: ubuntu
base_distro_version: noble
base_distro_tag: '24.04'
- job:
name: kolla-build-ubuntu-jammy-podman
parent: kolla-base-podman
nodeset: kolla-ubuntu-jammy
vars:
@ -67,14 +74,29 @@
base_distro_version: jammy
- job:
name: kolla-build-ubuntu-aarch64
parent: kolla-build-ubuntu
name: kolla-build-ubuntu-noble-podman
parent: kolla-base-podman
nodeset: kolla-ubuntu-noble
vars:
base_distro: ubuntu
base_distro_version: noble
base_distro_tag: '24.04'
- job:
name: kolla-build-ubuntu-jammy-aarch64
parent: kolla-build-ubuntu-jammy
nodeset: kolla-ubuntu-jammy-aarch64
voting: false
- job:
name: kolla-publish-ubuntu-dockerhub
parent: kolla-build-ubuntu
name: kolla-build-ubuntu-noble-aarch64
parent: kolla-build-ubuntu-noble
nodeset: kolla-ubuntu-noble-aarch64
voting: false
- job:
name: kolla-publish-ubuntu-jammy-dockerhub
parent: kolla-build-ubuntu-jammy
post-run: tests/playbooks/publish.yml
vars:
publisher: true
@ -84,8 +106,20 @@
- kolla_dockerhub_credentials
- job:
name: kolla-publish-ubuntu-quay
parent: kolla-build-ubuntu
name: kolla-publish-ubuntu-jammy-quay
parent: kolla-build-ubuntu-jammy
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
- job:
name: kolla-publish-ubuntu-noble-quay
parent: kolla-build-ubuntu-noble
post-run: tests/playbooks/publish.yml
vars:
publisher: true
@ -98,6 +132,6 @@
- job:
name: kolla-build-no-infra-wheels-ubuntu
parent: kolla-build-no-infra-wheels-base
nodeset: kolla-ubuntu-jammy
nodeset: kolla-ubuntu-noble
vars:
base_distro: ubuntu

View file

@ -56,8 +56,8 @@ provided, copy its Dockerfile structure and amend it to new needs.
Distribution support
====================
By default, every new image should support all supported distributions (CentOS,
Debian, Ubuntu) and both x86-64 and aarch64 architectures. Sometimes it is not
By default, every new image should support all supported distributions (Debian,
Ubuntu, Rocky) and both x86-64 and aarch64 architectures. Sometimes it is not
doable so we have list of `unbuildable images` for that.
Unbuildable images

View file

@ -26,8 +26,7 @@ Communication
IRC Channel
``#openstack-kolla`` (`channel logs`_) on `OFTC <http://oftc.net>`_
Weekly Meetings
On Wednesdays at 14:00 UTC in the IRC channel (`meetings logs`_)
`Weekly Meetings <https://meetings.opendev.org/#Kolla_Team_Meeting>`_
Mailing list (prefix subjects with ``[kolla]``)
https://lists.openstack.org/pipermail/openstack-discuss/
@ -47,19 +46,17 @@ Contacting the Core Team
~~~~~~~~~~~~~~~~~~~~~~~~
In general it is suggested to use the above mentioned public communication
channels, but if you find the you need to contact someone from the Core team
channels, but if you find that you need to contact someone from the Core team
directly, you can find the lists in Gerrit:
- kolla-core https://review.opendev.org/admin/groups/28d5dccfccc125b3963f76ab67e256501565d52b,members
- kolla-ansible-core https://review.opendev.org/admin/groups/cfd61289b70f00206797b035aa0bd7adfccf4be2,members
- kayobe-core https://review.opendev.org/admin/groups/361e28280e3a06be2997a5aa47a8a11d3a8fb9b9,members
New Feature Planning
~~~~~~~~~~~~~~~~~~~~
New features are discussed via IRC or mailing list (with [kolla] prefix).
Kolla project keeps blueprints in `Launchpad <https://blueprints.launchpad.net/kolla>`__.
Specs are welcome but not strictly required.
New features are discussed on PTG, via IRC or mailing list (with [kolla]
prefix).
Task Tracking
~~~~~~~~~~~~~

View file

@ -87,6 +87,8 @@ This needs to be done for each of the following projects:
* https://launchpad.net/ansible-collection-kolla
* https://launchpad.net/kayobe
At the beginning of a cycle, ensure a named series exists for the cycle in each
project. If not, create one via the project landing page (e.g.
https://launchpad.net/kolla) - in the "Series and milestones" section click in
@ -94,8 +96,6 @@ https://launchpad.net/kolla) - in the "Series and milestones" section click in
milestones, including the final release. Series can be marked as "Active
Development" or "Current Stable Release" as necessary.
Kayobe uses Storyboard, which does not track series or milestones.
Milestones
----------

View file

@ -7,23 +7,15 @@ Running Kolla Build in development
The recommended way to run in development
-----------------------------------------
The preferred way to run kolla-build for development is using ``tox``.
Run the following from inside the repository:
.. code-block:: console
tox -e venv -- kolla-build ...
The alternative way to run in development
-----------------------------------------
Sometimes, developers prefer to manage their venvs themselves. This is also
possible. Remember to install in editable mode (``-e``). Run the following from
inside the repository:
To clone the repository and install the package
in development mode, run the following commands:
.. code-block:: console
git clone https://opendev.org/openstack/kolla.git
cd kolla
python3 -m venv ~/path/to/venv
source ~/path/to/venv/bin/activate
python3 -m pip install -e .
python3 -m pip install --editable .
kolla-build ...

View file

@ -23,14 +23,14 @@ information about package sources.
Galera 26.4 (LTS) `MariaDB Community downloads`_
OpenSearch 2.x `OpenSearch install guide`_
ProxySQL 2.6.x `ProxySQL repository`_
Rabbitmq 3.10.x - CentOS:
`Team RabbitMQ 'PackageCloud' repository`_
Rabbitmq 3.13.x - CentOS/Rocky:
`Team RabbitMQ 'Cloudsmith' repo (RPM)`_
- Debian/Ubuntu:
`Team RabbitMQ 'Cloudsmith' repository`_
Erlang 25.x - CentOS aarch64:
`Hrw's COPR`_
- CentOS x86-64:
`Team RabbitMQ 'PackageCloud' repository`_
`Team RabbitMQ 'Cloudsmith' repo (Deb)`_
Erlang 26.2.X - CentOS/Rocky aarch64:
`openstack-kolla COPR`_
- CentOS/Rocky x86-64:
`Team RabbitMQ 'Cloudsmith' repo (RPM)`_
- Debian/Ubuntu:
`Team RabbitMQ 'Modern Erlang' PPA`_
TD Agent 4.4.x `TreasureData install guide`_
@ -44,10 +44,10 @@ information about package sources.
.. _`TreasureData install guide`: https://www.fluentd.org/download
.. _`ProxySQL repository`: https://repo.proxysql.com/ProxySQL/proxysql-2.6.x/
.. _`Team RabbitMQ 'Cloudsmith' repository`: https://www.rabbitmq.com/install-debian.html#apt-cloudsmith
.. _`Team RabbitMQ 'Cloudsmith' repo (Deb)`: https://www.rabbitmq.com/install-debian.html#apt-cloudsmith
.. _`Team RabbitMQ 'Modern Erlang' PPA`: https://launchpad.net/~rabbitmq/+archive/ubuntu/rabbitmq-erlang
.. _`Team RabbitMQ 'PackageCloud' repository`: https://www.rabbitmq.com/install-rpm.html#package-cloud
.. _`Hrw's COPR`: https://copr.fedorainfracloud.org/coprs/hrw/erlang-for-rabbitmq/
.. _`Team RabbitMQ 'Cloudsmith' repo (RPM)`: https://www.rabbitmq.com/docs/install-rpm#cloudsmith
.. _`openstack-kolla COPR`: https://copr.fedorainfracloud.org/coprs/g/openstack-kolla/rabbitmq-erlang-26/
.. _`Grafana install guide`: https://grafana.com/grafana/download?platform=linux&edition=oss
.. _`MariaDB Community downloads`: https://mariadb.com/downloads/community/

View file

@ -18,10 +18,16 @@ The following base container images are supported:
Distribution Default base Default base tag
================== =============================== ================
Rocky Linux quay.io/rockylinux/rockylinux 9
Debian Bullseye debian bullseye
Debian Bookworm debian bookworm
Ubuntu Jammy ubuntu 22.04
Ubuntu Noble ubuntu 24.04
================== =============================== ================
.. note::
In order to build Ubuntu Noble based images ``base_tag`` needs to be set
to ``24.04`` (if using a local image from your own registry - the tag needs
to at least start with 24.04, e.g. '24.04-my-version')
The remainder of this document outlines which images are supported on which of
these distribution.

View file

@ -76,7 +76,8 @@ COPY dnf.conf /etc/dnf/dnf.conf
{% elif base_arch == 'aarch64' %}
{% set base_yum_repo_files = base_yum_repo_files + [
'hrw-copr-erlang-for-rabbitmq.repo',
'copr-rabbitmq-erlang-26.repo',
'copr-rabbitmq-erlang-27.repo',
] %}
{#
@ -132,6 +133,7 @@ RUN rm -f /etc/rpm/macros.image-language-conf \
{% set base_centos_yum_repo_packages = [
'centos-release-ceph-reef',
'centos-release-nfv-openvswitch',
'centos-release-openstack-caracal',
'centos-release-opstools',
'epel-release',
] %}
@ -150,24 +152,12 @@ RUN rm -f /etc/rpm/macros.image-language-conf \
'centos-ceph-reef',
'centos-nfv-openvswitch',
'centos-opstools',
'centos9-nfv-ovs',
'centos9-opstools',
'centos9-rabbitmq',
'centos9-storage',
'epel',
'influxdb',
'opensearch-2.x',
'opensearch-dashboards-2.x',
] %}
{% if base_arch == 'aarch64' %}
{# NOTE(hrw): delorean-deps.repo may force x86-64 repos #}
RUN sed -i -e "s/x86_64/aarch64/g" /etc/yum.repos.d/delorean-deps.repo
{% endif %}
RUN {{ macros.install_packages(base_centos_yum_repo_packages | customizable("centos_yum_repo_packages"), chain=True, clean=False) }}
{%- for repo in base_centos_yum_repos_to_enable | customizable('centos_yum_repos_to_enable') %} && dnf config-manager --enable {{ repo }} {% endfor -%}
@ -248,11 +238,25 @@ RUN cat /tmp/kolla_bashrc >> /etc/bash.bashrc \
-e s/#*LAST_SYSTEM_GID=999/LAST_SYSTEM_GID=59999/g /etc/adduser.conf
{% block base_ubuntu_package_sources_list %}
{% if base_distro == 'debian' or ( base_distro == 'ubuntu' and base_arch == 'x86_64' ) %}
{% if base_distro == 'debian' %}
RUN rm -f /etc/apt/sources.list.d/debian.sources
COPY sources.list.{{ base_distro }} /etc/apt/sources.list
{% elif base_distro == 'ubuntu' %}
{% if base_distro_tag.startswith('22.04') or base_distro_tag.startswith('jammy') %}
RUN rm -f /etc/apt/sources.list
{% if base_arch == 'x86_64' %}
COPY sources.list.{{ base_distro }}.jammy /etc/apt/sources.list
{% else %}
COPY sources.list.{{ base_distro }}.{{ base_arch }} /etc/apt/sources.list
COPY sources.list.{{ base_distro }}.jammy.{{ base_arch }} /etc/apt/sources.list
{% endif %}
{% elif base_distro_tag.startswith('24.04') or base_distro_tag.startswith('noble') %}
RUN rm -f /etc/apt/sources.list.d/{{ base_distro }}.sources
{% if base_arch == 'x86_64' %}
COPY sources.list.{{ base_distro }}.noble /etc/apt/sources.list
{% else %}
COPY sources.list.{{ base_distro }}.noble.{{ base_arch }} /etc/apt/sources.list
{% endif %}
{% endif %}
{% endif %}
COPY sources.list /etc/apt/sources.list.d/kolla-custom.list
{% endblock %}
@ -279,6 +283,7 @@ COPY apt_preferences /etc/apt/preferences.d/kolla-custom
{% set base_apt_packages = [
'apt-utils',
'dumb-init',
'systemd-standalone-sysusers',
'gawk',
'iproute2',
'kmod',

View file

@ -53,6 +53,14 @@ enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-NFV
module_hotfixes=1
[centos-openstack-caracal]
name=(OpenDev mirror) CentOS-$releasever - OpenStack Caracal
baseurl=http://MIRROR/centos-stream/SIGs/$stream/cloud/$basearch/openstack-caracal/
gpgcheck=1
enabled=1
gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Cloud
module_hotfixes=1
[centos-opstools]
name=(OpenDev mirror) CentOS Stream $releasever - OpsTools - collectd
baseurl=http://MIRROR/centos-stream/SIGs/$stream/opstools/$basearch/collectd-5/

View file

@ -13,6 +13,14 @@ enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-NFV
module_hotfixes=1
[centos-openstack-caracal]
name=(OpenDev mirror) CentOS-$releasever - OpenStack Caracal
baseurl=http://MIRROR/centos-stream/SIGs/$stream/cloud/$basearch/openstack-caracal/
gpgcheck=1
enabled=1
gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Cloud
module_hotfixes=1
[centos-opstools]
name=(OpenDev mirror) CentOS Stream $releasever - OpsTools - collectd
baseurl=http://MIRROR/centos-stream/SIGs/$stream/opstools/$basearch/collectd-5/

View file

@ -0,0 +1,11 @@
# NOTE(hrw): this repository contains rebuild of Erlang package from RabbitMQ team
# from https://github.com/rabbitmq/erlang-rpm/
# Thanks to COPR we have aarch64 packages for Rocky Linux
[copr-rabbitmq-erlang-26]
name=openstack-kolla COPR with Erlang 26 build for RabbitMQ
baseurl=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-26/rhel-$releasever-aarch64/
gpgcheck=1
enabled=0
gpgkey=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-26/pubkey.gpg
repo_gpgcheck=0

View file

@ -0,0 +1,11 @@
# NOTE(hrw): this repository contains rebuild of Erlang package from RabbitMQ team
# from https://github.com/rabbitmq/erlang-rpm/
# Thanks to COPR we have aarch64 packages for Rocky Linux
[copr-rabbitmq-erlang-27]
name=openstack-kolla COPR with Erlang 27 build for RabbitMQ
baseurl=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/rhel-$releasever-aarch64/
gpgcheck=1
enabled=0
gpgkey=https://download.copr.fedorainfracloud.org/results/@openstack-kolla/rabbitmq-erlang-27/pubkey.gpg
repo_gpgcheck=0

View file

@ -1,11 +0,0 @@
# NOTE(hrw): this repository contains rebuild of Erlang package from RabbitMQ team
# from https://github.com/rabbitmq/erlang-rpm/
# Thanks to COPR we have aarch64 packages for CentOS Stream 8/9
[copr-hrw-erlang-for-rabbitmq]
name=Hrw's COPR with Erlang build for RabbitMQ
baseurl=https://download.copr.fedorainfracloud.org/results/hrw/erlang-for-rabbitmq/centos-stream-$releasever-$basearch/
gpgcheck=1
enabled=0
gpgkey=https://download.copr.fedorainfracloud.org/results/hrw/erlang-for-rabbitmq/pubkey.gpg
repo_gpgcheck=0

View file

@ -39,3 +39,13 @@ EOF
/usr/libexec/httpd-ssl-gencerts
fi
fi
# The default system locale with unicode support
LANG=C.UTF-8
# Override the default locale if configured
if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then
[ -f /etc/default/locale ] && . /etc/default/locale
else
[ -f /etc/locale.conf ] && . /etc/locale.conf
fi

View file

@ -1,6 +1,9 @@
[rabbitmq_rabbitmq-erlang]
name=rabbitmq_rabbitmq-erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/9/$basearch
# Use a set of mirrors maintained by the RabbitMQ core team.
# The mirrors have significantly higher bandwidth quotas.
baseurl=https://yum1.rabbitmq.com/erlang/el/9/$basearch
https://yum2.rabbitmq.com/erlang/el/9/$basearch
gpgcheck=1
enabled=0
gpgkey = https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key

View file

@ -1,6 +1,9 @@
[rabbitmq_rabbitmq-server]
name=rabbitmq_rabbitmq-server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/9/$basearch
baseurl=https://yum2.rabbitmq.com/rabbitmq/el/9/noarch
https://yum1.rabbitmq.com/rabbitmq/el/9/noarch
gpgcheck=1
enabled=0
gpgkey = https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc

View file

@ -29,6 +29,9 @@ logging.basicConfig()
LOG = logging.getLogger(__name__)
LOG.setLevel(logging.INFO)
KOLLA_DEFAULTS = "/etc/kolla/defaults"
KOLLA_DEFAULTS_STATE = KOLLA_DEFAULTS + '/' + 'state'
class ExitingException(Exception):
def __init__(self, message, exit_code=1):
@ -383,10 +386,157 @@ def handle_permissions(config):
set_perms(os.path.join(root, file_), uid, gid, perm)
def get_defaults_state():
"""Retrieve the saved default configuration state from default state file.
This function creates the directory for Kolla defaults if it does not
exist, and then attempts to read the current configuration state from
a JSON file. If the file exists, it reads and returns the content.
If not, it returns an empty dictionary.
Simply said, when the container starts for the first time, the state file
doesn't exist, and it returns an empty dictionary.
However, if it has already been started before, it will contain the state
as it was when it first ran.
Returns:
dict: The configuration state stored in the Kolla defaults state file.
Example:
{
"/etc/cinder/cinder.conf": {
"source": "/etc/cinder/cinder.conf",
"preserve_properties": true,
"dest": null
},
"/etc/apache2/conf-enabled/cinder-wsgi.conf": {
"source": "/etc/apache2/conf-enabled/cinder-wsgi.conf",
"preserve_properties": true,
"dest": null
},
"/etc/cinder/cinder_audit_map.conf": {
"source": "/etc/cinder/cinder_audit_map.conf",
"preserve_properties": true,
"dest": "/etc/kolla/defaults/etc/cinder/cinder_audit_map.conf"
}
}
From above example:
/etc/cinder/cinder.conf didn't exist
/etc/apache2/conf-enabled/cinder-wsgi.conf didn't exist
/etc/cinder/cinder_audit_map.conf exists and saved
"""
os.makedirs(KOLLA_DEFAULTS, exist_ok=True)
if os.path.exists(KOLLA_DEFAULTS_STATE):
with open(KOLLA_DEFAULTS_STATE, 'r') as f:
return json.load(f)
else:
return {}
def set_defaults_state(state):
"""Save the provided configuration state to the defaults state file.
This function writes the provided state (a dictionary) to a JSON file at
the specified Kolla defaults state location, ensuring that it is properly
formatted with indentation for readability.
Args:
state (dict): The configuration state to save to the Kolla defaults
state file.
"""
with open(KOLLA_DEFAULTS_STATE, 'w') as f:
json.dump(state, f, indent=4)
def remove_or_restore_configs(state):
"""Remove or restore configuration files based on their current state.
This function iterates over the configuration files in the provided state.
If the destination is `None`, it removes the file or directory. Otherwise,
it swaps the source and destination, restoring the configuration file
by copying it back to its original location.
Args:
state (dict): The current default state of configuration files, mapping
file paths to their source and destination information.
"""
for k, v in state.items():
if v['dest'] is None:
if os.path.exists(k):
if os.path.isfile(k):
os.remove(k)
else:
shutil.rmtree(k)
else:
v['source'], v['dest'] = v['dest'], v['source']
config_file = ConfigFile(**v)
config_file.copy()
def backup_configs(config, state):
"""Back up new configuration files and update the default state.
This function processes new configuration files provided in the
input `config`. For each file, it checks if the destination exists in the
current state. If not, it backs up the file by copying it to the default
directory. It then updates the state with the new configuration file's
information.
Args:
config (dict): The input configuration containing a list of config
files.
state (dict): The current default state to be updated with the new
config files.
"""
if 'config_files' in config:
for data in config['config_files']:
if data['dest'] in state.keys():
continue
src = data['source']
if data['dest'].endswith('/'):
dst = data['dest'] + data['source'].split('/')[-1]
else:
dst = data['dest']
default = KOLLA_DEFAULTS + dst
if os.path.exists(src):
copy = {'source': dst, 'preserve_properties': True}
if os.path.exists(dst):
copy['dest'] = default
if dst not in state:
config_file = ConfigFile(**copy)
config_file.copy()
state[dst] = copy
else:
copy['dest'] = None
if dst not in state:
state[dst] = copy
def handle_defaults(config):
"""Handle the default config files by copying/removing them as needed.
This function loads the current default state and manages the configuration
files. It first processes existing configuration files in the default
state, either removing or restoring them based on their destination status.
It then backs up any new configuration files from the input config,
updating the default state accordingly.
Args:
config (dict): A dictionary containing the list of configuration files
to be handled.
"""
state = get_defaults_state()
remove_or_restore_configs(state)
backup_configs(config, state)
set_defaults_state(state)
def execute_config_strategy(config):
config_strategy = os.environ.get("KOLLA_CONFIG_STRATEGY")
LOG.info("Kolla config strategy set to: %s", config_strategy)
if config_strategy == "COPY_ALWAYS":
handle_defaults(config)
copy_config(config)
handle_permissions(config)
elif config_strategy == "COPY_ONCE":
@ -395,6 +545,7 @@ def execute_config_strategy(config):
"The config strategy prevents copying new configs",
exit_code=0)
else:
handle_defaults(config)
copy_config(config)
handle_permissions(config)
os.mknod('/configured')

View file

@ -0,0 +1,16 @@
# 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-security main universe
# Backports have a lower priority and must be explicitly installed to be used
deb http://archive.ubuntu.com/ubuntu/ noble-backports main universe
# NOTE: In Caracal we don't need to add the repo for the updated packages like qemu,
# libvirt, and openvswitch.
# 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.

View file

@ -0,0 +1,15 @@
# 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/dalmatian 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.

View file

@ -37,11 +37,18 @@ ENV ANSIBLE_GATHER_TIMEOUT=30
{% block bifrost_ansible_install %}
{%- if base_package_type == 'deb' %}
RUN apt-get --error-on=any update && \
{%- if base_distro_tag.startswith('24.04') or base_distro_tag.startswith('noble') %}
bash -c 'export VENV=/var/lib/kolla/venv && \
{# NOTE(darmach): Bumped to ansible-core 2.16 to match Python 3.12 #}
$VENV/bin/pip install "ansible>=9,<10" && \
{%- else %}
bash -c '$VENV/bin/pip install "ansible>=6,<7" && \
{%- endif %}
{%- else %}
RUN echo " " && \
bash -c 'export VENV=/var/lib/kolla/venv && \
$VENV/bin/pip install "ansible>=6,<7" && \
{%- endif %}
bash -c 'export VENV=/var/lib/kolla/venv && \
$VENV/bin/pip install "ansible>=6,<7" && \
$VENV/bin/ansible-galaxy collection install -r /bifrost/ansible-collections-requirements.yml && \
ansible-playbook -vvvv -i /bifrost/playbooks/inventory/target \
/bifrost/playbooks/install.yaml \

View file

@ -10,12 +10,16 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set cinder_backup_packages = [
'device-mapper-multipath',
'nfs-utils'
'lsscsi',
'nfs-utils',
'sysfsutils'
] %}
{% elif base_package_type == 'deb' %}
{% set cinder_backup_packages = [
'lsscsi',
'multipath-tools',
'nfs-common'
'nfs-common',
'sysfsutils'
] %}
{% endif %}

View file

@ -16,19 +16,26 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'ceph-common',
'cryptsetup',
'lvm2',
'nvme-cli',
'qemu-img'
] %}
{% elif base_package_type == 'deb' %}
{% set cinder_base_packages = [
'ceph-common',
'lvm2',
'cryptsetup',
'lvm2',
'nvme-cli',
'python3-cephfs',
'python3-rados',
'python3-rbd',
'qemu-utils'
] %}
{% endif %}
{% if base_distro_tag.startswith('24.04') or base_distro_tag.startswith('noble') %}
RUN {{ macros.upper_constraints_version_change("taskflow", "5.6.0", "5.8.0") }}
{% endif %}
{{ macros.install_packages(cinder_base_packages | customizable("packages")) }}
{% set cinder_base_pip_packages = [

View file

@ -12,7 +12,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'lsscsi',
'device-mapper-multipath',
'nfs-utils',
'nvme-cli',
'nvmetcli',
'sysfsutils',
'targetcli'
@ -22,7 +21,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'lsscsi',
'multipath-tools',
'nfs-common',
'nvme-cli',
'sysfsutils',
'targetcli-fb',
'thin-provisioning-tools',

View file

@ -10,5 +10,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set dnsmasq_packages = ['dnsmasq'] %}
{{ macros.install_packages(dnsmasq_packages| customizable("packages")) }}
COPY extend_start.sh /usr/local/bin/kolla_extend_start
RUN chmod 644 /usr/local/bin/kolla_extend_start
{% block dnsmasq_footer %}{% endblock %}
{% block footer %}{% endblock %}

View file

@ -0,0 +1,12 @@
#!/bin/bash
if [[ ! -d "/var/log/kolla/ironic" ]]; then
mkdir -p /var/log/kolla/ironic
fi
if [[ $(stat -c %a /var/log/kolla/ironic) != "755" ]]; then
chmod 755 /var/log/kolla/ironic
fi
if [[ ! -r "/var/log/kolla/ironic/dnsmasq.log" ]]; then
touch /var/log/kolla/ironic/dnsmasq.log
chown ironic:ironic /var/log/kolla/ironic/dnsmasq.log
fi

View file

@ -9,11 +9,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set glance_api_packages = [
'lsscsi',
'device-mapper-multipath',
'qemu-img'
] %}
{% elif base_package_type == 'deb' %}
{% set glance_api_packages = [
'lsscsi',
'multipath-tools',
'nfs-common',
'qemu-utils'

View file

@ -9,7 +9,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.configure_user(name='glance') }}
{{ macros.enable_extra_repos(['ceph']) }}
{{ macros.enable_extra_repos(['ceph', 'epel']) }}
{% if base_package_type == 'rpm' %}
{% set glance_base_packages = [

View file

@ -9,7 +9,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.configure_user(name='gnocchi') }}
{{ macros.enable_extra_repos(['ceph']) }}
{{ macros.enable_extra_repos(['ceph', 'epel']) }}
{% if base_package_type == 'rpm' %}

View file

@ -242,7 +242,19 @@ config_zun_dashboard
if settings_changed; then
${MANAGE_PY} collectstatic --noinput --clear
${MANAGE_PY} compress --force
compress_ok="false"
for a in 1 2 3 4 5; do
if ${MANAGE_PY} compress --force 2>&1 > /dev/null; then
compress_ok="true"
break
else
echo "attempt ${a} failed"
fi
done
if [ "$compress_ok" = "false" ]; then
echo "The compress operation failed after 5 attempts."
exit 1
fi
settings_bundle | md5sum > $HASH_PATH
fi

View file

@ -22,7 +22,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'systemd-udev',
'util-linux',
'xfsprogs',
'genisoimage',
] %}
{% if base_arch in ['x86_64'] %}
{% set ironic_conductor_packages = ironic_conductor_packages + [
'syslinux'
] %}
{% endif %}
{% elif base_package_type == 'deb' %}
{% set ironic_conductor_packages = [
'bsdmainutils',
@ -38,6 +44,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'shellinabox',
'udev',
'xfsprogs',
'genisoimage',
'isolinux',
] %}
{% endif %}

View file

@ -9,19 +9,27 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% if base_package_type == 'rpm' %}
{% set keystone_packages = [
'krb5-devel',
'mod_auth_gssapi',
] %}
{% elif base_package_type == 'deb' %}
{% set keystone_packages = [
'libapache2-mod-auth-gssapi',
'libkrb5-dev',
] %}
{% endif %}
{{ macros.install_packages(keystone_packages | customizable("packages")) }}
{% set keystone_pip_packages = [
'requests-kerberos',
] %}
RUN {{ macros.install_pip(keystone_pip_packages | customizable("pip_packages")) }}
ADD plugins-archive /
{% set keystone_plugins_pip_packages = [
'/plugins/*',
'requests-kerberos',
] %}
COPY keystone_bootstrap.sh /usr/local/bin/kolla_keystone_bootstrap

View file

@ -16,7 +16,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.configure_user(name='ansible') }}
{{ macros.configure_user(name='rabbitmq') }}
{{ macros.enable_extra_repos(['crb', 'erlang', 'openvswitch', 'rabbitmq']) }}
{{ macros.enable_extra_repos(['crb', 'erlang', 'erlang-26', 'openvswitch', 'rabbitmq']) }}
{% block rabbitmq_apt_preferences %}
{% if base_package_type == 'deb' %}
COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq
{% endif %}
{% endblock %}
{% if base_package_type == 'rpm' %}
{% set kolla_toolbox_packages = [

View file

@ -0,0 +1 @@
../rabbitmq/rabbitmq/apt_preferences_rabbitmq.debian

View file

@ -0,0 +1 @@
../rabbitmq/rabbitmq/apt_preferences_rabbitmq.ubuntu

View file

@ -7,8 +7,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% import "macros.j2" as macros with context %}
{{ macros.install_packages(cinder_base_packages | customizable("packages")) }}
COPY extend_start.sh /usr/local/bin/kolla_extend_start
{% block letsencrypt_base_footer %}{% endblock %}

View file

@ -7,6 +7,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% import "macros.j2" as macros with context %}
ADD plugins-archive /
RUN cp /plugins/linux-{{ debian_arch }}/helm /usr/local/bin/helm
{% block magnum_conductor_footer %}{% endblock %}
{% block footer %}{% endblock %}

View file

@ -39,9 +39,12 @@ COPY mariadb_sudoers /etc/sudoers.d/kolla_mariadb_sudoers
COPY extend_start.sh /usr/local/bin/kolla_extend_start
COPY security_reset.expect /usr/local/bin/kolla_security_reset
COPY backup.sh /usr/local/bin/kolla_mariadb_backup.sh
COPY backup_replica.sh /usr/local/bin/kolla_mariadb_backup_replica.sh
RUN chmod 644 /usr/local/bin/kolla_extend_start \
&& chmod 755 /usr/local/bin/kolla_security_reset /usr/local/bin/kolla_mariadb_backup.sh \
&& chmod 755 /usr/local/bin/kolla_security_reset \
/usr/local/bin/kolla_mariadb_backup.sh \
/usr/local/bin/kolla_mariadb_backup_replica.sh \
&& chmod 750 /etc/sudoers.d \
&& chmod 440 /etc/sudoers.d/kolla_mariadb_sudoers \
&& rm -rf /var/lib/mysql/*

View file

@ -0,0 +1,135 @@
#!/usr/bin/env bash
set -eu
set -o pipefail
BACKUP_DIR=/backup/
DEFAULT_MY_CNF="/etc/mysql/my.cnf"
REPLICA_MY_CNF="$(mktemp)"
RETRY_INTERVAL=5 # Interval between retries (in seconds)
MAX_RETRIES=12 # Max retries (12 retries * 5 seconds = 60 seconds)
# Cleanup function to remove the REPLICA_MY_CNF file
cleanup() {
rm -f "${REPLICA_MY_CNF}"
}
# Set trap to ensure cleanup occurs on exit or error
trap cleanup EXIT
cd "${BACKUP_DIR}"
# Execute a full backup
backup_full() {
echo "Taking a full backup"
LAST_FULL_DATE=$(date +%d-%m-%Y-%s)
mariabackup \
--defaults-file="${REPLICA_MY_CNF}" \
--backup \
--stream=mbstream \
--history="${LAST_FULL_DATE}" | gzip > \
"${BACKUP_DIR}/mysqlbackup-${LAST_FULL_DATE}.qp.mbc.mbs.gz" && \
echo "${LAST_FULL_DATE}" > "${BACKUP_DIR}/last_full_date"
}
# Execute an incremental backup
backup_incremental() {
if [ -r "${BACKUP_DIR}/last_full_date" ]; then
LAST_FULL_DATE=$(cat "${BACKUP_DIR}/last_full_date")
else
LAST_FULL_DATE=""
fi
if [ ! -z "${LAST_FULL_DATE}" ]; then
echo "Taking an incremental backup"
mariabackup \
--defaults-file="${REPLICA_MY_CNF}" \
--backup \
--stream=mbstream \
--incremental-history-name="${LAST_FULL_DATE}" \
--history="${LAST_FULL_DATE}" | gzip > \
"${BACKUP_DIR}/incremental-$(date +%H)-mysqlbackup-${LAST_FULL_DATE}.qp.mbc.mbs.gz"
else
echo "Error: Full backup don't exist."
exit 1
fi
}
# Retry logic for database queries
retry_mysql_query() {
local query="$1"
local result=""
local attempt=1
while [ ${attempt} -le ${MAX_RETRIES} ]; do
result=$(mysql -h "${HOST}" -u "${USER}" -p"${PASS}" -s -N -e "${query}" 2>/dev/null || true)
if [ -n "${result}" ]; then
echo "${result}"
return 0
fi
echo "Attempt ${attempt}/${MAX_RETRIES} failed. Retrying in ${RETRY_INTERVAL} seconds..."
sleep "${RETRY_INTERVAL}"
attempt=$((attempt + 1))
done
echo "Error: Failed to execute the query after ${MAX_RETRIES} attempts."
return 1
}
get_and_set_replica_server() {
HOST="$(grep '^host' "${DEFAULT_MY_CNF}" | awk -F '=' '{print $2}' | xargs)"
USER="$(grep '^user' "${DEFAULT_MY_CNF}" | awk -F '=' '{print $2}' | xargs)"
PASS="$(grep '^password' "${DEFAULT_MY_CNF}" | awk -F '=' '{print $2}' | xargs)"
ALL_HOSTS_SELECT="SELECT REGEXP_REPLACE(VARIABLE_VALUE, ':[0-9]*','') FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_incoming_addresses';"
ALL_HOSTS=$(retry_mysql_query "${ALL_HOSTS_SELECT}")
if [ -z "${ALL_HOSTS}" ]; then
echo "Backup failed due to inability to fetch a list of servers."
exit 1
fi
ACTIVE_HOST_SELECT='SELECT @@hostname;'
ACTIVE_HOST=$(retry_mysql_query "${ACTIVE_HOST_SELECT}" | xargs getent hosts | awk '{print $1}')
if [ -z "${ACTIVE_HOST}" ]; then
echo "Backup failed due to inability to fetch active host."
exit 1
fi
# Multinode
if echo "${ALL_HOSTS}" | grep -q ','; then
for server in $(echo "${ALL_HOSTS}" | tr ',' '\n'); do
if [[ "${server}" != "${ACTIVE_HOST}" ]]; then
REPLICA_HOST="${server}"
break
fi
done
# Single node
else
REPLICA_HOST="${ALL_HOSTS}"
fi
if [ -z "${REPLICA_HOST}" ]; then
echo "Backup failed due to inability to determine replica host."
exit 1
fi
cp "${DEFAULT_MY_CNF}" "${REPLICA_MY_CNF}"
sed -i "s/${HOST}/${REPLICA_HOST}/g" "${REPLICA_MY_CNF}"
}
if [ -n "${BACKUP_TYPE}" ]; then
get_and_set_replica_server
case "${BACKUP_TYPE}" in
"full")
backup_full
;;
"incremental")
backup_incremental
;;
*)
echo "Only full or incremental options are supported."
exit 1
;;
esac
else
echo "You need to specify either full or incremental backup options."
exit 1
fi

View file

@ -12,6 +12,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.install_packages(neutron_dhcp_agent_packages | customizable("packages")) }}
COPY extend_start.sh /usr/local/bin/kolla_extend_start
{% block neutron_dhcp_agent_footer %}{% endblock %}
{% block footer %}{% endblock %}

View file

@ -0,0 +1,9 @@
if [[ ! -d "/var/log/kolla/neutron" ]]; then
mkdir -p /var/log/kolla/neutron
fi
if [[ ! -f "/var/log/kolla/neutron/dnsmasq.log" ]]; then
touch /var/log/kolla/neutron/dnsmasq.log
chown neutron:kolla /var/log/kolla/neutron/dnsmasq.log
fi
. /usr/local/bin/kolla_neutron_extend_start

View file

@ -44,7 +44,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
] %}
{% elif base_arch == 'aarch64' %}
{% set nova_base_packages = nova_base_packages + [
'qemu-efi',
'qemu-efi-aarch64',
] %}
{% endif %}

View file

@ -75,15 +75,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'swtpm-tools',
'sysfsutils',
'targetcli-fb',
'tpm2-tools',
'xfsprogs'
] %}
{% if base_arch == "aarch64" %}
{% set nova_compute_packages = nova_compute_packages + [
'qemu-efi'
] %}
{% endif %}
RUN mkdir -p /etc/ceph \
&& {{ macros.install_packages(nova_compute_packages | customizable("packages"), chain=True) }}

View file

@ -57,6 +57,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'sasl2-bin',
'swtpm',
'swtpm-tools',
'tpm2-tools',
'trousers'
] %}

View file

@ -10,7 +10,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.configure_user(name='nova', shell='/bin/bash') }}
{% set nova_ssh_packages = [
'openssh-server'
'openssh-server',
'rsync'
] %}
{% if base_package_type == 'deb' %}

View file

@ -12,9 +12,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% set opensearch_dashboards_packages = ['opensearch-dashboards'] %}
{{ macros.install_packages(opensearch_dashboards_packages | customizable("packages")) }}
RUN chown -R opensearch-dashboards:opensearch-dashboards /usr/share/opensearch-dashboards
{{ macros.install_packages(opensearch_dashboards_packages | customizable("packages")) }} \
&& chown -R opensearch-dashboards:opensearch-dashboards /usr/share/opensearch-dashboards
COPY extend_start.sh /usr/local/bin/kolla_extend_start
RUN chmod 755 /usr/local/bin/kolla_extend_start

View file

@ -16,9 +16,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
ENV OPENSEARCH_INITIAL_ADMIN_PASSWORD="Kolla24OpenSearch"
{{ macros.install_packages(opensearch_packages | customizable("packages")) }}
RUN chown -R opensearch:opensearch /usr/share/opensearch
{{ macros.install_packages(opensearch_packages | customizable("packages")) }} \
&& chown -R opensearch:opensearch /usr/share/opensearch
COPY extend_start.sh /usr/local/bin/kolla_extend_start
RUN chmod 755 /usr/local/bin/kolla_extend_start

View file

@ -135,7 +135,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
'pika',
'prettytable',
'psutil',
'/pycadf',
'/plugins/*pycadf*',
'pyinotify',
'pymysql',
'pyngus',
@ -182,13 +182,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
%}
ADD openstack-base-archive /openstack-base-source
ADD plugins-archive /openstack-base-source
ADD plugins-archive /
RUN ln -s openstack-base-source/plugins/* /pycadf \
&& mkdir -p /etc/pycadf \
&& cp /pycadf/etc/pycadf/* /etc/pycadf/
RUN mkdir -p /etc/pycadf \
&& cp /plugins/*pycadf*/etc/pycadf/* /etc/pycadf/
RUN ln -s openstack-base-source/*requirements* /requirements \
RUN ln -s openstack-base-source/* /requirements \
{# NOTE(mnasiadka): Remove ovs from upper-constraints.txt because python3-openvswitch
is usually newer than UC entry and older version would get installed

View file

@ -7,4 +7,6 @@ if [[ $(stat -c %a /var/log/kolla/openvswitch) != "755" ]]; then
chmod 755 /var/log/kolla/openvswitch
fi
chown -R openvswitch:openvswitch /var/log/kolla/openvswitch
. /usr/local/bin/kolla_openvswitch_extend_start

View file

@ -8,3 +8,8 @@ fi
if [[ $(ovsdb-tool needs-conversion /var/lib/openvswitch/conf.db) == yes ]]; then
ovsdb-tool convert "/var/lib/openvswitch/conf.db"
fi
if [[ ! -r "/var/log/kolla/openvswitch/ovsdb-server.log" ]]; then
touch /var/log/kolla/openvswitch/ovsdb-server.log
chown openvswitch:openvswitch /var/log/kolla/openvswitch/ovsdb-server.log
fi

View file

@ -1,3 +1,8 @@
#!/bin/bash
if [[ ! -r "/var/log/kolla/openvswitch/ovs-vswitchd.log" ]]; then
touch /var/log/kolla/openvswitch/ovs-vswitchd.log
chown openvswitch:openvswitch /var/log/kolla/openvswitch/ovs-vswitchd.log
fi
modprobe openvswitch

View file

@ -9,3 +9,5 @@ fi
if [[ $(stat -c %a /var/log/kolla/openvswitch) != "755" ]]; then
chmod 755 /var/log/kolla/openvswitch
fi
. /usr/local/bin/kolla_ovn_extend_start

View file

@ -20,5 +20,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% endif %}
{{ macros.install_packages(ovn_controller_packages | customizable("packages")) }}
COPY extend_start.sh /usr/local/bin/kolla_ovn_extend_start
RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start
{% block ovn_controller_footer %}{% endblock %}
{% block footer %}{% endblock %}

View file

@ -0,0 +1,6 @@
#!/bin/bash
if [[ ! -r "/var/log/kolla/openvswitch/ovn-controller.log" ]]; then
touch /var/log/kolla/openvswitch/ovn-controller.log
chown openvswitch:openvswitch /var/log/kolla/openvswitch/ovn-controller.log
fi

View file

@ -22,6 +22,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
COPY start_nb_db_server.sh /usr/local/bin/start-nb-db-server
RUN chmod 755 /usr/local/bin/start-nb-db-server
COPY extend_start.sh /usr/local/bin/kolla_ovn_extend_start
RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start
{% block ovn_nb_db_server_footer %}{% endblock %}
{% block footer %}{% endblock %}

View file

@ -0,0 +1,6 @@
#!/bin/bash
if [[ ! -r "/var/log/kolla/openvswitch/ovn-nb-db.log" ]]; then
touch /var/log/kolla/openvswitch/ovn-nb-db.log
chown openvswitch:openvswitch /var/log/kolla/openvswitch/ovn-nb-db.log
fi

View file

@ -20,5 +20,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% endif %}
{{ macros.install_packages(ovn_northd_packages | customizable("packages")) }}
COPY extend_start.sh /usr/local/bin/kolla_ovn_extend_start
RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start
{% block ovn_northd_footer %}{% endblock %}
{% block footer %}{% endblock %}

View file

@ -0,0 +1,5 @@
#!/bin/bash
if [[ ! -r "/var/log/kolla/openvswitch/ovn-northd.log" ]]; then
touch /var/log/kolla/openvswitch/ovn-northd.log
chown openvswitch:openvswitch /var/log/kolla/openvswitch/ovn-northd.log
fi

View file

@ -22,6 +22,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
COPY start_sb_db_server.sh /usr/local/bin/start-sb-db-server
RUN chmod 755 /usr/local/bin/start-sb-db-server
COPY extend_start.sh /usr/local/bin/kolla_ovn_extend_start
RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start
{% block ovn_sb_db_server_footer %}{% endblock %}
{% block footer %}{% endblock %}

View file

@ -0,0 +1,6 @@
#!/bin/bash
if [[ ! -r "/var/log/kolla/openvswitch/ovn-sb-db.log" ]]; then
touch /var/log/kolla/openvswitch/ovn-sb-db.log
chown openvswitch:openvswitch /var/log/kolla/openvswitch/ovn-sb-db.log
fi

View file

@ -0,0 +1 @@
../rabbitmq/Dockerfile.j2

View file

@ -0,0 +1,7 @@
Package: rabbitmq-server
Pin: version 4.1.*
Pin-Priority: 1000
Package: erlang*
Pin: version 1:27.*
Pin-Priority: 1000

View file

@ -0,0 +1,7 @@
Package: rabbitmq-server
Pin: version 4.1.*
Pin-Priority: 1000
Package: erlang*
Pin: version 1:27.*
Pin-Priority: 1000

View file

@ -0,0 +1 @@
../rabbitmq/extend_start.sh

View file

@ -0,0 +1 @@
../rabbitmq/healthcheck_rabbitmq

View file

@ -0,0 +1,4 @@
{% set rabbitmq_packages = [
'erlang-27.*',
'rabbitmq-server-4.1.*'
] %}

View file

@ -0,0 +1,4 @@
{% set rabbitmq_packages = [
'erlang-27.*',
'rabbitmq-server-4.1.*'
] %}

View file

@ -9,7 +9,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.configure_user(name='rabbitmq') }}
{{ macros.enable_extra_repos(['crb', 'erlang', 'rabbitmq']) }}
{{ macros.enable_extra_repos(['crb', 'erlang', 'erlang-26', 'erlang-27', 'rabbitmq']) }}
{% block rabbitmq_apt_preferences %}
{% if base_package_type == 'deb' %}
@ -20,10 +20,8 @@ COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq
{% block rabbitmq_install %}
{% if base_package_type == 'rpm' %}
{% set rabbitmq_packages = [
'erlang-26.2.*',
'rabbitmq-server-3.13.*'
] %}
{% set filepath = "rabbitmq/" + image_name + "/rabbitmq_packages_rpm." + base_distro %}
{% from filepath import rabbitmq_packages %}
{% elif base_package_type == 'deb' %}
{% set rabbitmq_packages = [

View file

@ -2,6 +2,6 @@ Package: rabbitmq-server
Pin: version 3.13.*
Pin-Priority: 1000
Package: erlang
Pin: version 26.2.*
Package: erlang*
Pin: version 1:26.2.*
Pin-Priority: 1000

View file

@ -2,6 +2,6 @@ Package: rabbitmq-server
Pin: version 3.13.*
Pin-Priority: 1000
Package: erlang
Pin: version 26.2.*
Package: erlang*
Pin: version 1:26.2.*
Pin-Priority: 1000

View file

@ -0,0 +1,4 @@
{% set rabbitmq_packages = [
'erlang-26.2.*',
'rabbitmq-server-3.13.*'
] %}

View file

@ -0,0 +1,4 @@
{% set rabbitmq_packages = [
'erlang-26.2.*',
'rabbitmq-server-3.13.*'
] %}

View file

@ -35,14 +35,10 @@ DISTRO_PRETTY_NAME = {
'centos': 'CentOS Stream 9',
'debian': 'Debian GNU/Linux 12 (bookworm)',
'rocky': 'Rocky Linux 9.* (Blue Onyx)',
'ubuntu': 'Ubuntu 22.04',
'ubuntu': 'Ubuntu 2{2,4}.04',
}
OPENSTACK_RELEASE = '2024.1'
# This is noarch repository so we will use it on all architectures
DELOREAN_DEPS = "https://trunk.rdoproject.org/centos9-caracal/" \
"delorean-deps.repo"
# TODO(mandre) check for file integrity instead of downloading from an HTTPS
# source
TARBALLS_BASE = "https://tarballs.opendev.org"
@ -132,15 +128,16 @@ _PROFILE_OPTS = [
]
hostarch = os.uname()[4]
if hostarch == 'aarch64':
debianarch = 'arm64'
elif hostarch == 'x86_64':
debianarch = 'amd64'
# NOTE: Apple Silicon reports as arm64 which is aarch64
if hostarch == "arm64":
hostarch = "aarch64"
if hostarch == 'aarch64':
debianarch = 'arm64'
elif hostarch == 'x86_64':
debianarch = 'amd64'
_CLI_OPTS = [
cfg.StrOpt('base', short='b', default='rocky',
choices=BASE_OS_DISTRO,
@ -281,7 +278,7 @@ _BASE_OPTS = [
help=('Set the package type of the distro. If not set then '
'the packaging type is set to "rpm" if a RHEL based '
'distro and "deb" if a Debian based distro.')),
cfg.ListOpt('rpm_setup_config', default=[DELOREAN_DEPS],
cfg.ListOpt('rpm_setup_config', default=[],
help=('Comma separated list of .rpm or .repo file(s) '
'or URL(s) to install before building containers')),
cfg.StrOpt('apt_sources_list', help=('Path to custom sources.list')),
@ -299,20 +296,29 @@ _BASE_OPTS = [
def get_source_opts(type_=None, location=None, reference=None, enabled=True,
version=None, sha256=None):
return [cfg.StrOpt('type', choices=['local', 'git', 'url'],
return [cfg.StrOpt('type',
choices=['local', 'git', 'url'],
default=type_,
help='Source location type'),
cfg.StrOpt('location', default=location,
cfg.StrOpt('location',
default=location,
help='The location for source install'),
cfg.StrOpt('reference', default=reference,
cfg.StrOpt('reference',
default=reference,
help=('Git reference to pull, commit sha, tag '
'or branch name')),
cfg.BoolOpt('enabled', default=enabled,
cfg.BoolOpt('enabled',
default=enabled,
help=('Whether the source is enabled')),
cfg.StrOpt('version', default=version,
cfg.StrOpt('version',
default=version,
help=('Package version to download for GitHub '
'sources')),
cfg.DictOpt('sha256', default=sha256)]
cfg.DictOpt('sha256',
default=sha256,
help=('Dictionary of sha256 sums for GitHub '
'sources')),
]
def get_user_opts(uid, gid, group):
@ -380,6 +386,9 @@ def parse(conf, args, usage=None, prog=None,
openstack_branch_slashed = openstack_branch.replace('-', '/')
conf.set_default('openstack_branch', openstack_branch)
conf.set_default('openstack_branch_slashed', openstack_branch_slashed)
# NOTE(bbezak) Derive debian_arch from base_arch if not set explicitly
derived_arch = 'arm64' if conf.base_arch == 'aarch64' else 'amd64'
conf.set_default('debian_arch', derived_arch)
if not conf.base_image:
conf.base_image = DEFAULT_BASE_TAGS[conf.base]['name']

View file

@ -189,6 +189,14 @@ SOURCES = {
'type': 'url',
'location': ('$tarballs_base/openstack/magnum/'
'magnum-${openstack_branch}.tar.gz')},
'magnum-conductor-plugin-helm': {
'version': 'v3.16.3',
'type': 'url',
'sha256': {
'amd64': 'f5355c79190951eed23c5432a3b920e071f4c00a64f75e077de0dd4cb7b294ea', # noqa: E501
'arm64': '5bd34ed774df6914b323ff84a0a156ea6ff2ba1eaf0113962fa773f3f9def798'}, # noqa: E501
'location': ('https://get.helm.sh/helm'
'-${version}-linux-${debian_arch}.tar.gz')},
'manila-base': {
'type': 'url',
'location': ('$tarballs_base/openstack/manila/'
@ -270,66 +278,66 @@ SOURCES = {
'location': ('$tarballs_base/openstack/placement/'
'placement-${openstack_branch}.tar.gz')},
'prometheus-alertmanager': {
'version': '0.27.0',
'version': '0.28.0',
'type': 'url',
'sha256': {
'amd64': '23c3f5a3c73de91dbaec419f3c492bef636deb02680808e5d842e6553aa16074', # noqa: E501
'arm64': 'a754304b682cec61f4bd5cfc029b451a30134554b3a2f21a9c487e12814ff8f3'}, # noqa: E501
'amd64': '6b5a38d32cddef23aad4435a58c1ea39dc0a07b4b155029c601d200720da9ca4', # noqa: E501
'arm64': '70d7c85a364d5d5d20e36dfff6886fbc5e105822642d5603cc2f38340dd2f7ee'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/alertmanager/'
'releases/download/v${version}/'
'alertmanager'
'-${version}.linux-${debian_arch}.tar.gz')},
'prometheus-blackbox-exporter': {
'version': '0.24.0',
'version': '0.25.0',
'type': 'url',
'sha256': {
'amd64': '81b36cece040491ac0d9995db2a0964c40e24838a03a151c3333a7dc3eef94ff', # noqa: E501
'arm64': 'acbbedf03de862fa833bc4dd810e63f105cb44e47abf493192fce3451852dc58'}, # noqa: E501
'amd64': 'c651ced6405c5e0cd292a400f47ae9b34f431f16c7bb098afbcd38f710144640', # noqa: E501
'arm64': '46ec5a54a41dc1ea8a8cecee637e117de4807d3b0976482a16596e82e79ac484'}, # 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.49.1',
'version': '0.49.2',
'type': 'url',
'sha256': {
'amd64': '1d5cc701a3fcdf1e8ed1c86da5304b896a6997d9e6673139e78a6f87812495b0', # noqa: E501
'arm64': 'c535f46d789599f25c7c680af193d4402da27a98d9828eb2ec916af6256e0c0c'}, # noqa: E501
'amd64': 'e8273ebfd18bac96834de3eb74a86bda4c2c6d6e9b4c924bdbf1f93e4e0bc24f', # noqa: E501
'arm64': '5b852edb911cfe3df7448b03ccbdc6538b6ff00299527864234127cc54f8080f'}, # noqa: E501
'location': ('https://github.com/'
'google/cadvisor/'
'releases/download/v${version}/'
'cadvisor'
'-v${version}-linux-${debian_arch}')},
'prometheus-elasticsearch-exporter': {
'version': '1.7.0',
'version': '1.8.0',
'type': 'url',
'sha256': {
'amd64': '45aff83bcea639dc977e34eaa6ad7b1453be96be469f570b39c2d4fc69bf5ffc', # noqa: E501
'arm64': '0cf7828f3da1aba73ebef6192ee885345ecd628df782b23aee9c81fa311b92ad'}, # noqa: E501
'amd64': 'a03a19d015c45ccc9e35f3a99c6a202b347a521a494cff0e404f9038e426135a', # noqa: E501
'arm64': '493ceef304a54e60dfcd0c477d4f0ddad02cfbbb975532f1cb3a169e662f4eea'}, # 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': '1.6.0',
'version': '2.2.0',
'type': 'url',
'sha256': {
'amd64': '57f1e71ac5bd87f18a40b9089e9fb513dec44ced58328b3065879b279f967596', # noqa: E501
'arm64': '8f474fbb515caf19fda92c839eece761738138c7c676d12d10aa0b8c29b3ef9d'}, # noqa: E501
'amd64': '37e26779be1ebaef2e76d7304a3d3ecfbdc232a5c57645ee0f97b13f014bd842', # noqa: E501
'arm64': '94ac011349d60d70c14985df2942d02ecac87c0b7c7a468133394eb1800a22b0'}, # 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.14.2',
'version': '0.15.0',
'type': 'url',
'sha256': {
'amd64': '11219035ad3cf63b174d04f52df7188fad8cd7a271631fba97a0e61b4d5e597f', # noqa: E501
'arm64': '1790f7c87aa950b5c3d87c7db998be797087699290f5c1dccb16b1b4611056bc'}, # noqa: E501
'amd64': 'd628bd8119b8e69696f61bdf6736490962d5abd52d35207b58a547447aa4e74f', # noqa: E501
'arm64': '1ec401184ed207c40e8ab8323f46d116f6ff7654ea4040fe0d786af237c5df8d'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/memcached_exporter/'
'releases/download/v${version}/'
@ -346,33 +354,33 @@ SOURCES = {
'prometheus-msteams'
'-linux-${debian_arch}')},
'prometheus-mtail': {
'version': '3.0.0-rc54',
'version': '3.0.8',
'type': 'url',
'sha256': {
'amd64': '6f6cb9c5f2eec6494ecbec9e3f6f0ab9444ef57844143749d7a5b2d2ab1819d6', # noqa: E501
'arm64': '6b7049bc44cfe5e90ffeb3ff6cbd2176a3dc7cd9df32ff9e10e1d303d38389e1'}, # noqa: E501
'amd64': '123c2ee5f48c3eff12ebccee38befd2233d715da736000ccde49e3d5607724e4', # noqa: E501
'arm64': 'aa04811c0929b6754408676de520e050c45dddeb3401881888a092c9aea89cae'}, # noqa: E501
'location': ('https://github.com/'
'google/mtail/'
'releases/download/v${version}/'
'mtail'
'_${version}_linux_${debian_arch}.tar.gz')},
'prometheus-mysqld-exporter': {
'version': '0.15.1',
'version': '0.16.0',
'type': 'url',
'sha256': {
'amd64': '85ea5bc68e1b9f466c1df10ff016652dd210371d42245e012b876265e89ae29d', # noqa: E501
'arm64': '8f55c2dcc41aab5998c1e22a2e78e5a940c6894b462736b129fd7bf9b48f8f60'}, # noqa: E501
'amd64': '32fe0b59ef3f52624a1958aaf6b8855f27c2b492a7026d62a975bbd251be209d', # noqa: E501
'arm64': '9ffc6e107bd122e68a95fa5c194bc3fc257104fef6ed720a26a240cd608c777b'}, # 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.7.0',
'version': '1.8.2',
'type': 'url',
'sha256': {
'amd64': 'a550cd5c05f760b7934a2d0afad66d2e92e681482f5f57a917465b1fba3b02a6', # noqa: E501
'arm64': 'e386c7b53bc130eaf5e74da28efc6b444857b77df8070537be52678aefd34d96'}, # noqa: E501
'amd64': '6809dd0b3ec45fd6e992c19071d6b5253aed3ead7bf0686885a51d85c6643c66', # noqa: E501
'arm64': '627382b9723c642411c33f48861134ebe893e70a63bcc8b3fc0619cd0bfac4be'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/node_exporter/'
'releases/download/v${version}/'
@ -401,11 +409,11 @@ SOURCES = {
'ovn-exporter'
'_${version}_linux_${debian_arch}.tar.gz')},
'prometheus-v2-server': {
'version': '2.50.1',
'version': '2.55.1',
'type': 'url',
'sha256': {
'amd64': '936f3777f8c3a4a90d3c58a6f410350d5932c79367b99771d002bd36e48bd05b', # noqa: E501
'arm64': '9f1a65cf08cef3dcd5f0d38d8673ecfaf1054aa9e1e5c18c94efd8546c1fdd96'}, # noqa: E501
'amd64': '19700bdd42ec31ee162e4079ebda4cd0a44432df4daa637141bdbea4b1cd8927', # noqa: E501
'arm64': 'af43368bc6379c3c8bd5ac0b82208060bba22267bf01ad3ab5df56ad5725bf88'}, # noqa: E501
'location': ('https://github.com/'
'prometheus/prometheus/'
'releases/download/v${version}/'

View file

@ -113,16 +113,13 @@ def run_build():
if conf.engine == engine.Engine.DOCKER.value:
try:
import docker
import packaging
packaging.version.parse(docker.__version__)
except ImportError:
docker.__version__
except ImportError as e:
LOG.error("Error, you have set Docker as container engine, "
"but the Python library is not found."
"Try running 'pip install docker'")
"Try running 'pip install docker'\n"
"Python error: %s", e)
sys.exit(1)
except AttributeError:
LOG.error("Error, Docker Python library is too old, "
"Try running 'pip install docker --upgrade'")
if conf.squash:
squash_version = utils.get_docker_squash_version()
LOG.info('Image squash is enabled and "docker-squash" version '
@ -132,10 +129,11 @@ def run_build():
try:
import podman
podman.__version__
except ImportError:
LOG.error("Error, you have set podman as container engine, "
"but library is not found."
"Try running pip install podman")
except ImportError as e:
LOG.error("Error, you have set Podman as container engine, "
"but the Python library is not found."
"Try running 'pip install podman'\n"
"Python error: %s", e)
exit(1)
kolla = KollaWorker(conf)

View file

@ -122,7 +122,10 @@ class KollaWorker(object):
self.distro_package_manager = 'apt'
self.base_package_type = 'deb'
elif self.base in ['ubuntu']:
self.conf.distro_python_version = "3.10"
if self.base_tag.startswith(('24.04', 'noble')):
self.conf.distro_python_version = "3.12"
else:
self.conf.distro_python_version = "3.10"
self.distro_package_manager = 'apt'
self.base_package_type = 'deb'
else:

View file

@ -119,6 +119,16 @@ class PushTask(EngineTask):
def push_image(self, image):
kwargs = dict(stream=True, decode=True)
# NOTE(bbezak): Docker ≥ 28.3.3 rejects a push with no
# X-Registry-Auth header (moby/moby#50371, docker-py#3348).
# If the SDK cannot find creds for this registry, we inject
# an empty {} so the daemon still accepts the request.
# TODO(bbezak): Remove fallback once docker-py handles empty auth
if self.conf.engine == engine.Engine.DOCKER.value:
from docker.auth import resolve_authconfig
if not resolve_authconfig(self.engine_client.api._auth_configs,
registry=self.conf.registry):
kwargs.setdefault("auth_config", {})
for response in self.engine_client.images.push(image.canonical_name,
**kwargs):

View file

@ -36,6 +36,7 @@ UNBUILDABLE_IMAGES = {
},
'rocky': {
"collectd", # Missing libpqos.so.4()(64bit)
"hacluster-pcs", # Missing crmsh package
"nova-spicehtml5proxy", # Missing spicehtml5 package
"ovsdpdk", # Not supported on CentOS

View file

@ -89,20 +89,28 @@ def handle_repos(context, reponames, mode):
if not isinstance(reponames, list):
raise TypeError("First argument should be a list of repositories")
if context.get('repos_yaml'):
repofile = context.get('repos_yaml')
else:
repofile = os.path.dirname(os.path.realpath(__file__)) + '/repos.yaml'
base_package_type = context.get('base_package_type')
base_distro = context.get('base_distro')
base_distro_tag = context.get('base_distro_tag')
base_arch = context.get('base_arch')
repofile = context.get('repos_yaml') or (
os.path.dirname(os.path.realpath(__file__)) +
(
'/repos-noble.yaml'
if (
base_distro_tag and
base_distro_tag.startswith(('24.04', 'noble'))
)
else '/repos.yaml'
)
)
with open(repofile, 'r') as repos_file:
repo_data = {}
for name, params in yaml.safe_load(repos_file).items():
repo_data[name] = params
base_package_type = context.get('base_package_type')
base_distro = context.get('base_distro')
base_arch = context.get('base_arch')
commands = ''
try:

View file

@ -0,0 +1,107 @@
---
ubuntu:
erlang-26:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-26/ubuntu"
suite: "noble"
component: "main"
gpg_key: "erlang-ppa.gpg"
erlang-27:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-27/ubuntu"
suite: "noble"
component: "main"
gpg_key: "erlang-ppa.gpg"
fluentd:
url: "https://packages.treasuredata.com/lts/5/ubuntu/noble/"
suite: "noble"
component: "contrib"
gpg_key: "treasuredata.asc"
grafana:
url: "https://apt.grafana.com"
suite: "stable"
component: "main"
gpg_key: "grafana.asc"
influxdb:
url: "https://repos.influxdata.com/ubuntu"
# TODO(mnasiadka): Switch to noble when available
suite: "jammy"
component: "stable"
gpg_key: "influxdb.asc"
mariadb:
url: "https://dlm.mariadb.com/repo/mariadb-server/10.11/repo/ubuntu"
suite: "noble"
component: "main"
gpg_key: "mariadb.gpg"
opensearch:
url: "https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt/"
suite: "stable"
component: "main"
gpg_key: "opensearch.asc"
opensearch-dashboards:
url: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.x/apt/"
suite: "stable"
component: "main"
gpg_key: "opensearch.asc"
proxysql:
url: "https://repo.proxysql.com/ProxySQL/proxysql-2.6.x/noble/"
suite: "./"
component: ""
gpg_key: "proxysql.asc"
rabbitmq:
url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu"
suite: "noble"
component: "main"
gpg_key: "rabbitmq.gpg"
ubuntu-aarch64:
erlang-26:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-26/ubuntu"
suite: "noble"
component: "main"
gpg_key: "erlang-ppa.gpg"
erlang-27:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-27/ubuntu"
suite: "noble"
component: "main"
gpg_key: "erlang-ppa.gpg"
fluentd:
url: "https://packages.treasuredata.com/lts/5/ubuntu/noble/"
suite: "noble"
component: "contrib"
gpg_key: "treasuredata.asc"
grafana:
url: "https://apt.grafana.com"
suite: "stable"
component: "main"
gpg_key: "grafana.asc"
influxdb:
url: "https://repos.influxdata.com/ubuntu"
# TODO(mnasiadka): Switch to noble when available
suite: "jammy"
component: "stable"
gpg_key: "influxdb.asc"
mariadb:
url: "https://dlm.mariadb.com/repo/mariadb-server/10.11/repo/ubuntu"
suite: "noble"
component: "main"
gpg_key: "mariadb.gpg"
opensearch:
url: "https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt/"
suite: "stable"
component: "main"
gpg_key: "opensearch.asc"
opensearch-dashboards:
url: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.x/apt/"
suite: "stable"
component: "main"
gpg_key: "opensearch.asc"
proxysql:
url: "https://repo.proxysql.com/ProxySQL/proxysql-2.6.x/noble/"
suite: "./"
component: ""
gpg_key: "proxysql.asc"
rabbitmq:
url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu"
suite: "noble"
component: "main"
arch: "amd64"
gpg_key: "rabbitmq.gpg"

View file

@ -21,7 +21,8 @@ centos-aarch64:
ceph: "centos-ceph-reef"
crb: "crb"
epel: "epel"
erlang: "copr-hrw-erlang-for-rabbitmq"
erlang-26: "copr-rabbitmq-erlang-26"
erlang-27: "copr-rabbitmq-erlang-27"
extras: "extras"
fluentd: "fluent-package-lts"
grafana: "grafana"
@ -39,8 +40,13 @@ centos-aarch64:
# https://www.rabbitmq.com/install-debian.html#apt-cloudsmith
debian:
erlang:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang/ubuntu"
erlang-26:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-26/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "erlang-ppa.gpg"
erlang-27:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-27/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "erlang-ppa.gpg"
@ -80,14 +86,19 @@ debian:
component: ""
gpg_key: "proxysql.asc"
rabbitmq:
url: "https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/debian"
suite: "bullseye"
url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian"
suite: "bookworm"
component: "main"
gpg_key: "rabbitmq.gpg"
debian-aarch64:
erlang:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang/ubuntu"
erlang-26:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-26/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "erlang-ppa.gpg"
erlang-27:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-27/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "erlang-ppa.gpg"
@ -127,8 +138,8 @@ debian-aarch64:
component: ""
gpg_key: "proxysql.asc"
rabbitmq:
url: "https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/debian"
suite: "bullseye"
url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian"
suite: "bookworm"
component: "main"
# NOTE(mnasiadka): Since rabbitmq is really noarch and community mirror is not
# syncing binary-aarch64 - we're using amd64 here.
@ -157,7 +168,8 @@ rocky-aarch64:
ceph: "centos-ceph-reef"
crb: "crb"
epel: "epel"
erlang: "copr-hrw-erlang-for-rabbitmq"
erlang-26: "copr-rabbitmq-erlang-26"
erlang-27: "copr-rabbitmq-erlang-27"
extras: "extras"
fluentd: "fluent-package-lts"
grafana: "grafana"
@ -172,8 +184,13 @@ rocky-aarch64:
rabbitmq: "rabbitmq_rabbitmq-server"
ubuntu:
erlang:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang/ubuntu"
erlang-26:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-26/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "erlang-ppa.gpg"
erlang-27:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-27/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "erlang-ppa.gpg"
@ -213,14 +230,19 @@ ubuntu:
component: ""
gpg_key: "proxysql.asc"
rabbitmq:
url: "https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu"
url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "rabbitmq.gpg"
ubuntu-aarch64:
erlang:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang/ubuntu"
erlang-26:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-26/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "erlang-ppa.gpg"
erlang-27:
url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-27/ubuntu"
suite: "jammy"
component: "main"
gpg_key: "erlang-ppa.gpg"
@ -260,7 +282,7 @@ ubuntu-aarch64:
component: ""
gpg_key: "proxysql.asc"
rabbitmq:
url: "https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu"
url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu"
suite: "jammy"
component: "main"
arch: "amd64"

View file

@ -0,0 +1 @@
FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}

View file

@ -81,10 +81,12 @@ class TasksTest(base.TestCase):
@mock.patch(engine_client)
def test_push_image(self, mock_client):
self.engine_client = mock_client
mock_client().api._auth_configs = {}
pusher = tasks.PushTask(self.conf, self.image)
pusher.run()
mock_client().images.push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.image.canonical_name,
decode=True, stream=True, auth_config={})
self.assertTrue(pusher.success)
@mock.patch.dict(os.environ, clear=True)
@ -92,11 +94,13 @@ class TasksTest(base.TestCase):
def test_push_image_failure(self, mock_client):
"""failure on connecting Docker API"""
self.engine_client = mock_client
mock_client().api._auth_configs = {}
mock_client().images.push.side_effect = Exception
pusher = tasks.PushTask(self.conf, self.image)
pusher.run()
mock_client().images.push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.image.canonical_name,
decode=True, stream=True, auth_config={})
self.assertFalse(pusher.success)
self.assertEqual(utils.Status.PUSH_ERROR, self.image.status)
@ -105,11 +109,13 @@ class TasksTest(base.TestCase):
def test_push_image_failure_retry(self, mock_client):
"""failure on connecting Docker API, success on retry"""
self.engine_client = mock_client
mock_client().api._auth_configs = {}
mock_client().images.push.side_effect = [Exception, []]
pusher = tasks.PushTask(self.conf, self.image)
pusher.run()
mock_client().images.push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.image.canonical_name,
decode=True, stream=True, auth_config={})
self.assertFalse(pusher.success)
self.assertEqual(utils.Status.PUSH_ERROR, self.image.status)
@ -125,12 +131,14 @@ class TasksTest(base.TestCase):
def test_push_image_failure_error(self, mock_client):
"""Docker connected, failure to push"""
self.engine_client = mock_client
mock_client().api._auth_configs = {}
mock_client().images.push.return_value = [{'errorDetail': {'message':
'mock push fail'}}]
pusher = tasks.PushTask(self.conf, self.image)
pusher.run()
mock_client().images.push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.image.canonical_name,
decode=True, stream=True, auth_config={})
self.assertFalse(pusher.success)
self.assertEqual(utils.Status.PUSH_ERROR, self.image.status)
@ -139,12 +147,14 @@ class TasksTest(base.TestCase):
def test_push_image_failure_error_retry(self, mock_client):
"""Docker connected, failure to push, success on retry"""
self.engine_client = mock_client
mock_client().api._auth_configs = {}
mock_client().images.push.return_value = [{'errorDetail': {'message':
'mock push fail'}}]
pusher = tasks.PushTask(self.conf, self.image)
pusher.run()
mock_client().images.push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.image.canonical_name,
decode=True, stream=True, auth_config={})
self.assertFalse(pusher.success)
self.assertEqual(utils.Status.PUSH_ERROR, self.image.status)
@ -858,3 +868,49 @@ class MainTest(base.TestCase):
mock_run_build.return_value = image_statuses
result = build_cmd.main()
self.assertEqual(0, result)
@mock.patch('requests.get')
@mock.patch(engine_client)
def test_build_etcd_cross_arch(self, mock_docker, mock_requests_get):
"""Test building etcd with --base-arch aarch64.
This ensures we fetch the arm64 tarball instead of amd64.
"""
mock_response = mock.Mock()
# Force error (404) so we can inspect the requested URL
mock_response.status_code = 404
mock_requests_get.return_value = mock_response
argv = ['kolla-build', '--base-arch', 'aarch64', 'etcd']
with mock.patch.object(sys, 'argv', argv):
build_cmd.main()
self.assertTrue(
mock_requests_get.called,
"requests.get was never called; 'etcd' may not have been matched."
)
found_url = None
for call_args in mock_requests_get.call_args_list:
url = call_args[0][0]
# Look for a string like 'etcd-vX.Y.Z-linux-...'
if 'etcd-v' in url and 'linux-' in url:
found_url = url
break
self.assertIsNotNone(
found_url,
"No GET request found for the etcd tarball "
"(expected 'etcd-v' and 'linux-' in the URL)."
)
self.assertIn(
'arm64',
found_url,
"Expected 'arm64' in etcd URL (aarch64), got: %s" % found_url
)
self.assertNotIn(
'amd64',
found_url,
"Should not be 'amd64' for aarch64 build, got: %s" % found_url
)

View file

@ -86,13 +86,13 @@ class MethodsTest(base.TestCase):
}
result = methods.handle_repos(template_vars, ['rabbitmq'], 'enable')
expectCmd = "RUN echo 'Uris: https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/debian' " # noqa: E501
expectCmd = "RUN echo 'Uris: https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian' " # 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: bullseye' "
expectCmd += "echo 'Suites: bookworm' "
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 && "
@ -133,13 +133,13 @@ class MethodsTest(base.TestCase):
expectCmd += ">>/etc/apt/sources.list.d/grafana.sources && "
expectCmd += "echo 'Uris: "
expectCmd += "https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/debian' " # noqa: E501
expectCmd += "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian' " # 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: bullseye' "
expectCmd += "echo 'Suites: bookworm' "
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"

View file

@ -0,0 +1,6 @@
---
fixes:
- |
Fixes the inconsistency issue between config.json and
real state in the container.
`LP#2060855 <https://launchpad.net/bugs/2060855>`__

View file

@ -0,0 +1,5 @@
---
fixes:
- |
Fixes MariaDB backup failure when ProxySQL is used
`LP#2080818 <https://launchpad.net/bugs/2080818>`__

View file

@ -0,0 +1,10 @@
---
fixes:
- |
Fixed missing metrics in Prometheus libvirt exporter.
The Prometheus libvirt exporter has been bumped from ``v1.6.0`` to
``v2.2.0``. This restores some metrics that were lost when the exporter
source was changed in a previous release.
`LP#2120639 <https://launchpad.net/bugs/2120639>`__.

View file

@ -0,0 +1,7 @@
---
fixes:
- |
Apache services like Keystone now started with correct unicode locale.
Keystone under Apache on Ubuntu will fail with a UnicodeEncodeError
when LDAP driver and DEBUG are enabled.
`LP#2076453 <https://bugs.launchpad.net/kolla/+bug/2076453>`__

View file

@ -0,0 +1,6 @@
---
upgrade:
- |
``Erlang`` RPMs on ``aarch64`` architecture are now installed from a new
location - `OpenStack Kolla's COPR <https://copr.fedorainfracloud.org/coprs/g/openstack-kolla/rabbitmq-erlang/>`_
compared to `Hrw's COPR <https://copr.fedorainfracloud.org/coprs/hrw/erlang-for-rabbitmq/>`_.

View file

@ -0,0 +1,5 @@
---
upgrade:
- |
Debian container image builds now use bookworm suite
for RabbitMQ installation.

Some files were not shown because too many files have changed in this diff Show more