【待评审】单 PSU 配电能力配置项新增资源树属性和方法评审
1. 背景
电源轻载休眠管理功能已通过接口评审(EnergySaving D-Bus 接口 + WebREST 接口),本次为该接口新增属性和方法的增量评审。
现网机房实际供电能力可能低于电源模块的硬件额定功率(例如额定 3000W,但机房配电仅能稳定供给 2000W)。现有节能决策使用电源模块硬件额定功率作为判断依据,会高估电源模块实际供电能力,导致休眠后剩余模块无法承担负载,存在掉电风险。
本次在既有 EnergySaving 接口上新增「单 PSU 配电能力」配置属性及设置方法,由用户根据现网机房实际供电能力填写,配置值参与节能计算替代硬件额定功率,并校验配置值不能大于在位电源模块的最小额定功率。
2. 整体方案
| 维度 | 说明 |
|---|---|
| 部署位置 | 管理板(框级) |
| 资源树路径 | /bmc/kepler/AggregationService/Aggregates/${AggregateId}/PowerService/EnergySaving(既有,已评审通过) |
| WebREST 路径 | /UI/Rest/Chassis/AggregationService/EnergySaving(既有,已评审通过) |
| 变更类型 | 既有接口新增属性 + 新增方法 + PATCH 请求体扩展 |
资源树路径层级(PowerService/EnergySaving 已评审通过,本次仅新增属性和方法)
/bmc/kepler/AggregationService/Aggregates/${AggregateId}
└── PowerService
└── EnergySaving (既有)
└── 属性: EnergySavingMode / EffectiveEnergySavingMode / SleepingPsuCount / PowerCapEnabled
│ + PsuInputPowerLimitWatts (新增)
└── 方法: SetEnergySavingMode / GetPsuStatus
+ SetPsuInputPowerLimit (新增)
WebREST 路径层级(既有,PATCH 请求体扩展)
/UI/Rest/Chassis/AggregationService
└── EnergySaving (既有)
├── GET → 查询节能模式状态 + PSU工作状态
│ + PsuInputPowerLimitWatts (响应新增字段)
└── PATCH → 设置节能模式
+ PsuInputPowerLimitWatts (请求体新增字段)
3. 评审点清单
| 评审点编号 | 类别 | 评审对象 | 北向 WebREST 路径 | 资源树 Path | 实现接口 | 方法 | 详细 |
|---|---|---|---|---|---|---|---|
| IPL-01 | 既有接口新增属性 | 节能管理 D-Bus 接口 | — | /bmc/kepler/AggregationService/Aggregates/${AggregateId}/PowerService/EnergySaving | bmc.kepler.AggregationService.EnergySaving | — | §4.1 |
| IPL-02 | 既有接口新增方法 | 节能管理 D-Bus 接口 | — | 同上 | 同上 | SetPsuInputPowerLimit | §4.1 |
| IPL-03 | 既有 WebREST 扩展 | 节能管理 WebREST | /UI/Rest/Chassis/AggregationService/EnergySaving | 同上 | 同上 | — | §4.2 |
4. 详细评审点
说明:本评审覆盖既有 EnergySaving 接口上新增的属性、方法,以及既有 WebREST PATCH 请求体的扩展。
4.1 [IPL-01 / IPL-02] 既有接口新增属性 PsuInputPowerLimitWatts + 新增方法 SetPsuInputPowerLimit
路径描述:在已评审通过的 bmc.kepler.AggregationService.EnergySaving 接口上新增属性和方法。路径、层级、持久化方式与既有接口一致。
| 项 | 内容 |
|---|---|
| 资源树路径 | /bmc/kepler/AggregationService/Aggregates/${AggregateId}/PowerService/EnergySaving |
| 接口名 | bmc.kepler.AggregationService.EnergySaving |
| 层级 | 汇聚组下 3 级 Service |
| 持久化 | 掉电持久化(tableType: “PoweroffPer”) |
新增属性
| 属性名称 | 签名 | 只读 | 变化通知 | 属性描述 | 访问权限 | 持久化类型 | 易变属性 |
|---|---|---|---|---|---|---|---|
| PsuInputPowerLimitWatts | U16 | 否 | true | 单 PSU 输入供电能力限制(W)。0=未配置,节能决策拒绝休眠;非 0 时替代 PSU 额定功率参与节能计算,且不能大于在位 PSU 的最小额定功率 | BasicSetting | PoweroffPer | 否 |
新增方法
| 变更类型 | 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 | 访问权限 | 变更影响 |
|---|---|---|---|---|---|---|---|---|
| 新增 | SetPsuInputPowerLimit | PsuInputPowerLimitWatts: U16 | PsuInputPowerLimitWatts: 单 PSU 输入供电能力限制(W),0=未配置,非 0 时不能大于在位 PSU 的最小额定功率 | (无) | 设置单 PSU 输入供电能力限制 | BasicSetting | 持久化 PsuInputPowerLimitWatts 属性;校验非 0 值不大于在位 PSU 最小额定功率;重置分区条件保持计时器,下个监控周期重新评估 |
校验规则
| 校验项 | 规则 | 失败行为 |
|---|---|---|
| 值范围 | 0 ≤ PsuInputPowerLimitWatts ≤ 65535(U16) | 框架层拦截 |
| 上限校验 | 非 0 时必须 ≤ 在位 PSU 的额定功率 | 返回错误,拒绝配置 |
| 无在位 PSU | 非 0 时若无在位 PSU,无法校验上限 | 返回错误,拒绝配置 |
| 值为 0 | 允许设置,语义为"未配置",节能决策拒绝休眠 | 成功,下个周期唤醒所有休眠 PSU |
4.2 [IPL-03] 既有 WebREST 接口扩展 /UI/Rest/Chassis/AggregationService/EnergySaving
路径描述:在已评审通过的 EnergySaving WebREST 接口上,GET 响应新增 PsuInputPowerLimitWatts 字段,PATCH 请求体新增 PsuInputPowerLimitWatts 字段。PATCH 改为合并模式,支持同时或单独修改 EnergySavingMode 和 PsuInputPowerLimitWatts。
| 项 | 内容 |
|---|---|
| 北向 WebREST 路径 | /UI/Rest/Chassis/AggregationService/EnergySaving |
| 资源树路径 | /bmc/kepler/AggregationService/Aggregates/${AggregateId}/PowerService/EnergySaving |
| 实现接口 | bmc.kepler.AggregationService.EnergySaving |
WebREST 评审说明
| 北向 URI | HTTP | 类型 | 映射资源树 | 说明 |
|---|---|---|---|---|
| /UI/Rest/Chassis/AggregationService/EnergySaving | GET | 资源 | Property(D-Bus属性读取)+ Plugin(PSU工作状态、模式生效判断) | 查询节能模式状态、模式是否生效、休眠计数、PSU工作状态、单PSU配电能力配置 |
| /UI/Rest/Chassis/AggregationService/EnergySaving | PATCH | 资源 | Method: SetEnergySavingMode + Method: SetPsuInputPowerLimit | 设置节能模式和/或单PSU配电能力,合并模式支持单字段或双字段 |
GET 响应体(在既有基础上新增 PsuInputPowerLimitWatts):
| 字段 | 类型 | 来源 | 说明 |
|---|---|---|---|
| EnergySavingMode | String | D-Bus属性 | 配置的节能模式 |
| IsEnergySavingModeEffective | Boolean | 插件 | 当前配置的节能模式是否已生效 |
| SleepingPsuCount | Integer | D-Bus属性 | 当前休眠的电源模块数量 |
| PsuInputPowerLimitWatts | Integer | D-Bus属性 | 单 PSU 输入供电能力限制(W),0=未配置 |
| PsuWorkStatus | Object | 插件 | PSU工作状态,KV格式 |
PATCH 请求体(在既有 EnergySavingMode 基础上新增 PsuInputPowerLimitWatts,合并模式):
| 字段 | 类型 | 必填 | 枚举/范围 | 说明 |
|---|---|---|---|---|
| EnergySavingMode | String | 否 | Standard / BasicSaving / DeepSaving | 节能工作模式 |
| PsuInputPowerLimitWatts | Integer | 否 | 0 ~ 65535 | 单 PSU 输入供电能力限制(W),0=未配置 |
nil 跳过机制:PATCH 请求中未传的字段以 nil 传入 D-Bus 方法,业务层入口判断参数为 nil 时直接返回成功,确保只 PATCH 单字段时不会误清另一字段配置。两个 Method 均无条件守卫,每次 PATCH 会执行所有 ProcessingFlow。
样例展示:
GET 查询(含单 PSU 配电能力配置):
URL: /UI/Rest/Chassis/AggregationService/EnergySaving
操作类型:GET
响应消息体举例:
{
"EnergySavingMode": "BasicSaving",
"IsEnergySavingModeEffective": true,
"SleepingPsuCount": 2,
"PsuInputPowerLimitWatts": 2000,
"PsuWorkStatus": {
"1": "Active",
"2": "Active",
"3": "DeepSleep",
"4": "DeepSleep",
"5": "Active",
"6": "Active",
"7": "Active",
"8": "Active"
}
}
PATCH 设置单 PSU 配电能力(单字段):
URL: /UI/Rest/Chassis/AggregationService/EnergySaving
操作类型:PATCH
请求参数:
{
"PsuInputPowerLimitWatts": 2000
}
响应消息体举例:
(无响应体,HTTP 200 表示成功)
PATCH 同时设置节能模式和配电能力(双字段):
URL: /UI/Rest/Chassis/AggregationService/EnergySaving
操作类型:PATCH
请求参数:
{
"EnergySavingMode": "BasicSaving",
"PsuInputPowerLimitWatts": 2000
}
响应消息体举例:
(无响应体,HTTP 200 表示成功)
PATCH 设置单 PSU 配电能力超过PSU额定功率导致校验失败:
URL: /UI/Rest/Chassis/AggregationService/EnergySaving
操作类型:PATCH
请求参数:
{
"PsuInputPowerLimitWatts": 3001
}
响应消息体举例:
{
"error": {
"code": "Base.1.0.PropertyValueError",
"message": "PsuInputPowerLimitWatts 3001W exceeds min PSU rated power 3000W, config not allowed"
}
}
是否准备好 AI 预审
是