Skip to content

fix(site-explorer): bail out when Redfish service root vendor is null…#1769

Merged
vinodchitraliNVIDIA merged 1 commit into
NVIDIA:mainfrom
vinodchitraliNVIDIA:vc/power_shelf_fix
May 18, 2026
Merged

fix(site-explorer): bail out when Redfish service root vendor is null…#1769
vinodchitraliNVIDIA merged 1 commit into
NVIDIA:mainfrom
vinodchitraliNVIDIA:vc/power_shelf_fix

Conversation

@vinodchitraliNVIDIA
Copy link
Copy Markdown
Contributor

@vinodchitraliNVIDIA vinodchitraliNVIDIA commented May 18, 2026

… so power shelf chassis fallback runs
Some power shelf BMCs (e.g. Lite-On) do not populate the Vendor
field in the Redfish service root. Previously, get_redfish_vendor()
relied solely on ServiceRoot::vendor(), which can derive a vendor
from other hints and mask the missing field. That prevented the
upper-layer fallback in bmc_endpoint_explorer from kicking in to
probe the Chassis Manufacturer field for power shelves.
Add an explicit check on the raw service_root.vendor field and
return EndpointExplorationError::MissingVendor early when it is
None, so the caller can fall back to chassis-based vendor probing
for power shelf endpoints.

Description

Type of Change

  • Add - New feature or capability
  • Change - Changes in existing functionality
  • Fix - Bug fixes
  • Remove - Removed features or deprecated functionality
  • Internal - Internal changes (refactoring, tests, docs, etc.)

Related Issues (Optional)

Breaking Changes

  • This PR contains breaking changes

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No testing required (docs, internal refactor, etc.)

Additional Notes

@vinodchitraliNVIDIA vinodchitraliNVIDIA requested a review from a team as a code owner May 18, 2026 17:08
Comment on lines +131 to 137
if service_root.vendor.is_none() {
return Err(EndpointExplorationError::MissingVendor);
}

let Some(vendor) = service_root.vendor() else {
tracing::info!("No vendor found for BMC at {bmc_ip_address}");
return Err(EndpointExplorationError::MissingVendor);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

sorry, lol, double checking my sanity here -- isn't that what this check does right here? and logs that it was missing + returns the same error?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ohhhh.. service_root.vendor vs service_root.vendor() -- oof, lol. maybe drop a comment in there as to why we do this, because that reads soo confusing

Copy link
Copy Markdown
Contributor Author

@vinodchitraliNVIDIA vinodchitraliNVIDIA May 18, 2026

Choose a reason for hiding this comment

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

in libredifsh .. if none we send unknown. This is causing failure in site explorer fall back code

@vinodchitraliNVIDIA vinodchitraliNVIDIA enabled auto-merge (squash) May 18, 2026 17:39
@vinodchitraliNVIDIA vinodchitraliNVIDIA merged commit de578d0 into NVIDIA:main May 18, 2026
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants