2026.1: Sync latest stackhpc/2025.1 - #2457
Conversation
Previously there was a hostname-related OVN bug that required a reboot in the AIO CI instances to mitigate. It's been fixed for years[1] so this change reverts the workaround. It'll speed up CI and it's better to know if we regress. [1] https://bugs.launchpad.net/kolla-ansible/+bug/2080552
The previous Rocky 9.8 host image came with broken python 3.9 which caused issues starting deployments (`ASN1: NOT_ENOUGH_DATA`). An updated python package was released[0] and the host image has been rebuilt with this. OFED kernel module has been built for the latest kernel this image uses (`5.14.0.687.26.1.el9.8`). 0: https://errata.rockylinux.org/RLSA-2026:39798
Added Valkey migration script. This checks how `kolla_enable_redis`` is evaluated. If it's true, the script calls K-A's Valkey migration. Otherwise, it's a NOOP.
Remove hostname fix reboot
The GitHub app using it was turned off last summer [1]. [1] https://github.com/apps/product-auto-label
This switches to an IPA builder fork which is required for centos-10 stream IPA images, which are required (currently) to provide a version of qemu-img that can handle 4k sectors from Dell Perc RAID controllers which don't support other block sizes. Anyone not affected can carry on using stream-9 images until Rocky ones exist. We can drop this patch if we can backport https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/995589
Update kolla_base_distro_version_default_map to select Rocky 9 or Rocky 10 images for each host.
Add coderabbit review configuration
Also ensure that the playbook is safe to run on Ubuntu.
Add hook to reset-bls-entries after host package update
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughUpdates repository review automation, host maintenance, deployment workflow, IPA and Kolla versions, Rocky image and repository pins, release notes, and upgrade prerequisite handling. ChangesKayobe maintenance updates
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant CIJob
participant upgrade_prerequisites
participant Kayobe
participant jq
CIJob->>upgrade_prerequisites: execute upgrade prerequisites
upgrade_prerequisites->>Kayobe: retrieve kolla_enable_redis configuration
Kayobe-->>upgrade_prerequisites: return configuration dump
upgrade_prerequisites->>jq: filter localhost Redis setting
jq-->>upgrade_prerequisites: return Redis state
upgrade_prerequisites->>Kayobe: run migrate-valkey when Redis is enabled
Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: aef53f1c-0500-4231-bd67-d2ad5e77fb5b
📒 Files selected for processing (15)
.coderabbit.yaml.github/auto-label.yaml.github/workflows/stackhpc-all-in-one.ymletc/kayobe/ansible/maintenance/reset-bls-entries.ymletc/kayobe/hooks/overcloud-host-package-update/post.d/20-reset-bls-entriesetc/kayobe/hooks/overcloud-host-package-update/post.d/releasenotes/notes/reset-bls-entries-20375af82dfd3517.yamletc/kayobe/ipa.ymletc/kayobe/kolla/globals.ymletc/kayobe/ofed.ymletc/kayobe/pulp-host-image-versions.ymletc/kayobe/pulp-repo-versions.ymletc/kayobe/stackhpc.ymlreleasenotes/notes/r9-r10-kolla-base-distro-75078c4fbae4f785.yamlreleasenotes/notes/rocky-98-python-update-ca5e831d408a67ba.yamltools/upgrade-prerequisites.sh
💤 Files with no reviewable changes (2)
- .github/auto-label.yaml
- .github/workflows/stackhpc-all-in-one.yml
📜 Review details
⏰ Context from checks skipped due to timeout. (2)
- GitHub Check: Ansible 2.20 lint with Python 3.12
- GitHub Check: Ansible 2.19 lint with Python 3.12
🧰 Additional context used
🪛 Checkov (3.3.8)
etc/kayobe/ansible/maintenance/reset-bls-entries.yml
[low] 13-44: Ensure block is handling task errors properly
(CKV2_ANSIBLE_3)
🔇 Additional comments (13)
.coderabbit.yaml (1)
1-67: LGTM!etc/kayobe/ansible/maintenance/reset-bls-entries.yml (1)
13-15: 🩺 Stability & AvailabilityVerify that fact gathering is guaranteed for this hook.
At Line 14,
ansible_facts.os_familyis evaluated before the block can be skipped, but this play does not explicitly setgather_facts: true. If the hook runner disables fact gathering or supplies incomplete facts, the hook will fail instead of safely doing nothing on non-RedHat hosts. Please confirm that the hook contract always gathers complete facts, or make that dependency explicit.etc/kayobe/hooks/overcloud-host-package-update/post.d/20-reset-bls-entries (1)
1-1: LGTM!etc/kayobe/hooks/overcloud-host-package-update/post.d/releasenotes/notes/reset-bls-entries-20375af82dfd3517.yaml (1)
1-5: LGTM!etc/kayobe/ipa.yml (1)
25-32: LGTM!etc/kayobe/kolla/globals.yml (1)
20-20: LGTM!etc/kayobe/stackhpc.yml (1)
233-233: LGTM!etc/kayobe/ofed.yml (1)
22-22: LGTM!etc/kayobe/pulp-host-image-versions.yml (1)
4-5: LGTM!etc/kayobe/pulp-repo-versions.yml (1)
39-40: LGTM!Also applies to: 161-175
releasenotes/notes/r9-r10-kolla-base-distro-75078c4fbae4f785.yaml (1)
1-5: LGTM!releasenotes/notes/rocky-98-python-update-ca5e831d408a67ba.yaml (1)
1-10: LGTM!tools/upgrade-prerequisites.sh (1)
1-8: LGTM!Also applies to: 12-27, 38-39
| # NOTE(upgrade): This script is unique to each release. It may not be required | ||
| # for some releases. | ||
|
|
||
| set -ex |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set +e
false | jq .
without_pipefail=$?
set -o pipefail
false | jq .
with_pipefail=$?
printf 'without pipefail=%s, with pipefail=%s\n' \
"$without_pipefail" "$with_pipefail"
test "$without_pipefail" -eq 0
test "$with_pipefail" -ne 0Repository: stackhpc/stackhpc-kayobe-config
Length of output: 205
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
file=tools/upgrade-prerequisites.sh
wc -l "$file"
sed -n '1,120p' "$file" | cat -nRepository: stackhpc/stackhpc-kayobe-config
Length of output: 1513
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
sed -n '1,120p' tools/upgrade-prerequisites.sh | cat -nRepository: stackhpc/stackhpc-kayobe-config
Length of output: 1479
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg -n "configuration dump --var-name|jq \.localhost|enable_redis|enable_valkey" -S .Repository: stackhpc/stackhpc-kayobe-config
Length of output: 1348
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg -n "configuration dump --var-name|jq \\.localhost|enable_redis|enable_valkey" -S .Repository: stackhpc/stackhpc-kayobe-config
Length of output: 1348
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
python3 - <<'PY'
import json
samples = [
{"localhost": True},
{"localhost": "yes"},
{"localhost": "true"},
]
for s in samples:
print("input:", json.dumps(s))
import subprocess, textwrap, os, tempfile
PYRepository: stackhpc/stackhpc-kayobe-config
Length of output: 253
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg -n "configuration dump|kolla_enable_redis|kolla_enable_valkey|jq -r|jq \." -S tools etc docRepository: stackhpc/stackhpc-kayobe-config
Length of output: 1457
Enable pipefail here. set -e will not catch a failed kayobe configuration dump in the pipeline, so the migration can be skipped silently.
| enable_redis=$(kayobe configuration dump --var-name kolla_enable_redis -l localhost | jq .localhost) | ||
| if [[ $enable_redis == "true" || $enable_redis == "yes" ]]; then |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
json='{"localhost":"yes"}'
quoted=$(printf '%s\n' "$json" | jq .localhost)
raw=$(printf '%s\n' "$json" | jq -r .localhost)
printf 'quoted=%s, raw=%s\n' "$quoted" "$raw"
[[ $quoted == '"yes"' ]]
[[ $raw == yes ]]Repository: stackhpc/stackhpc-kayobe-config
Length of output: 191
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
sed -n '1,80p' tools/upgrade-prerequisites.shRepository: stackhpc/stackhpc-kayobe-config
Length of output: 1206
Read the Redis flag as raw output. jq .localhost returns "yes" for the usual string value, so the shell comparison never matches and the Valkey migration is skipped. Use jq -r '.localhost' here.
No description provided.