Add a new Ironic field representing node health to Gophercloud#3619
Merged
mandre merged 1 commit intogophercloud:mainfrom Feb 12, 2026
Merged
Add a new Ironic field representing node health to Gophercloud#3619mandre merged 1 commit intogophercloud:mainfrom
mandre merged 1 commit intogophercloud:mainfrom
Conversation
dtantsur
approved these changes
Jan 29, 2026
mandre
reviewed
Jan 29, 2026
ba6112f to
ec33dff
Compare
dtantsur
reviewed
Jan 29, 2026
Add support for the node health field which reports hardware health status from the BMC. Requires Ironic API microversion 1.109. Partially implements metal3-io#2888 Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me> Assisted-by: Claude-4.5-opus-high Co-authored-by: Cursor <cursoragent@cursor.com>
ec33dff to
67428ef
Compare
mandre
approved these changes
Feb 9, 2026
jacob-anders
added a commit
to jacob-anders/baremetal-operator
that referenced
this pull request
Feb 24, 2026
Implements the Healthy condition for BareMetalHosts as specified in the conditions RFE (metal3-io#2888). The condition reflects the health status reported by the BMC via Ironic's health rollup feature. - Add HealthyCondition constants and reasons to API types - Add GetHealth() method to provisioner interface with named health status constants (HealthOK, HealthWarning, HealthCritical) - Implement GetHealth() in ironic, demo, and fixture provisioners - Update computeConditions() to set Healthy based on health status - Use ConditionUnknown when health status is unavailable or when provisioner is nil (e.g. before registration) - Add unit tests for health condition logic at both controller and ironic provisioner levels Health mapping: - "OK" -> True/Healthy - "Warning" -> False/Warning - "Critical" -> False/CriticalError - "" or unknown -> Unknown/Unknown Depends on gophercloud/gophercloud#3619 (merged) which adds the Health field to the Ironic node struct. Partially implements metal3-io#2888 Assisted-by: Claude Code Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me>
jacob-anders
added a commit
to jacob-anders/baremetal-operator
that referenced
this pull request
Feb 24, 2026
Implements the Healthy condition for BareMetalHosts as specified in the conditions RFE (metal3-io#2888). The condition reflects the health status reported by the BMC via Ironic's health rollup feature. - Add HealthyCondition constants and reasons to API types - Add GetHealth() method to provisioner interface with named health status constants (HealthOK, HealthWarning, HealthCritical) - Implement GetHealth() in ironic, demo, and fixture provisioners - Update computeConditions() to set Healthy based on health status - Use ConditionUnknown when health status is unavailable or when provisioner is nil (e.g. before registration) - Add unit tests for health condition logic at both controller and ironic provisioner levels Health mapping: - "OK" -> True/Healthy - "Warning" -> False/Warning - "Critical" -> False/CriticalError - "" or unknown -> Unknown/Unknown Depends on gophercloud/gophercloud#3619 (merged) which adds the Health field to the Ironic node struct. Partially implements metal3-io#2888 Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me> Assisted-By: Claude Code Sonnet 4.6
jacob-anders
added a commit
to jacob-anders/baremetal-operator
that referenced
this pull request
Mar 4, 2026
Implements the Healthy condition for BareMetalHosts as specified in the conditions RFE (metal3-io#2888). The condition reflects the health status reported by the BMC via Ironic's health rollup feature. - Add HealthyCondition constants and reasons to API types - Add GetHealth() method to provisioner interface with named health status constants (HealthOK, HealthWarning, HealthCritical) - Implement GetHealth() in ironic, demo, and fixture provisioners - Update computeConditions() to set Healthy based on health status - Use ConditionUnknown when health status is unavailable or when provisioner is nil (e.g. before registration) - Add unit tests for health condition logic at both controller and ironic provisioner levels Health mapping: - "OK" -> True/Healthy - "Warning" -> False/Warning - "Critical" -> False/CriticalError - "" or unknown -> Unknown/Unknown Depends on gophercloud/gophercloud#3619 (merged) which adds the Health field to the Ironic node struct. Partially implements metal3-io#2888 Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me> Assisted-By: Claude Code Sonnet 4.6
jacob-anders
added a commit
to jacob-anders/baremetal-operator
that referenced
this pull request
Mar 10, 2026
Implements the Healthy condition for BareMetalHosts as specified in the conditions RFE (metal3-io#2888). The condition reflects the health status reported by the BMC via Ironic's health rollup feature. - Add HealthyCondition constants and reasons to API types - Add GetHealth() method to provisioner interface with named health status constants (HealthOK, HealthWarning, HealthCritical) - Implement GetHealth() in ironic, demo, and fixture provisioners - Update computeConditions() to set Healthy based on health status - Use ConditionUnknown when health status is unavailable or when provisioner is nil (e.g. before registration) - Add unit tests for health condition logic at both controller and ironic provisioner levels Health mapping: - "OK" -> True/Healthy - "Warning" -> False/Warning - "Critical" -> False/CriticalError - "" or unknown -> Unknown/Unknown Depends on gophercloud/gophercloud#3619 (merged) which adds the Health field to the Ironic node struct. Partially implements metal3-io#2888 Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me> Assisted-By: Claude Code Sonnet 4.6
jacob-anders
added a commit
to jacob-anders/baremetal-operator
that referenced
this pull request
Mar 10, 2026
Implements the Healthy condition for BareMetalHosts as specified in the conditions RFE (metal3-io#2888). The condition reflects the health status reported by the BMC via Ironic's health rollup feature. - Add HealthyCondition constants and reasons to API types - Add GetHealth() method to provisioner interface with named health status constants (HealthOK, HealthWarning, HealthCritical) - Implement GetHealth() in ironic, demo, and fixture provisioners - Update computeConditions() to set Healthy based on health status - Use ConditionUnknown when health status is unavailable or when provisioner is nil (e.g. before registration) - Add unit tests for health condition logic at both controller and ironic provisioner levels Health mapping: - "OK" -> True/Healthy - "Warning" -> False/Warning - "Critical" -> False/CriticalError - "" or unknown -> Unknown/Unknown Depends on gophercloud/gophercloud#3619 (merged) which adds the Health field to the Ironic node struct. Partially implements metal3-io#2888 Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me> Assisted-By: Claude Code Sonnet 4.6
jacob-anders
added a commit
to jacob-anders/baremetal-operator
that referenced
this pull request
Mar 11, 2026
Implements the Healthy condition for BareMetalHosts as specified in the conditions RFE (metal3-io#2888). The condition reflects the health status reported by the BMC via Ironic's health rollup feature. - Add HealthyCondition constants and reasons to API types - Add GetHealth() method to provisioner interface with named health status constants (HealthOK, HealthWarning, HealthCritical) - Implement GetHealth() in ironic, demo, and fixture provisioners - Update computeConditions() to set Healthy based on health status - Use ConditionUnknown when health status is unavailable or when provisioner is nil (e.g. before registration) - Add unit tests for health condition logic at both controller and ironic provisioner levels Health mapping: - "OK" -> True/Healthy - "Warning" -> False/Warning - "Critical" -> False/CriticalError - "" or unknown -> Unknown/Unknown Depends on gophercloud/gophercloud#3619 (merged) which adds the Health field to the Ironic node struct. Partially implements metal3-io#2888 Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me> Assisted-By: Claude Code Sonnet 4.6 Made-with: Cursor
jacob-anders
added a commit
to jacob-anders/baremetal-operator
that referenced
this pull request
Mar 11, 2026
Implements the Healthy condition for BareMetalHosts as specified in the conditions RFE (metal3-io#2888). The condition reflects the health status reported by the BMC via Ironic's health rollup feature. - Add HealthyCondition constants and reasons to API types - Add GetHealth() method to provisioner interface with named health status constants (HealthOK, HealthWarning, HealthCritical) - Implement GetHealth() in ironic, demo, and fixture provisioners - Update computeConditions() to set Healthy based on health status - Use ConditionUnknown when health status is unavailable or when provisioner is nil (e.g. before registration) - Add unit tests for health condition logic at both controller and ironic provisioner levels Health mapping: - "OK" -> True/Healthy - "Warning" -> False/Warning - "Critical" -> False/CriticalError - "" or unknown -> Unknown/Unknown Depends on gophercloud/gophercloud#3619 (merged) which adds the Health field to the Ironic node struct. Partially implements metal3-io#2888 Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me> Assisted-By: Claude Code Sonnet 4.6
jacob-anders
added a commit
to jacob-anders/baremetal-operator
that referenced
this pull request
Mar 13, 2026
Implements the Healthy condition for BareMetalHosts as specified in the conditions RFE (metal3-io#2888). The condition reflects the health status reported by the BMC via Ironic's health rollup feature. - Add HealthyCondition constants and reasons to API types - Add GetHealth() method to provisioner interface with named health status constants (HealthOK, HealthWarning, HealthCritical) - Implement GetHealth() in ironic, demo, and fixture provisioners - Update computeConditions() to set Healthy based on health status - Use ConditionUnknown when health status is unavailable or when provisioner is nil (e.g. before registration) - Add unit tests for health condition logic at both controller and ironic provisioner levels Health mapping: - "OK" -> True/Healthy - "Warning" -> False/Warning - "Critical" -> False/CriticalError - "" or unknown -> Unknown/Unknown Depends on gophercloud/gophercloud#3619 (merged) which adds the Health field to the Ironic node struct. Partially implements metal3-io#2888 Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me> Assisted-By: Claude Code Sonnet 4.6 (cherry picked from commit 8421ab6)
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.
Add support for the node health field which reports hardware health status from the BMC. Requires Ironic API microversion 1.109.
Signed-off-by: Jacob Anders jacob-anders-dev@proton.me
Assisted-by: Claude-4.5-opus-high
Fixes #[3618]
Links to the line numbers/files in the OpenStack source code that support the
code in this PR:
https://review.opendev.org/c/openstack/ironic/+/966946