aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/source/contributor/release-management.rst42
-rw-r--r--kolla/docker/cinder/cinder-volume/Dockerfile.j25
-rw-r--r--kolla/docker/keystone/keystone/Dockerfile.j248
-rw-r--r--kolla/docker/keystone/keystone/extend_start.sh28
-rw-r--r--kolla/docker/keystone/keystone/keystone_bootstrap.sh66
-rw-r--r--kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j22
-rw-r--r--kolla/docker/neutron/neutron-ovn-agent/extend_start.sh11
-rw-r--r--releasenotes/notes/cinder-volume-pip-packages-6aca004d613f376f.yaml9
-rw-r--r--releasenotes/notes/drop-keystone-container-62c69beab418889b.yaml5
-rw-r--r--releasenotes/notes/neutron-ovn-agent-wrappers-b937a71cd298f21a.yaml7
-rw-r--r--releasenotes/source/2025.1.rst2
-rw-r--r--roles/kolla-build-deps/tasks/main.yml4
12 files changed, 73 insertions, 156 deletions
diff --git a/doc/source/contributor/release-management.rst b/doc/source/contributor/release-management.rst
index b00f8dd22..16e2e82c9 100644
--- a/doc/source/contributor/release-management.rst
+++ b/doc/source/contributor/release-management.rst
@@ -458,25 +458,47 @@ a recurring topic for that in the first Kolla meeting each month.
* example release patch: https://review.opendev.org/c/openstack/releases/+/860521
-Extended Maintenance (EM)
--------------------------
+Unmaintained
+------------
-When a branch is entering EM, projects will make final releases. The release
-team will propose tagging the Kolla deliverables as EM, but this should only be
-done once all other dependent projects have made their final release, and final
-Kolla releases have been made including those dependencies.
+This stage applies only to SLURP (``.1``) branches. Non-SLURP (``.2``)
+branches are never a skip-level upgrade target, so they move directly from
+Maintained to End of Life instead.
-After a branch enters EM, we typically do the following:
+After a branch becomes unmaintained, we typically do the following:
* stop backporting fixes to the branch by default. Important fixes or those
requested by community members may be merged if deemed appropriate
* stop publishing images to Quay.io
* stop actively maintaining CI
+* remove the branch's existing container images from
+ `quay.io/openstack.kolla <https://quay.io/organization/openstack.kolla>`__
+* remove the upgrade CI jobs in subsequent branches that upgrade from this
+ branch. Due to SLURP this may be more than one branch - e.g. if 2024.1
+ becomes unmaintained, remove its upgrade jobs from both 2024.2 and 2025.1
+* switch kolla-ansible image builds to always build in CI (instead of the
+ periodic tagged publish used for maintained branches), since images are no
+ longer published
End of Life (EOL)
-----------------
Once a branch has been unmaintained (failing CI, no patches merged) for 6
-months, it may be moved to EOL. Since this is done at different times for
-different projects, send an email to openstack-discuss to keep the community
-informed.
+months, it may be moved to EOL. Non-SLURP (``.2``) branches skip the
+Unmaintained stage and move directly to EOL once superseded. Since this is
+done at different times for different projects, send an email to
+openstack-discuss to keep the community informed.
+
+While transitioning to EOL for non-SLURP and unmaintained for SLURP is
+done by the release team as part of their processes - the transition
+from unmaintained to EOL needs to be requested by sending a patch
+to the openstack/releases repository.
+
+When a branch reaches EOL:
+
+* for a non-SLURP (``.2``) branch: remove its upgrade CI jobs from the next
+ branch, and remove its container images from
+ `quay.io/openstack.kolla <https://quay.io/organization/openstack.kolla>`__
+* for a SLURP (``.1``) branch: upgrade jobs and container images should
+ already have been removed during the Unmaintained stage, so no further
+ action is needed beyond the community notification
diff --git a/kolla/docker/cinder/cinder-volume/Dockerfile.j2 b/kolla/docker/cinder/cinder-volume/Dockerfile.j2
index 772350e4e..f2a09d866 100644
--- a/kolla/docker/cinder/cinder-volume/Dockerfile.j2
+++ b/kolla/docker/cinder/cinder-volume/Dockerfile.j2
@@ -45,10 +45,13 @@ RUN sed -i '1 i include /var/lib/cinder/volumes/*' /etc/tgt/targets.conf
{% endif %}
+{% set cinder_volume_pip_packages = [] %}
+
COPY cinder_sudoers /etc/sudoers.d/kolla_cinder_volume_sudoers
COPY extend_start.sh /usr/local/bin/kolla_cinder_extend_start
-RUN chmod 750 /etc/sudoers.d \
+RUN {{ macros.install_pip(cinder_volume_pip_packages | customizable("pip_packages")) }} \
+ && chmod 750 /etc/sudoers.d \
&& chmod 440 /etc/sudoers.d/kolla_cinder_volume_sudoers \
&& chmod 644 /usr/local/bin/kolla_cinder_extend_start
diff --git a/kolla/docker/keystone/keystone/Dockerfile.j2 b/kolla/docker/keystone/keystone/Dockerfile.j2
deleted file mode 100644
index df2003f10..000000000
--- a/kolla/docker/keystone/keystone/Dockerfile.j2
+++ /dev/null
@@ -1,48 +0,0 @@
-FROM {{ namespace }}/{{ image_prefix }}keystone-base:{{ tag }}
-{% block labels %}
-LABEL maintainer="{{ maintainer }}" name="{{ image_name }}"
-{% endblock %}
-
-{% block keystone_header %}{% endblock %}
-
-{% import "macros.j2" as macros with context %}
-
-{{ macros.kolla_enable_base_repos() }}
-
-{% if base_package_type == 'rpm' %}
- {% set keystone_packages = [
- 'krb5-devel',
- ] %}
-{% elif base_package_type == 'deb' %}
- {% set keystone_packages = [
- '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/*',
-] %}
-
-COPY keystone_bootstrap.sh /usr/local/bin/kolla_keystone_bootstrap
-COPY extend_start.sh /usr/local/bin/kolla_extend_start
-
-RUN chmod 644 /usr/local/bin/kolla_extend_start \
- && chmod 755 /usr/local/bin/kolla_keystone_bootstrap \
- && if [ "$(ls /plugins)" ]; then \
- {{ macros.install_pip(keystone_plugins_pip_packages) }}; \
- fi
-
-{{ macros.kolla_patch_sources() }}
-
-{% block keystone_footer %}{% endblock %}
-{% block footer %}{% endblock %}
-{{ macros.kolla_cleanup_repos() }}
diff --git a/kolla/docker/keystone/keystone/extend_start.sh b/kolla/docker/keystone/keystone/extend_start.sh
deleted file mode 100644
index 0011c72fd..000000000
--- a/kolla/docker/keystone/keystone/extend_start.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-EXTRA_KEYSTONE_MANAGE_ARGS=${EXTRA_KEYSTONE_MANAGE_ARGS-}
-# Upgrade and exit if KOLLA_UPGRADE variable is set. This catches all cases
-# of the KOLLA_UPGRADE variable being set, including empty.
-if [[ "${!KOLLA_UPGRADE[@]}" ]]; then
- # TODO(duonghq): check doctor result here
- # TODO: find reason why doctor failed in gate
- # sudo -H -u keystone keystone-manage doctor
- sudo -H -u keystone keystone-manage ${EXTRA_KEYSTONE_MANAGE_ARGS} db_sync --expand
- sudo -H -u keystone keystone-manage ${EXTRA_KEYSTONE_MANAGE_ARGS} db_sync --migrate
- exit 0
-fi
-
-# Contract database and exit if KOLLA_FINISH_UPGRADE variable is set.
-# This catches all cases of the KOLLA_FINISH_UPGRADE variable being set,
-# including empty.
-if [[ "${!KOLLA_FINISH_UPGRADE[@]}" ]]; then
- sudo -H -u keystone keystone-manage ${EXTRA_KEYSTONE_MANAGE_ARGS} db_sync --contract
- exit 0
-fi
-
-# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases
-# of the KOLLA_BOOTSTRAP variable being set, including empty.
-if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
- sudo -H -u keystone keystone-manage ${EXTRA_KEYSTONE_MANAGE_ARGS} db_sync
- exit 0
-fi
diff --git a/kolla/docker/keystone/keystone/keystone_bootstrap.sh b/kolla/docker/keystone/keystone/keystone_bootstrap.sh
deleted file mode 100644
index 1b04d99b6..000000000
--- a/kolla/docker/keystone/keystone/keystone_bootstrap.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/bash
-
-set -o pipefail
-
-# NOTE(SamYaple): Kolla needs to wraps `keystone-manage bootstrap` to ensure
-# any change is reported correctly for idempotency. This script will exit with
-# valid json that can be parsed with information about if the task has failed
-# and if anything changed.
-
-USERNAME=$1
-PASSWORD=$2
-if [ -z "$PASSWORD" ]; then
- # Avoid having the password always come in via CLI (which makes
- # it show up in things like ara)
- PASSWORD="$OS_BOOTSTRAP_PASSWORD"
-fi
-PROJECT=$3
-ROLE=$4
-if [ $# -ge 8 ]; then
- # ignored ADMIN_URL compat mode
- # ADMIN_URL=$5
- INTERNAL_URL=$6
- PUBLIC_URL=$7
- REGION=$8
-else
- # no ADMIN_URL modern mode
- INTERNAL_URL=$5
- PUBLIC_URL=$6
- REGION=$7
-fi
-
-function fail_json {
- echo '{"failed": true, "msg": "'$1'", "changed": true}'
- exit 1
-}
-
-function exit_json {
- echo '{"failed": false, "changed": '"${changed}"'}'
-}
-
-changed="false"
-# NOTE(mgoddard): pipe through cat -v to remove unprintable control characters
-# which prevent JSON decoding.
-# NOTE(yoctozepto): also apply sed to escape double quotation marks
-# and backslashes
-keystone_bootstrap=$(keystone-manage bootstrap --bootstrap-username "${USERNAME}" --bootstrap-password "${PASSWORD}" --bootstrap-project-name "${PROJECT}" --bootstrap-role-name "${ROLE}" --bootstrap-internal-url "${INTERNAL_URL}" --bootstrap-public-url "${PUBLIC_URL}" --bootstrap-service-name "keystone" --bootstrap-region-id "${REGION}" 2>&1 | cat -v | sed 's/\\/\\\\/g' | sed 's/"/\\"/g')
-if [[ $? != 0 ]]; then
- fail_json "${keystone_bootstrap}"
-fi
-
-changed=$(echo "${keystone_bootstrap}" | awk '
- /Domain default already exists, skipping creation./ ||
- /Project '"${PROJECT}"' already exists, skipping creation./ ||
- /User '"${USERNAME}"' already exists, skipping creation./ ||
- /Role '"${ROLE}"' exists, skipping creation./ ||
- /User '"${USERNAME}"' already has '"${ROLE}"' on '"${PROJECT}"'./ ||
- /Region '"${REGION}"' exists, skipping creation./ ||
- /Skipping internal endpoint as already created/ ||
- /Skipping public endpoint as already created/ {count++}
- END {
- if (count == 9) changed="false"; else changed="true"
- print changed
- }'
-)
-
-exit_json
diff --git a/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2
index 915bef108..d5f6cfe92 100644
--- a/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2
+++ b/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2
@@ -16,6 +16,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}"
{{ macros.kolla_patch_sources() }}
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+
{% block neutron_ovn_agent_footer %}{% endblock %}
{% block footer %}{% endblock %}
{{ macros.kolla_cleanup_repos() }}
diff --git a/kolla/docker/neutron/neutron-ovn-agent/extend_start.sh b/kolla/docker/neutron/neutron-ovn-agent/extend_start.sh
new file mode 100644
index 000000000..7a45654d6
--- /dev/null
+++ b/kolla/docker/neutron/neutron-ovn-agent/extend_start.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+if [[ "${KOLLA_NEUTRON_WRAPPERS:-false}" == "true" ]]; then
+ echo "Copying neutron agent wrappers to /usr/local/bin"
+ sudo -E /usr/local/lib/neutron-wrappers/copy-wrappers
+else
+ echo "Removing neutron agent wrappers from /usr/local/bin"
+ sudo -E /usr/local/lib/neutron-wrappers/delete-wrappers
+fi
+
+. /usr/local/bin/kolla_neutron_extend_start
diff --git a/releasenotes/notes/cinder-volume-pip-packages-6aca004d613f376f.yaml b/releasenotes/notes/cinder-volume-pip-packages-6aca004d613f376f.yaml
new file mode 100644
index 000000000..e51838a7f
--- /dev/null
+++ b/releasenotes/notes/cinder-volume-pip-packages-6aca004d613f376f.yaml
@@ -0,0 +1,9 @@
+---
+features:
+ - |
+ The ``cinder-volume`` image now has its own customizable pip package
+ list, ``cinder_volume_pip_packages`` (empty by default). Vendor SDKs
+ that only ``cinder-volume`` needs, such as ``py-pure-client`` for the
+ Everpure FlashArray driver, can be added with
+ ``cinder_volume_pip_packages_append`` in a template override without
+ rebuilding ``cinder-base``.
diff --git a/releasenotes/notes/drop-keystone-container-62c69beab418889b.yaml b/releasenotes/notes/drop-keystone-container-62c69beab418889b.yaml
new file mode 100644
index 000000000..f7244fef4
--- /dev/null
+++ b/releasenotes/notes/drop-keystone-container-62c69beab418889b.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+ - |
+ ``keystone`` container image has been removed, given completed migration
+ to ``keystone-api`` on Kolla-Ansible side.
diff --git a/releasenotes/notes/neutron-ovn-agent-wrappers-b937a71cd298f21a.yaml b/releasenotes/notes/neutron-ovn-agent-wrappers-b937a71cd298f21a.yaml
new file mode 100644
index 000000000..128197272
--- /dev/null
+++ b/releasenotes/notes/neutron-ovn-agent-wrappers-b937a71cd298f21a.yaml
@@ -0,0 +1,7 @@
+---
+features:
+ - |
+ The ``neutron-ovn-agent`` image now supports running the HAProxy
+ processes of its metadata extension in separate containers, as the
+ ``neutron-metadata-agent`` image already does. This is enabled by setting
+ ``KOLLA_NEUTRON_WRAPPERS=true`` in the container environment.
diff --git a/releasenotes/source/2025.1.rst b/releasenotes/source/2025.1.rst
index 3add0e53a..7a4c586d3 100644
--- a/releasenotes/source/2025.1.rst
+++ b/releasenotes/source/2025.1.rst
@@ -3,4 +3,4 @@
===========================
.. release-notes::
- :branch: stable/2025.1
+ :branch: unmaintained/2025.1
diff --git a/roles/kolla-build-deps/tasks/main.yml b/roles/kolla-build-deps/tasks/main.yml
index 399aa4380..8d10b4301 100644
--- a/roles/kolla-build-deps/tasks/main.yml
+++ b/roles/kolla-build-deps/tasks/main.yml
@@ -42,14 +42,14 @@
- name: Configure container engine
ansible.builtin.include_role:
- name: "{{ container_engine }}"
+ name: "openstack.kolla.{{ container_engine }}"
- name: Install podman/docker_sdk in a venv
vars:
virtualenv: "{{ virtualenv_path }}"
docker_sdk_virtualenv_owner: "{{ lookup('env', 'USER') }}"
ansible.builtin.include_role:
- name: "{{ container_engine }}_sdk"
+ name: "openstack.kolla.{{ container_engine }}_sdk"
- name: Install docker-buildx-plugin
ansible.builtin.package: