This document describes the Redfish routes and configurations related to the Power Subsystem within tlBMC.
The Power Subsystem module provides Redfish telemetry and resources for monitoring power supplies and their metrics. When enabled, tlBMC registers the following routes:
GET /redfish/v1/Chassis/{ChassisId}/PowerSubsystemGET /redfish/v1/Chassis/{ChassisId}/PowerSubsystem/PowerSuppliesGET /redfish/v1/Chassis/{ChassisId}/PowerSubsystem/PowerSupplies/{PowerSupplyId}GET /redfish/v1/Chassis/{ChassisId}/PowerSubsystem/PowerSupplies/{PowerSupplyId}/MetricsThe Power Subsystem routes are enabled by configuring the sensor_collector_module in the central configuration.
Specifically, the following flag must be set to true: sensor_collector_module.thermal_control_sub_module.enabled
| Field | Type | Default | Description |
|---|---|---|---|
sensor_collector_module.thermal_control_sub_module.enabled | bool | false | Enables the thermal control submodule, which registers routes for ThermalSubsystem, Fans, PowerSubsystem, and PowerSupplies. |
See central_config.proto in the source tree.
The following JSON snippet demonstrates a sample Redfish representation of a PowerSubsystem resource (with specific platform identifiers redacted) as exposed over HTTP GET requests:
{ "@odata.id": "/redfish/v1/Chassis/Chassis_0/PowerSubsystem", "@odata.type": "#PowerSubsystem.v1_1_0.PowerSubsystem", "Id": "PowerSubsystem", "Name": "Power Subsystem", "PowerSupplies": { "@odata.id": "/redfish/v1/Chassis/Chassis_0/PowerSubsystem/PowerSupplies" }, "Status": { "Health": "OK", "State": "Enabled" } }
And a sample representation of an individual PowerSupply resource (/redfish/v1/Chassis/Chassis_0/PowerSubsystem/PowerSupplies/PSU_0):
{ "@odata.id": "/redfish/v1/Chassis/Chassis_0/PowerSubsystem/PowerSupplies/PSU_0", "@odata.type": "#PowerSupply.v1_5_0.PowerSupply", "Id": "PSU_0", "Location": { "Oem": { "Google": { "Devpath": "/phys" } } }, "Manufacturer": "SampleManufacturer", "Metrics": { "@odata.id": "/redfish/v1/Chassis/Chassis_0/PowerSubsystem/PowerSupplies/PSU_0/Metrics" }, "Model": "SampleModel", "Name": "Power Supply", "PartNumber": "123456-01", "SerialNumber": "SN12345678", "Status": { "Health": "OK", "State": "Enabled" } }
And the real-time metrics representation for that PowerSupply (/redfish/v1/Chassis/Chassis_0/PowerSubsystem/PowerSupplies/PSU_0/Metrics):
{ "@odata.id": "/redfish/v1/Chassis/Chassis_0/PowerSubsystem/PowerSupplies/PSU_0/Metrics", "@odata.type": "#PowerSupplyMetrics.v1_0_1.PowerSupplyMetrics", "Id": "Metrics", "InputPowerWatts": { "DataSourceUri": "/redfish/v1/Chassis/PSU_0/Sensors/power_input_power_sensor", "Reading": 120.5 }, "Name": "PowerSupply Metrics" }
The following protobuf schemas define the internal representation of the power subsystem:
central_config.proto: Defines the central configuration modules.fru.proto: Defines PowerSupplyInfo which stores the input_sensor_name.topology_config.proto: Defines PortConfig and TopologyConfigNode used to build the power subsystem topology.The implementation of the power subsystem resides in the following files:
redfish/routes/power_subsystem.cc: Handles the Power Subsystem root resource.redfish/routes/power_supply.cc: Handles the Power Supplies collection and individual Power Supply resources.redfish/routes/power_supply_metrics.cc: Handles Power Supply Metrics and sensor mapping.redfish/routes/all_routes.cc: Registers the routes based on the thermal control submodule flag.