Redfish Power Subsystem

This document describes the Redfish routes and configurations related to the Power Subsystem within tlBMC.

Overview

The Power Subsystem module provides Redfish telemetry and resources for monitoring power supplies and their metrics. When enabled, tlBMC registers the following routes:

  • Power Subsystem Root: GET /redfish/v1/Chassis/{ChassisId}/PowerSubsystem
    • Provides high-level status of the power subsystem and links to power supplies.
  • Power Supplies Collection: GET /redfish/v1/Chassis/{ChassisId}/PowerSubsystem/PowerSupplies
    • Lists all power supplies associated with the chassis.
  • Power Supply Details: GET /redfish/v1/Chassis/{ChassisId}/PowerSubsystem/PowerSupplies/{PowerSupplyId}
    • Returns detailed information for a specific power supply (Manufacturer, Model, Serial Number, Part Number, Location, etc.).
  • Power Supply Metrics: GET /redfish/v1/Chassis/{ChassisId}/PowerSubsystem/PowerSupplies/{PowerSupplyId}/Metrics
    • Exposes real-time metrics such as input power reading in Watts.

Central Configuration

The 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

FieldTypeDefaultDescription
sensor_collector_module.thermal_control_sub_module.enabledboolfalseEnables the thermal control submodule, which registers routes for ThermalSubsystem, Fans, PowerSubsystem, and PowerSupplies.

See central_config.proto in the source tree.

Redfish Output Example

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"
}

Protobuf Configuration

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.

Code References

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.