Skip to content

feat(site-explorer): backfill system Ethernet interfaces from Expecte…#1710

Open
vinodchitraliNVIDIA wants to merge 1 commit into
NVIDIA:mainfrom
vinodchitraliNVIDIA:vc/eth
Open

feat(site-explorer): backfill system Ethernet interfaces from Expecte…#1710
vinodchitraliNVIDIA wants to merge 1 commit into
NVIDIA:mainfrom
vinodchitraliNVIDIA:vc/eth

Conversation

@vinodchitraliNVIDIA
Copy link
Copy Markdown
Contributor

…dMachine.host_nics

When Redfish does not expose System EthernetInterfaces for a host endpoint, synthesize them from the operator-supplied ExpectedMachine.host_nics so downstream logic (e.g. MachineId generation and nic-type classification) continues to work.

The backfill only runs when the system's ethernet_interfaces list is empty and the endpoint is not a DPU, switch, or power shelf, so any Redfish-reported data is preserved as-is. Each synthesized entry uses the operator-provided nic_type in its id when available, and falls back to a positional id otherwise.

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

Copy link
Copy Markdown
Contributor

@poroh poroh left a comment

Choose a reason for hiding this comment

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

If generation of machine ID needs to have information from expected machine it should take it directly from the source. Site explorer report should provide ground truth collected from the devices.

Patching data structures to satisfy downstream data processing requirements should only be done if we cannot change downstream data processing.

@Matthias247
Copy link
Copy Markdown
Contributor

@poroh 's comment makes sense to me. So far we avoid patching manipulating the EndpointExplorationReports. We just use them in conjunction with other data later on. I think it would be good to stay consistent.

If patching also makes sense for other types of reports (and I think it could!), then I'd be interested to see it applied in a more generic fashion (not "just host NICs"). E.g. specify a bit of JSON and a JSON path in the endpointexplorationreport and then apply his.

@vinodchitraliNVIDIA
Copy link
Copy Markdown
Contributor Author

If generation of machine ID needs to have information from expected machine it should take it directly from the source. Site explorer report should provide ground truth collected from the devices.

Patching data structures to satisfy downstream data processing requirements should only be done if we cannot change downstream data processing.

In certain platforms we have bug. Expecting no fixes coming from BMC team. BUt will be fixed next platforms.

Hence this fallback.

@poroh
Copy link
Copy Markdown
Contributor

poroh commented May 15, 2026

If generation of machine ID needs to have information from expected machine it should take it directly from the source. Site explorer report should provide ground truth collected from the devices.
Patching data structures to satisfy downstream data processing requirements should only be done if we cannot change downstream data processing.

In certain platforms we have bug. Expecting no fixes coming from BMC team. BUt will be fixed next platforms.

Hence this fallback.

I'm not saying that we shouldn't fix it. I'm saying that we shouldn't fix it by patching Redfish-collected data by user generated data from expected machines.

If we need this for correct machine ID generation just pass expected machine data to ID generation function and use information there. Make it explicit, without any surprises to somebody who will take a look at the exploration report and will not understand where it comes from.

…dMachine.host_nics

When Redfish does not expose System EthernetInterfaces for a host
endpoint, synthesize them from the operator-supplied
ExpectedMachine.host_nics so downstream logic (e.g. MachineId
generation and nic-type classification) continues to work.

The backfill only runs when the system's ethernet_interfaces list is
empty and the endpoint is not a DPU, switch, or power shelf, so any
Redfish-reported data is preserved as-is. Each synthesized entry uses
the operator-provided nic_type in its id when available, and falls
back to a positional id otherwise.
@github-actions
Copy link
Copy Markdown

@vinodchitrali
Copy link
Copy Markdown

vinodchitrali commented May 17, 2026

If generation of machine ID needs to have information from expected machine it should take it directly from the source. Site explorer report should provide ground truth collected from the devices.
Patching data structures to satisfy downstream data processing requirements should only be done if we cannot change downstream data processing.

In certain platforms we have bug. Expecting no fixes coming from BMC team. BUt will be fixed next platforms.
Hence this fallback.

I'm not saying that we shouldn't fix it. I'm saying that we shouldn't fix it by patching Redfish-collected data by user generated data from expected machines.

If we need this for correct machine ID generation just pass expected machine data to ID generation function and use information there. Make it explicit, without any surprises to somebody who will take a look at the exploration report and will not understand where it comes from.

Its not machine ID. Its for Host nic booting. adding operator provided host nic to redfish tree inventory

However i moved the logic bmc_endpoint_explorer

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.

4 participants