mirror of
https://opendev.org/openstack/kolla.git
synced 2026-01-17 07:20:24 +00:00
Compare commits
82 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07103ab0a0 | ||
|
|
37d68ab91b | ||
|
|
d0870105a2 | ||
|
|
1fe1364310 | ||
|
|
97350d8337 | ||
|
|
519c7e860f | ||
|
|
507e8de9d6 | ||
|
|
e10ef98805 | ||
|
|
9b1a12cdb4 | ||
|
|
9f7cc8ff32 | ||
|
|
eef56454e0 | ||
|
|
489989c587 | ||
|
|
8345ef2961 | ||
|
|
2a6a901291 | ||
|
|
a2c688add9 | ||
|
|
48f076b2d9 | ||
|
|
fd4a0e9d5e | ||
|
|
23a40140e9 | ||
|
|
fa6431e210 | ||
|
|
c03188b4d6 | ||
|
|
5f9055397a | ||
|
|
92c9782e83 | ||
|
|
9f557299c6 | ||
|
|
a3ca3af0fc | ||
|
|
4dde14f101 | ||
|
|
8f50223bb1 | ||
|
|
eb29ede7b3 | ||
|
|
1e2bcd5f26 | ||
|
|
ca00700185 | ||
|
|
ed303dc385 | ||
|
|
0bb6a65ed6 | ||
|
|
6aba731d6a | ||
|
|
6fd8f4f4f5 | ||
|
|
ce5b6560bc | ||
|
|
8cf022c355 | ||
|
|
9ef6688a99 | ||
|
|
6053fefb34 | ||
|
|
34d537a90e | ||
|
|
0d3cec1153 | ||
|
|
9ac6af71cf | ||
|
|
e99c27ac41 | ||
|
|
fddc922c3a | ||
|
|
efc4b72d18 | ||
|
|
771272100b | ||
|
|
8a856586c4 | ||
|
|
5e94215406 | ||
|
|
86d6fac7af | ||
|
|
b0c98b0987 | ||
|
|
0a8d76e861 | ||
|
|
68e96e72f4 | ||
|
|
648be98c9b | ||
|
|
af464eeb36 | ||
|
|
7eb2f9e9d9 | ||
|
|
97a6d193be | ||
|
|
4537f2b534 | ||
|
|
9a0914d10d | ||
|
|
b3eaf7df8e | ||
|
|
d9639f05c8 | ||
|
|
abf7a4cf85 | ||
|
|
04ce136b99 | ||
|
|
b5e84f4bc6 | ||
|
|
b9584882ed | ||
|
|
6f63211cff | ||
|
|
a58a7f88de | ||
|
|
4df43abd70 | ||
|
|
9c54f236bc | ||
|
|
08f6b89cc3 | ||
|
|
7bc03b99ff | ||
|
|
b44df3b5d0 | ||
|
|
dd701c4d39 | ||
|
|
6f755f9e75 | ||
|
|
745c911f57 | ||
|
|
cc66d0a534 | ||
|
|
14081a8251 | ||
|
|
4936a6ff98 | ||
|
|
bbe297d5b9 | ||
|
|
7efe8a37f0 | ||
|
|
eb23d9cc28 | ||
|
|
adaef5768c | ||
|
|
84f036a54b | ||
|
|
d48e7ee9da | ||
|
|
e46a6ecb9a |
117 changed files with 1629 additions and 252 deletions
|
|
@ -2,3 +2,4 @@
|
|||
host=review.opendev.org
|
||||
port=29418
|
||||
project=openstack/kolla.git
|
||||
defaultbranch=stable/2024.1
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
12
.zuul.d/tox.yaml
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
~~~~~~~~~~~~~
|
||||
|
|
|
|||
|
|
@ -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
|
||||
----------
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ...
|
||||
|
|
|
|||
|
|
@ -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/
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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/
|
||||
|
|
|
|||
|
|
@ -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/
|
||||
|
|
|
|||
11
docker/base/copr-rabbitmq-erlang-26.repo
Normal file
11
docker/base/copr-rabbitmq-erlang-26.repo
Normal 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
|
||||
11
docker/base/copr-rabbitmq-erlang-27.repo
Normal file
11
docker/base/copr-rabbitmq-erlang-27.repo
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
16
docker/base/sources.list.ubuntu.noble
Normal file
16
docker/base/sources.list.ubuntu.noble
Normal 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.
|
||||
15
docker/base/sources.list.ubuntu.noble.aarch64
Normal file
15
docker/base/sources.list.ubuntu.noble.aarch64
Normal 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.
|
||||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 = [
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
|
|
|||
12
docker/dnsmasq/extend_start.sh
Normal file
12
docker/dnsmasq/extend_start.sh
Normal 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
|
||||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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 = [
|
||||
|
|
|
|||
|
|
@ -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' %}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 = [
|
||||
|
|
|
|||
1
docker/kolla-toolbox/apt_preferences_rabbitmq.debian
Symbolic link
1
docker/kolla-toolbox/apt_preferences_rabbitmq.debian
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../rabbitmq/rabbitmq/apt_preferences_rabbitmq.debian
|
||||
1
docker/kolla-toolbox/apt_preferences_rabbitmq.ubuntu
Symbolic link
1
docker/kolla-toolbox/apt_preferences_rabbitmq.ubuntu
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../rabbitmq/rabbitmq/apt_preferences_rabbitmq.ubuntu
|
||||
|
|
@ -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 %}
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
||||
|
|
|
|||
|
|
@ -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/*
|
||||
|
|
|
|||
135
docker/mariadb/mariadb-server/backup_replica.sh
Normal file
135
docker/mariadb/mariadb-server/backup_replica.sh
Normal 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
|
||||
|
|
@ -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 %}
|
||||
|
||||
|
|
|
|||
9
docker/neutron/neutron-dhcp-agent/extend_start.sh
Normal file
9
docker/neutron/neutron-dhcp-agent/extend_start.sh
Normal 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
|
||||
|
|
@ -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 %}
|
||||
|
||||
|
|
|
|||
|
|
@ -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) }}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
|
|||
'sasl2-bin',
|
||||
'swtpm',
|
||||
'swtpm-tools',
|
||||
'tpm2-tools',
|
||||
'trousers'
|
||||
] %}
|
||||
|
||||
|
|
|
|||
|
|
@ -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' %}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
|
|
|||
6
docker/ovn/ovn-controller/extend_start.sh
Normal file
6
docker/ovn/ovn-controller/extend_start.sh
Normal 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
|
||||
|
|
@ -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 %}
|
||||
|
|
|
|||
6
docker/ovn/ovn-nb-db-server/extend_start.sh
Normal file
6
docker/ovn/ovn-nb-db-server/extend_start.sh
Normal 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
|
||||
|
|
@ -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 %}
|
||||
|
|
|
|||
5
docker/ovn/ovn-northd/extend_start.sh
Normal file
5
docker/ovn/ovn-northd/extend_start.sh
Normal 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
|
||||
|
|
@ -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 %}
|
||||
|
|
|
|||
6
docker/ovn/ovn-sb-db-server/extend_start.sh
Normal file
6
docker/ovn/ovn-sb-db-server/extend_start.sh
Normal 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
|
||||
1
docker/rabbitmq/rabbitmq-4-1/Dockerfile.j2
Symbolic link
1
docker/rabbitmq/rabbitmq-4-1/Dockerfile.j2
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../rabbitmq/Dockerfile.j2
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
Package: rabbitmq-server
|
||||
Pin: version 4.1.*
|
||||
Pin-Priority: 1000
|
||||
|
||||
Package: erlang*
|
||||
Pin: version 1:27.*
|
||||
Pin-Priority: 1000
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
Package: rabbitmq-server
|
||||
Pin: version 4.1.*
|
||||
Pin-Priority: 1000
|
||||
|
||||
Package: erlang*
|
||||
Pin: version 1:27.*
|
||||
Pin-Priority: 1000
|
||||
1
docker/rabbitmq/rabbitmq-4-1/extend_start.sh
Symbolic link
1
docker/rabbitmq/rabbitmq-4-1/extend_start.sh
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../rabbitmq/extend_start.sh
|
||||
1
docker/rabbitmq/rabbitmq-4-1/healthcheck_rabbitmq
Symbolic link
1
docker/rabbitmq/rabbitmq-4-1/healthcheck_rabbitmq
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../rabbitmq/healthcheck_rabbitmq
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{% set rabbitmq_packages = [
|
||||
'erlang-27.*',
|
||||
'rabbitmq-server-4.1.*'
|
||||
] %}
|
||||
4
docker/rabbitmq/rabbitmq-4-1/rabbitmq_packages_rpm.rocky
Normal file
4
docker/rabbitmq/rabbitmq-4-1/rabbitmq_packages_rpm.rocky
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{% set rabbitmq_packages = [
|
||||
'erlang-27.*',
|
||||
'rabbitmq-server-4.1.*'
|
||||
] %}
|
||||
|
|
@ -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 = [
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
4
docker/rabbitmq/rabbitmq/rabbitmq_packages_rpm.centos
Normal file
4
docker/rabbitmq/rabbitmq/rabbitmq_packages_rpm.centos
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{% set rabbitmq_packages = [
|
||||
'erlang-26.2.*',
|
||||
'rabbitmq-server-3.13.*'
|
||||
] %}
|
||||
4
docker/rabbitmq/rabbitmq/rabbitmq_packages_rpm.rocky
Normal file
4
docker/rabbitmq/rabbitmq/rabbitmq_packages_rpm.rocky
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{% set rabbitmq_packages = [
|
||||
'erlang-26.2.*',
|
||||
'rabbitmq-server-3.13.*'
|
||||
] %}
|
||||
|
|
@ -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']
|
||||
|
|
|
|||
|
|
@ -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}/'
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
107
kolla/template/repos-noble.yaml
Normal file
107
kolla/template/repos-noble.yaml
Normal 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"
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
1
kolla/tests/docker/etcd/Dockerfile.j2
Normal file
1
kolla/tests/docker/etcd/Dockerfile.j2
Normal file
|
|
@ -0,0 +1 @@
|
|||
FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
|
||||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
6
releasenotes/notes/bug-2060855-77516da722d04761.yaml
Normal file
6
releasenotes/notes/bug-2060855-77516da722d04761.yaml
Normal 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>`__
|
||||
5
releasenotes/notes/bug-2080818-9eacce36a8c18f8f.yaml
Normal file
5
releasenotes/notes/bug-2080818-9eacce36a8c18f8f.yaml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixes MariaDB backup failure when ProxySQL is used
|
||||
`LP#2080818 <https://launchpad.net/bugs/2080818>`__
|
||||
10
releasenotes/notes/bug-2120639-74c180bd812ddcf7.yaml
Normal file
10
releasenotes/notes/bug-2120639-74c180bd812ddcf7.yaml
Normal 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>`__.
|
||||
|
|
@ -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>`__
|
||||
6
releasenotes/notes/copr-move-5d0464c50dc85ccf.yaml
Normal file
6
releasenotes/notes/copr-move-5d0464c50dc85ccf.yaml
Normal 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/>`_.
|
||||
|
|
@ -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
Loading…
Add table
Reference in a new issue