Skip to content

doc: enhancement proposal for supporing Redfish #2245

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

sthaha
Copy link
Collaborator

@sthaha sthaha commented Jul 18, 2025

Addresses #2078

@sthaha sthaha force-pushed the feat-redfish branch 4 times, most recently from b206076 to f52528c Compare July 21, 2025 11:04
@github-actions github-actions bot added the docs Documentation changes label Jul 21, 2025
@aharivel
Copy link
Contributor

Hi @sthaha ,
I read your draft and it looks good. But the main problem I see is how will you handle the different endpoint where we can find the power consumed ? Here an example on 2 machines:
/redfish/v1/Chassis/Tray_1/Power#/0/PowerConsumedWatts
/redfish/v1/Chassis/System.Embedded.1/Power/PowerConsumedWatts

But there is also other one in the Redfish specification. Please check this: https://www.dmtf.org/sites/default/files/standards/documents/DSP0268_2024.4.html#environmentmetrics-132
And look for "PowerWatts".
Sometimes it's available, sometimes not..

@sthaha
Copy link
Collaborator Author

sthaha commented Aug 6, 2025

But the main problem I see is how will you handle the different endpoint where we can find the power consumed ? Here an example on 2 machines:
/redfish/v1/Chassis/Tray_1/Power#/0/PowerConsumedWatts
/redfish/v1/Chassis/System.Embedded.1/Power/PowerConsumedWatts

Hi @aharivel! I believe gofish library solves this problem that you pointed out but we should test this of course ... see kepler implementation in progress #2263

E.g ... https://github.com/stmcginnis/gofish/blob/v0.15.0/redfish/chassis.go#L443-L478

I think for each vendor, gofish creates and endpoint specific to the vendor

  • Dell iDRAC returns: "Power": {"@odata.id": "/redfish/v1/Chassis/System.Embedded.1/Power"}
  • HPE iLO returns: "Power": {"@odata.id": "/redfish/v1/Chassis/1/Power"}
  • Lenovo XCC returns: "Power": {"@odata.id": "/redfish/v1/Chassis/Tray1/Power"}

I believe kepler code should uniformly work across all vendors supported by gofish.
Our implementation should include vendor testing with realistic responses. Also thinking of adding a tool to capture and update testdata.

Also .. any fix to redfish support should be contributed to gofish library.

@sthaha sthaha marked this pull request as ready for review August 12, 2025 09:15
Add enhancement proposal document outlining the design and implementation
approach for integrating Redfish power measurement capabilities into
Kepler.

Signed-off-by: Sunil Thaha <sthaha@redhat.com>
kepler_node_platform_joules_total{source="redfish",node_name="worker-1"} 123456.789

# Existing CPU metrics unchanged
kepler_node_cpu_watts{zone="package",node_name="worker-1"} 125.2
Copy link
Collaborator

Choose a reason for hiding this comment

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

should we add a source label in existing cpu_watts metrics? set the label according to the cpu power source. currently source=rapl will be there.


## Node Identification

Nodes identified via `--platform.node-id` flag or `platform.nodeID` config,
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
Nodes identified via `--platform.node-id` flag or `platform.nodeID` config,
Nodes identified via `--platform.node-id` flag or `nodes.nodeID` config,

Comment on lines +130 to +131
worker-1: bmc-1
worker-2: bmc-2
Copy link
Collaborator

Choose a reason for hiding this comment

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

how are the nodes identified here? with kubernetes node name? or whatever is passed to the flag platform.node-id by the operator?

```yaml
nodes:
worker-1: bmc-1
worker-2: bmc-2
Copy link
Collaborator

Choose a reason for hiding this comment

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

can the bmc IP be auto discovered? the Redfish/BMC appears as a virtual nic. and BMC may appear in /etc/hosts

Comment on lines +134 to +138
bmc-1:
endpoint: "https://192.168.1.100"
username: "admin"
password: "secret"
insecure: true # TLS verification
Copy link
Collaborator

Choose a reason for hiding this comment

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

api calls for redfish require a ChassisId , do we need config item for that?


- Credentials in Kubernetes secrets or secure files (mode 0600)
- No credential logging
- Require explicit opt-in via configuration
Copy link
Collaborator

Choose a reason for hiding this comment

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

pls add a small section for kepler config changes too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs Documentation changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants