Switch to upstream blazar - #2475
Conversation
📝 WalkthroughSwitches Blazar container builds from the StackHPC WalkthroughBlazar now uses upstream container images dated ChangesBlazar upstream images
Estimated code review effort: 1 (Trivial) | ~3 minutes 🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 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: 77952196-b336-4081-adc8-724dd1da6906
📒 Files selected for processing (3)
etc/kayobe/kolla-image-tags.ymletc/kayobe/kolla.ymlreleasenotes/notes/build-blazar-from-upstream-fd5fc48f9bd677e0.yaml
💤 Files with no reviewable changes (1)
- etc/kayobe/kolla.yml
📜 Review details
⏰ Context from checks skipped due to timeout. (6)
- GitHub Check: stackhpc/check
- GitHub Check: Tox docs with Python 3.12
- GitHub Check: Ansible 2.18 lint with Python 3.12
- GitHub Check: Tox pep8 with Python 3.12
- GitHub Check: Tox releasenotes with Python 3.12
- GitHub Check: Ansible 2.17 lint with Python 3.10
🔇 Additional comments (1)
etc/kayobe/kolla-image-tags.yml (1)
10-13: 🗄️ Data Integrity & IntegrationConfirm the three Blazar image tags before merge.
The registry requires authentication. Confirm that each tag exists in
stackhpc-devforblazar-apiandblazar-manager, and that each image contains the intended upstream Blazar source.
| Rebuilt Blazar containers using the latest upstream Blazar source code, | ||
| instead of the StackHPC fork. The StackHPC fork was based on an older | ||
| version of Blazar, but contained additional features relating to coral | ||
| credits, which are now no longer in use. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use precise release-note wording.
The image tags use upstream 2025.1, not an unspecified “latest” release. State upstream 2025.1. Also remove the double space before contained and use Coral Credits consistently.
| deprecations: | ||
| - | | ||
| The Coral Credits feature of Blazar has been removed. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n -i -C 4 'coral[ _-]?credits|coral' \
etc releasenotes tools .githubRepository: stackhpc/stackhpc-kayobe-config
Length of output: 1165
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- repository files ---'
git ls-files | sed -n '1,240p'
printf '%s\n' '--- all Coral-related references ---'
rg -n -i -C 5 'coral[ _-]?credits|coral' . || true
printf '%s\n' '--- Blazar-related references ---'
rg -n -i -C 3 'blazar' . || true
printf '%s\n' '--- change summary ---'
git diff --stat
git diff -- releasenotes/notes/build-blazar-from-upstream-fd5fc48f9bd677e0.yamlRepository: stackhpc/stackhpc-kayobe-config
Length of output: 22887
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- current commit change ---'
git show --stat --oneline --decorate HEAD
git diff --no-ext-diff --unified=30 HEAD^ HEAD -- \
releasenotes/notes/build-blazar-from-upstream-fd5fc48f9bd677e0.yaml \
etc/kayobe/kolla.yml \
etc/kayobe/kolla-image-tags.yml \
.github
printf '%s\n' '--- Blazar image and source configuration ---'
rg -n -i -C 8 'blazar|kolla.*(source|namespace|tag)|source.*(blazar|kolla)' \
etc .github releasenotes
printf '%s\n' '--- possible migration and persistence references ---'
rg -n -i -C 5 'migration|migrate|database|keystone|reservation|flavor' \
etc/kayobe releasenotes tools | rg -i -C 3 'blazar|reservation|coral|database|migration' || trueRepository: stackhpc/stackhpc-kayobe-config
Length of output: 50388
🌐 Web query:
OpenStack Blazar Coral Credits StackHPC fork upstream
💡 Result:
Coral Credits is an independent, open-source resource management service developed by StackHPC, designed to facilitate the sharing of cloud resources through credit allocations [1][2][3]. It is not a fork of OpenStack Blazar [1][2]. Instead, it is a standalone service that integrates with Blazar by utilizing Blazar's built-in, upstream support for an external enforcement plugin [3][4]. Specifically, Blazar includes an ExternalServiceFilter that allows it to delegate reservation decisions to an external service [3][4]. Coral Credits implements the necessary API required by this filter to check and commit reservations against project-specific credit allocations [3][4]. Consequently, there is no need for a "fork" of Blazar; users simply configure the standard, upstream Blazar service to communicate with the Coral Credits endpoint [1][3]. Documentation for setting up this integration is maintained by the StackHPC and Azimuth projects, outlining how to configure Blazar's [enforcement] section to point to the Coral Credits API endpoints [1][3][4].
Citations:
- 1: https://github.com/stackhpc/coral-credits/blob/main/README.md
- 2: https://github.com/stackhpc/coral-credits
- 3: https://azimuth-config.readthedocs.io/en/latest/configuration/04-target-cloud/01-openstack-blazar/
- 4: stfc/cloud-azimuth-config@e222d9a
🌐 Web query:
site:docs.openstack.org blazar ExternalServiceFilter enforcement configuration
💡 Result:
The ExternalServiceFilter in Blazar is a usage enforcement mechanism that delegates decision-making for lease operations (lease_create, lease_update, and on_end) to a third-party HTTP service [1][2]. Configuration is performed within the blazar.conf file under the [enforcement] section [1][3]. Enabling the Filter: To enable the filter, you must add it to the enabled_filters option within the [enforcement] group in blazar.conf [1][3]. Required Configuration Options: The following configuration options under the [enforcement] group are used to manage the ExternalServiceFilter [3]: - enabled_filters: Include ExternalServiceFilter to activate it. - external_service_base_endpoint: The base URL for the external service. - external_service_check_create_endpoint: The endpoint for POST /check-create requests. - external_service_check_update_endpoint: The endpoint for POST /check-update requests. - external_service_on_end_endpoint: The endpoint for POST /on-end requests. - external_service_token: A static token sent by Blazar in the X-Auth-Token header to the external service for authentication [1][2]. External Service Requirements: The external service must be configured to handle HTTP POST requests at the specified endpoints [1][2]. - Authentication: The service should validate the X-Auth-Token header using the static token configured in blazar.conf [1][2]. - Responses: The service should return a 204 No Content status code if the request is permitted, or a 403 Forbidden status code if the request is rejected [1][2]. - Error Handling: If returning 403 Forbidden, the service may provide a JSON response body containing a message field explaining the rejection [1][2]. The external service receives a JSON payload containing the request context (user_id, project_id, etc.) and details regarding the current lease or the lease that has just ended [1][2].
Citations:
- 1: https://docs.openstack.org/blazar/latest/admin/usage-enforcement.html
- 2: https://docs.openstack.org/blazar/2026.1/admin/usage-enforcement.html
- 3: https://docs.openstack.org/blazar/2026.1/configuration/blazar-conf.html
Do not claim that Coral Credits has been removed.
Coral Credits integrates with upstream Blazar through ExternalServiceFilter and [enforcement] configuration. Removing the blazar-base override only removes the StackHPC fork. It does not remove Coral Credits configuration, consumers, or persisted allocations. State that the StackHPC fork-specific customisations are no longer included, or provide the required migration steps.
Switches from stackhpc/master in our Blazar fork to upstream 2025.1.
Our "master" fork was created around 2024.2, but was never updated since then.
It had a few customisations for coral credits which are now no longer in use, so we can go back to tracking upstream.