fix: split BiosConfigurationSetter into map and file interfaces - #456
Merged
mergify[bot] merged 1 commit intoAug 18, 2026
Merged
Conversation
Requiring both SetBiosConfiguration and SetBiosConfigurationFromFile meant redfish, dell/idrac, and lenovo never satisfied the interface, since none of them implement the file-import path (that's a vendor-specific whole-config-blob import only Supermicro supports). Client.SetBiosConfiguration() failed with "no BiosConfigurationSetter implementations found" on those providers even though SetBiosConfiguration itself works fine. Split into BiosConfigurationSetter (map only) and a new BiosConfigurationFileSetter (file only), dispatched independently. Also add the var _ Interface = (*Conn)(nil) compile-time assertions this codebase already uses elsewhere (providers/lenovo/*.go) but never applied to BIOS config, so this can't silently regress again.
2 tasks
joelrebel
approved these changes
Aug 14, 2026
joelrebel
left a comment
Member
There was a problem hiding this comment.
Thanks, splitting this out is ideal
Contributor
Merge Queue Status
This pull request spent 12 seconds in the queue, including 1 second running CI. Required conditions to merge
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR implement/change/remove?
BiosConfigurationSettercurrently requires implementing bothSetBiosConfigurationandSetBiosConfigurationFromFile.providers/redfish,providers/dell/idrac, andproviders/lenovoonly implementSetBiosConfiguration- the file-import path is a Dell/Supermicro-SUM-specific whole-config-blob import with no generic Redfish equivalent - so none of them satisfy the interface today.Client.SetBiosConfiguration()fails withno BiosConfigurationSetter implementations foundon those providers even though the underlying call works fine.Confirmed live against a real Supermicro AS-1114S-WN10RT-EU BMC: on current
main,SetBiosConfigurationfails withnot a BiosConfigurationSetter implementation: *redfish.Conn(and*lenovo.Conn) before any network request is even made; after this fix, dispatch correctly selects those providers and the request goes out.Splits
BiosConfigurationSetter(map only) from a newBiosConfigurationFileSetter(file only), dispatched independently.providers/supermicro, which implements both, is unaffected.Also adds
var _ Interface = (*Conn)(nil)compile-time assertions (the pattern already used inproviders/lenovo'sbmc.go/virtual_media.go/sel.go/etc., but never applied to the BIOS interfaces) toredfish,dell/idrac,lenovo, andsupermicro, so this exact class of bug can't regress silently again - applying the same assertions to unmodifiedmainfails to compile in exactly the three affected providers.Checklist
The HW vendor this change applies to (if applicable)
Any BMC reached via the generic Redfish, Dell iDRAC, or Lenovo XClarity providers. Confirmed live against Supermicro.
The HW model number, product name this change applies to (if applicable)
Confirmed live against a Supermicro AS-1114S-WN10RT-EU.
The BMC firmware and/or BIOS versions that this change applies to (if applicable)
N/A - this is a Go interface-satisfaction bug, not firmware-dependent.
What version of tooling - vendor specific or opensource does this change depend on (if applicable)
None.
Description for changelog/release notes