【待评审】单 PSU 配电能力配置项新增资源树属性和方法评审

【待评审】单 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 预审

是

评审结论

遗留问题