Skip to content

feat: Add stable PowerShelf identity to hardware-health OTLP resources #5524

Description

@joseph-shifflett

Is this a new feature, an enhancement, or a change to existing functionality?

Enhancement

How would you describe the priority of this feature request

Medium

Please provide a clear description of problem this feature solves

NICo Hardware Health already discovers PowerShelf BMC endpoints and uses the
generic Redfish sensor, entity-metric, log, SSE, and health-report collectors.

EndpointMetadata::PowerShelf contains the NICo PowerShelf ID and serial
number. However, the shared OTLP resource-attribute conversion currently emits
component.type=power_shelf without exporting that PowerShelf ID or serial
number.

This differs from the existing switch contract, which exports switch.id and
switch.serial_number.

Consequently, an OTLP consumer can identify telemetry as originating from a
PowerShelf, but cannot reliably associate it with the corresponding NICo
PowerShelf resource without inferring identity from an IP address, MAC address,
or Redfish URI.

PowerShelf rack placement is tracked separately by #5446 and is not duplicated
by this issue.

Feature Description

As a consumer of NICo Hardware Health OTLP data, I want every log and metric
emitted for a managed PowerShelf BMC to carry stable PowerShelf identity, so
that observations can be correlated with the correct NICo PowerShelf without
endpoint-based inference.

When EndpointMetadata::PowerShelf contains an ID, Hardware Health shall add
the following OTLP resource attribute:

  • power_shelf.id=<PowerShelfId>

When PowerShelf metadata contains a serial number, Hardware Health shall add:

  • power_shelf.serial_number=<serial>

These attributes shall be emitted through the shared resource-attribute
conversion so that they apply consistently to both OTLP logs and metrics.

Existing attributes—including component.type=power_shelf,
collector.type, BMC endpoint information, and rack identity when
available—shall remain unchanged.

Attributes shall be omitted rather than fabricated when the corresponding
metadata is unavailable.

Describe your ideal solution

Extend the shared OTLP resource-attribute projection in crates/health to
handle EndpointMetadata::PowerShelf in the same manner that it currently
handles switch identity.

No PowerShelf-specific collector or output format should be required. Existing
sensor, entity-metric, periodic-log, SSE, and leak collectors should
automatically receive the identity attributes through the shared resource
context.

Describe any alternatives you have considered

No response

Additional context

Affected areas are expected to include:

  • crates/health/src/endpoint/model.rs
  • crates/health/src/otlp/convert.rs
  • Related endpoint-context and OTLP conversion tests

Related public issue:

NICo already has generic PowerShelf collection paths. Any additional missing
sensor, PMC, redundancy, or vendor-specific evidence should be demonstrated
with sanitized fixtures and tracked as focused follow-up issues.

Code of Conduct

  • I agree to follow NVIDIA Infra Controller's Code of Conduct
  • I have searched the open feature requests and have found no duplicates for this feature request

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureFeature (deprecated - use issue type, but it's needed for reporting now)rack health

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions