-
Notifications
You must be signed in to change notification settings - Fork 134
propose additional node specific pre-provisioning kernel args #552
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
[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.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
5b3ba4c
to
37d08d8
Compare
Something that might be interesting to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! I have just a few nits/typos and one suggestion to clarify how the strings are concatenated (with spaces?)
37d08d8
to
86fa735
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
`preProvisionKernelArgs` | ||
2. Extend the generic `Provisioner` interface to support the new optional field | ||
3. Implement support for the `preProvisionKernelArgs` in the Ironic provisioner | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You also need to extend the PreprovisioningImage object to accept these params.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can keep them separate, I didn't intend to make this new spec to be applied for the "PreprovisioningImage" I thought that already has a spec for this purpose.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That will create a wild inconsistency that will cause users file bugs for me with "preprovisioningExtraKernelParams
does not work" :( Because they'll expect OpenShift's version of Metal3 to work the same way as upstream, and without PPI support it won't.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Btw it's fair if you ask me to follow-up with PPI support myself if you don't have cycles for that. I just want it to be in the design.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have already looked into it, my original impression was that the user is already able to set the Kernel Args via the preprovisioningImage CR's spec but now I understand that it is not possible as on that CR the kernel args are only part of the status and not the spec. I have also checked https://github.com/openshift/image-customization-controller so I am more familiar with the use-case of the preprovisioningImage CR.
Based on what I know now It makes sense to include preprovisioningImage in the proposal.
86fa735
to
adaaa1c
Compare
New changes are detected. LGTM label has been removed. |
WIP implementation: metal3-io/baremetal-operator#2576 at the moment without tests, but functionally this already worked . EDIT: status and the preprovImage CR support is missing ATM |
adaaa1c
to
32dba0a
Compare
1da861b
to
f09084e
Compare
This commit: - Introduces the proposal for BMH support for additional node specific kernel command line arguments for non dynamically built pre-provisioning images. The motivation behind the commit can be found in the proposal. Signed-off-by: Adam Rozman <[email protected]>
f09084e
to
2b1740b
Compare
5. Introducing a `preprovisioningExtraKernelParams` related status field that | ||
would display the last applied `preprovisioningExtraKernelParams` value. | ||
Let's call this field `status.lastAppliedPreprovisioningExtraKernelParams` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps something shorter would be easier but I don't have strong opinion on this
Example, status.lastAppliedKernelParams
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have been thinking about this, and our offline discussions and now I am on the opinion that I should separate this status topic to a different proposal/discussion, because right now we don't really provide status for applying provisioning or preprvisioning data to Ironic API so we might need a more comprehensive approach to give feedback about what, user/network/meta data and what preprovisioning data was applied. We might also need a status flag to show if the previously mentioned data references/values have changed since the last LCM operation (inspect,provision,deprovision,clean, service).
If I would leave the status topic out from the proposal I think it would be still aligned with our current feedback mechanism (or the lack of it) and then we can improve our feedback mechanism with the followup proposal.
4. Combine the values of the `preprovisioningExtraKernelParams` and the | ||
`preprovisioningImage`'s `status.extraKernelParams` field if a | ||
`preprovisioningImage` is refferences by the BMH and teh `status.extraKernelParams` | ||
is not empty |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it a good idea to construct a value of a field from two different sources? I imagine things might go wrong, for example how do we handle a case when prepovisioningImage object referenced by BMH doesn't exist for some reason?
Does this mean that a node might have different kernel parameters compared to what is asked via .spec.preprovisioningExtraKernelParams
, in case preprovisioningImage status.extraKernelParams
has something non-empty? Should not we have a single source of truth for defining the parameters and I guess the status sub-resource was never meant for defining the parameters but more for summarizing the current state right? Perhaps whoever writes into status.extraKernelParams
should only rely on BMH spec and not something else? Or is this a transitional state that we eventually target to move to a single source?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dtantsur thoughts ?
3. Implement support for the `preprovisioningExtraKernelParams` in the Ironic provisioner | ||
4. Combine the values of the `preprovisioningExtraKernelParams` and the | ||
`preprovisioningImage`'s `status.extraKernelParams` field if a | ||
`preprovisioningImage` is refferences by the BMH and teh `status.extraKernelParams` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
`preprovisioningImage` is refferences by the BMH and teh `status.extraKernelParams` | |
`preprovisioningImage` is referenced by the BMH and the `status.extraKernelParams` |
bmc: | ||
address: idrac://192.168.122.1:6230/ | ||
credentialsName: bm0-bmc-secret | ||
preprovisioningExtraKernelParams: "--timeout 60000 systemd.journald.forward_to_console=yes ipa-debug=1" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
preprovisioningExtraKernelParams: "--timeout 60000 systemd.journald.forward_to_console=yes ipa-debug=1" | |
preprovisioningExtraKernelParams: "--timeout 60000 systemd.journald.forward_to_console=yes ipa-debug=1" |
### Implementation Details/Notes/Constraints | ||
|
||
The `preprovisioningExtraKernelParams` field would be located directly under `spec` | ||
section. The format of the new field would be a list/array of individual |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been changes elsewhere to be a string
section. The format of the new field would be a list/array of individual | |
section. The format of the new field would be a string. | |
The new field would be optional and it would be considered |
This commit:
The motivation behind the commit can be found in the proposal.