【待评审】电源轻载休眠管理资源树路径和WebREST接口评审

电源轻载休眠管理资源树路径和WebREST接口评审

1. 背景

管理板需要提供框级电源轻载休眠管理能力,根据框级负载情况自动管理电源模块的休眠与唤醒,实现轻载节能。该功能部署在管理板,作为独立组件运行,通过D-Bus消费既有电源管理接口,并向北向提供WebREST管理接口。

2. 整体方案

维度 说明
部署位置 管理板(框级)
资源树路径 /bmc/kepler/AggregationService/Aggregates/${AggregateId}/SystemService/EnergySaving
WebREST 路径 /UI/Rest/Chassis/AggregationService/EnergySaving
持久化 tableType: “PoweroffPer”(掉电持久化)

资源树路径层级(挂在既有AggregationService汇聚组SystemService下)

/bmc/kepler/AggregationService/Aggregates/${AggregateId}
    └── SystemService
        ├── BootOptions                              (既有)
        ├── PowerControl                             (既有)
        └── EnergySaving                             (新增)
            └── 属性: EnergySavingMode / EffectiveEnergySavingMode / SleepingPsuCount / LastSleepCount / PowerCapEnabled
            └── 方法: SetEnergySavingMode / GetPsuStatus

WebREST 路径层级(前缀 /UI/Rest/Chassis/AggregationService)

/UI/Rest/Chassis/AggregationService
    ├── OverView                                     (既有)
    ├── Certificate                                  (既有)
    ├── Accounts                                     (既有)
    ├── Configuration                                (既有)
    ├── LogService                                   (既有)
    ├── UpdateService                                (既有)
    ├── BootOptions                                  (既有)
    ├── ManagerNetWork                               (既有)
    ├── PowerControl                                 (既有)
    ├── AssetInventory                               (既有)
    ├── AssetHealthStatus                            (既有)
    └── EnergySaving                                 (新增)
        ├── GET  → 查询节能模式状态 + PSU工作状态
        └── PATCH → 设置节能模式

3. 评审点清单

评审点编号 类别 评审对象 北向WebREST路径 资源树Path 实现接口 方法 详细
ES-01 新增路径、新增属性、新增方法 节能管理D-Bus接口 — /bmc/kepler/AggregationService/Aggregates/${AggregateId}/SystemService/EnergySaving bmc.kepler.AggregationService.EnergySaving SetEnergySavingMode / GetPsuStatus §4.1
ES-02 新增WebREST接口 节能管理WebREST /UI/Rest/Chassis/AggregationService/EnergySaving 同上 同上 — §4.2

4. 详细评审点

说明:本评审覆盖资源树路径、D-Bus接口属性与方法、北向WebREST路径。

4.1 [ES-01] 新增资源树路径 /bmc/kepler/AggregationService/Aggregates/${AggregateId}/SystemService/EnergySaving

路径描述:框级电源轻载休眠管理D-Bus对象。挂载于既有AggregationService汇聚组SystemService下,与既有BootOptions、PowerControl同级。归属聚合管理-系统服务功能域。部署在管理板,层级为机框。掉电持久化(tableType: “PoweroffPer”),BMC重启后恢复节能模式配置。

项 内容
资源树路径 /bmc/kepler/AggregationService/Aggregates/${AggregateId}/SystemService/EnergySaving
接口名 bmc.kepler.AggregationService.EnergySaving
层级 汇聚组下3级Service
类权限 ReadOnly
持久化 PoweroffPer(掉电持久化)

属性

属性名 类型 默认值 Usage 选项 描述
EnergySavingMode String “Standard” [“CSR”] — 节能工作模式:Standard(标准) / BasicSaving(基本节能) / DeepSaving(深度节能)
EffectiveEnergySavingMode String “Standard” [“CSR”] emitsChangedSignal: “true” 当前生效的节能模式(受温度/故障等约束可能与配置模式不同)
SleepingPsuCount U8 0 [“CSR”] emitsChangedSignal: “true” 当前处于休眠状态的电源模块数量
LastSleepCount U8 0 [“CSR”] — 上次休眠PSU数量,用于主备倒换恢复
PowerCapEnabled Bool false [“CSR”] emitsChangedSignal: “true” 功率封顶使能状态,true时退出节能模式

方法

方法名 权限 描述
SetEnergySavingMode [“BasicSetting”] 设置节能工作模式,参数为模式字符串(Standard/BasicSaving/DeepSaving)
GetPsuStatus [“ReadOnly”] 查询所有PSU的节能状态,返回PsuStatusList(含槽位号、在位状态、休眠模式、是否工作、供电分区)

实现接口

实现接口 实现接口描述 CSR配置影响 持久化影响 其他影响
bmc.kepler.AggregationService.EnergySaving 提供框级电源轻载休眠管理的模式配置、生效状态查询和休眠计数。属性EnergySavingMode掉电持久化;运行时属性(EffectiveEnergySavingMode/SleepingPsuCount/PowerCapEnabled)由组件运行时维护,emitsChangedSignal变更通知;主备管理板间通过bmc_datasync PropertySync机制实时同步EnergySavingMode和PowerCapEnabled 新增CSR配置项:EnergySavingMode(节能模式)、EffectiveEnergySavingMode(生效模式)、SleepingPsuCount(休眠计数)、LastSleepCount(上次休眠计数)、PowerCapEnabled(功率封顶使能) EnergySavingMode通过tableType: "PoweroffPer"掉电持久化;LastSleepCount运行时状态不持久化,主备倒换后从硬件重建 需实现新增属性5个 + 新增方法2个;类权限ReadOnly,写方法独立BasicSetting权限

4.2 [ES-02] 新增WebREST接口 /UI/Rest/Chassis/AggregationService/EnergySaving

路径描述:框级电源轻载休眠管理WebREST接口。挂在既有AggregationService WebREST路径下,与PowerControl、BootOptions同级。GET查询节能模式状态、模式生效状态及PSU工作状态,PATCH设置节能模式。

项 内容
北向WebREST路径 /UI/Rest/Chassis/AggregationService/EnergySaving
资源树路径 /bmc/kepler/AggregationService/Aggregates/${AggregateId}/SystemService/EnergySaving
实现接口 bmc.kepler.AggregationService.EnergySaving

WebREST 评审说明

北向URI HTTP 类型 映射资源树 说明
/UI/Rest/Chassis/AggregationService/EnergySaving GET 资源 Property(D-Bus属性读取)+ Plugin(PSU工作状态、模式生效判断) 查询节能模式状态、模式是否生效、休眠计数、PSU工作状态
/UI/Rest/Chassis/AggregationService/EnergySaving PATCH 资源 Method: SetEnergySavingMode 设置节能模式,请求体 EnergySavingMode(Enum: Standard/BasicSaving/DeepSaving)

GET响应体:

字段 类型 来源 说明
EnergySavingMode String D-Bus属性 配置的节能模式
EnergySavingModeEffective Boolean 编排器插件 当前配置的节能模式是否已生效(配置模式与实际生效模式一致)
SleepingPsuCount Integer D-Bus属性 当前休眠的电源模块数量
PsuWorkStatus Object 编排器插件 PSU工作状态,KV格式。key为槽位号(字符串),value为 Active(在位且未休眠)/ DeepSleep(在位但已休眠)/ Absent(不在位)

PATCH请求体:

字段 类型 必填 枚举 说明
EnergySavingMode String 是 Standard / BasicSaving / DeepSaving 节能工作模式

PSU工作状态编排器插件:通过D-Bus查询 bmc.kepler.Systems.PowerMgmt.OnePower 接口所有对象,根据 Presence 和 OnePower.Status.SleepMode 生成 KV 格式的 PSU 工作状态:在位且未休眠 → Active,在位但休眠 → DeepSleep,不在位 → Absent。

模式生效判断编排器插件:比较 D-Bus 属性 EnergySavingMode 与 EffectiveEnergySavingMode 是否一致,返回 boolean。

样例展示:

GET 查询节能模式及 PSU 工作状态:

URL: /UI/Rest/Chassis/AggregationService/EnergySaving
操作类型:GET
响应消息体举例:
{
    "EnergySavingMode": "DeepSaving",
    "EnergySavingModeEffective": true,
    "SleepingPsuCount": 2,
    "PsuWorkStatus": {
        "1": "Active",
        "2": "Active",
        "3": "DeepSleep",
        "4": "Active",
        "5": "Active",
        "6": "Active",
        "7": "DeepSleep",
        "8": "Active"
    }
}

PATCH 设置节能模式:

URL: /UI/Rest/Chassis/AggregationService/EnergySaving
操作类型:PATCH
请求参数:
{
    "EnergySavingMode": "DeepSaving"
}
响应消息体举例:
(无响应体,HTTP 200 表示成功)

GET 查询(模式尚未生效时):

URL: /UI/Rest/Chassis/AggregationService/EnergySaving
操作类型:GET
响应消息体举例:
{
    "EnergySavingMode": "DeepSaving",
    "EnergySavingModeEffective": false,
    "SleepingPsuCount": 0,
    "PsuWorkStatus": {
        "1": "Active",
        "2": "Active",
        "3": "Active",
        "4": "Active",
        "5": "Active",
        "6": "Active",
        "7": "Active",
        "8": "Active"
    }
}

GET 查询(部分槽位不在位时):

URL: /UI/Rest/Chassis/AggregationService/EnergySaving
操作类型:GET
响应消息体举例:
{
    "EnergySavingMode": "BasicSaving",
    "EnergySavingModeEffective": true,
    "SleepingPsuCount": 1,
    "PsuWorkStatus": {
        "1": "Active",
        "2": "Active",
        "3": "DeepSleep",
        "4": "Active",
        "5": "Absent",
        "6": "Active",
        "7": "Active",
        "8": "Active"
    }
}