Skip to content

Add proposal to do bulk set of BIOS configuration#173

Merged
metal3-io-bot merged 1 commit intometal3-io:masterfrom
bfournie:bulk-set-bios
Aug 19, 2021
Merged

Add proposal to do bulk set of BIOS configuration#173
metal3-io-bot merged 1 commit intometal3-io:masterfrom
bfournie:bulk-set-bios

Conversation

@bfournie
Copy link
Copy Markdown
Member

Draft of a proposal to do bulk set of BIOS Configuration across
similar vendors.

@metal3-io-bot
Copy link
Copy Markdown
Contributor

Hi @bfournie. Thanks for your PR.

I'm waiting for a metal3-io member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@metal3-io-bot metal3-io-bot added needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Mar 30, 2021
@dhellmann
Copy link
Copy Markdown
Member

/ok-to-test

@metal3-io-bot metal3-io-bot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Mar 31, 2021
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
@bfournie bfournie force-pushed the bulk-set-bios branch 2 times, most recently from 56dac2c to 27358d0 Compare March 31, 2021 15:39
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
@bfournie
Copy link
Copy Markdown
Member Author

Updated to reflect changes made to Ironic BIOS Registry API (see https://review.opendev.org/c/openstack/ironic-specs/+/774681). Instead of a separate endpoint a subset of the particular registry information is now included with each BIOS Setting in the v1/nodes/{node_ident}/bios?detail=True API. This reduces complexity and size of the BIOS data. Also added text regarding validations of the BIOS settings using the registry before adding to clean steps.

In addition made changes regarding sequencing of clean-steps from the recent discussion regarding the granular approach to BIOS config.

Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
@bfournie bfournie force-pushed the bulk-set-bios branch 5 times, most recently from 99db3fb to d77c8bb Compare May 6, 2021 13:09
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request May 31, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request May 31, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jun 1, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
@furkatgofurov7
Copy link
Copy Markdown
Member

Hi!
As agreed during the community meeting, let's have a lazy consensus of a week from today and if there are no further objections/comments on the proposal, we can go ahead with merging it next week.

Copy link
Copy Markdown
Member

@zaneb zaneb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm very happy with the simplicity of this approach. I did start a little bikeshedding ;)
/approve

Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
@metal3-io-bot metal3-io-bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 3, 2021
Comment thread design/baremetal-operator/bulk-set-bios-config.md
@metal3-io-bot
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: andfasano, zaneb

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jul 2, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jul 2, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
@dhellmann
Copy link
Copy Markdown
Member

/uncc dhellmann

@bfournie bfournie force-pushed the bulk-set-bios branch 2 times, most recently from b29d7c6 to d3b9914 Compare July 4, 2021 20:56
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jul 7, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
whenever the node moves to `manageable` or `cleaning`, or when the settings
are updated. The baremetal-operator will manage the data as follows:

- The node first transitions to manageable during the `Registration` state, so
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo: Registering

example, integer types will checked against minimum and maximum parameters and
enumeration types will be compared against allowable values. The validation
webhook can be leveraged here to log a message regarding the failure; the
invalid BIOS Setting will not be added to clean-steps.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't be better to follow the current approach? If a validation check fails then buildManualCleaningSteps() could return a proper error, thus triggering the usual retry mechanism and in this case the host status ErrorType will end up in PreparationError. This will also give the opportunity to an (external) user to fix the invalid setting before moving on.
Otherwise we'd risk to update only a portion of the vendorSettings (the desired end state), and this could lead potentially to undesired effects (so essentially the strategy suggested here is all or none)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this paragraph might be based on a misunderstanding of what a validating webhook does.

The webhook sits in the API pipeline between the input and the data store, so it allow us to reject an invalid update before it is stored in the resource. Ideally we should do this so that the user knows immediately if they submit an invalid change.

Without a webhook we end up with invalid config stored in the object, and then the controller has to decide what to do with it given that it's too late to reject it. Since we'd have to put the Host in an error state anyway, and retry after the user has fixed it, I agree there'd probably not be much point in doing a partial application.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to state that validity checks will be done when building the manual clean steps and will return a failure for any failures, preventing partial configurations.

Also indicated that a validation webhook will be done as a follow-on, to catch validation errors before storing the data in a resource.

bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jul 9, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jul 9, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jul 9, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
Comment thread design/baremetal-operator/bulk-set-bios-config.md Outdated
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jul 13, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
Proposal to get and set BIOS configuration and do a bulk
set across similar vendors.
@andfasano
Copy link
Copy Markdown
Member

Thanks @bfournie for the proposal, the current state looks fine to me.
/lgtm
/hold In case @zaneb would want to do a final pass

@metal3-io-bot metal3-io-bot added do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. lgtm Indicates that a PR is ready to be merged. labels Jul 15, 2021
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Jul 21, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Aug 3, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
bfournie added a commit to bfournie/baremetal-operator that referenced this pull request Aug 19, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
@zaneb
Copy link
Copy Markdown
Member

zaneb commented Aug 19, 2021

/lgtm

@andfasano
Copy link
Copy Markdown
Member

/hold cancel

@metal3-io-bot metal3-io-bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Aug 19, 2021
@metal3-io-bot metal3-io-bot merged commit c0a6f38 into metal3-io:master Aug 19, 2021
@bfournie bfournie deleted the bulk-set-bios branch August 19, 2021 19:05
levsha pushed a commit to levsha/baremetal-operator that referenced this pull request Sep 1, 2021
Add a new CRD for the FirmwareSettings for BIOS configuration as described
in the spec - metal3-io/metal3-docs#173. A new
CRD is necessary since its not practical to include the number of settings
in BareMetalHost.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants