Skip to content

Add a new Ironic field representing node health to Gophercloud#3619

Merged
mandre merged 1 commit intogophercloud:mainfrom
jacob-anders:health-field
Feb 12, 2026
Merged

Add a new Ironic field representing node health to Gophercloud#3619
mandre merged 1 commit intogophercloud:mainfrom
jacob-anders:health-field

Conversation

@jacob-anders
Copy link
Copy Markdown
Contributor

@jacob-anders jacob-anders commented Jan 28, 2026

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

@github-actions github-actions bot added edit:baremetal This PR updates baremetal code semver:minor Backwards-compatible change backport-v2 This PR will be backported to v2 labels Jan 28, 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>
@coveralls
Copy link
Copy Markdown

Coverage Status

coverage: 63.865%. remained the same
when pulling 67428ef on jacob-anders:health-field
into c716223 on gophercloud:main.

@mandre mandre enabled auto-merge February 12, 2026 08:18
@mandre mandre added this pull request to the merge queue Feb 12, 2026
Merged via the queue into gophercloud:main with commit 5db1251 Feb 12, 2026
66 of 68 checks passed
@jacob-anders jacob-anders deleted the health-field branch February 24, 2026 06:08
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-v2 This PR will be backported to v2 edit:baremetal This PR updates baremetal code semver:minor Backwards-compatible change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants