diff options
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: |
