✨ Add multi-architecture IPA support and configurable probes#517
✨ Add multi-architecture IPA support and configurable probes#517s3rj1k wants to merge 1 commit intometal3-io:mainfrom
Conversation
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
198d5ee to
a14095e
Compare
|
Thank you for starting this! Some comments inline. |
Signed-off-by: s3rj1k <evasive.gyron@gmail.com>
70c49f2 to
5d764d8
Compare
|
I think that |
Lets handle that in dedicated PR, I don't want to mix and match everything in single place, yes there would be a need to update DHCP configs |
a277bc6 to
7595cac
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds support for multi-architecture IPA (Ironic Python Agent) deployments and makes httpd container probes configurable. It allows users to specify custom kernel and initramfs URLs for different CPU architectures (x86_64 and aarch64) via spec.overrides.agentImages, which are rendered as DEPLOY_KERNEL_BY_ARCH and DEPLOY_RAMDISK_BY_ARCH environment variables for consumption by Ironic. Additionally, httpd container liveness and readiness probes can now be explicitly configured, with a behavior change where default probes are disabled when custom agent images are specified.
Changes:
- Added new API types:
CPUArchitecture,AgentImages, and probe override fields (HttpdLivenessProbe,HttpdReadinessProbe) inOverrides - Implemented validation for agent images including uniqueness checks for architectures
- Updated container building logic to generate multi-arch environment variables and handle configurable probes
- Added comprehensive test coverage for validation and environment variable generation
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| api/v1alpha1/ironic_types.go | Adds CPUArchitecture enum, AgentImages struct, and probe override fields to Overrides |
| api/v1alpha1/zz_generated.deepcopy.go | Auto-generated DeepCopy methods for new types |
| config/crd/bases/ironic.metal3.io_ironics.yaml | CRD schema updates for new fields with validation rules |
| docs/api.md | API documentation for new fields and types |
| pkg/ironic/validation.go | Validates agent images for required fields and architecture uniqueness |
| pkg/ironic/validation_test.go | Test cases for agent image validation scenarios |
| pkg/ironic/containers.go | Environment variable generation for multi-arch images and probe configuration logic |
| pkg/ironic/containers_test.go | Tests for environment variable generation with various architecture combinations |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
efb0305 to
3563a00
Compare
|
/cc @Rozzii |
elfosardo
left a comment
There was a problem hiding this comment.
thanks, I was finally able to have a look at this!
It looks good in general, I've added some comments but nothing major.
I was wondering if we could maybe add some examples of how to configure the new probe settings.
Also maybe add loggging if an image download fails for a specific architecture, so the user knows which one is missing?
But download happens elsewhere, not in the controller itself |
2d04842 to
6c6193f
Compare
right, scratch that |
|
/lgtm |
|
New changes are detected. LGTM label has been removed. |
8edd360 to
53a2813
Compare
This change allows specifying IPA (Ironic Python Agent) image locations per CPU architecture through the new
spec.overrides.agentImagesfield. Users can define kernel and initramfs URLs for each supported architecture (x86_64, aarch64), which the operator renders asDEPLOY_KERNEL_BY_ARCHandDEPLOY_RAMDISK_BY_ARCHenvironment variables, and those environment variables are consumed by Ironic-image configuration script.Additionally, the httpd container liveness and readiness probes are now configurable via
spec.overrides.httpdLivenessProbeandspec.overrides.httpdReadinessProbe. WhenagentImagesis specified, default probes are disabled and must be configured explicitly if needed.Implements partially #355