【待评审】单板聚合管理接口下新增资源树属性和方法

背景

框式设备主备管理板场景下,管理板之间需要跨板 RPC 通讯。跨板 RPC 存在多条通讯链路时,根据链路状态切换链路需要同步更新链路地址,消费方(如 bmc_datasync)取址建链。对端为多块单板时,每块单板各有一个通讯地址。

框式设备管理板首页需要显示整框单板概览信息,包含高度、宽度、健康等级、产品名称;并支持按单板查询风扇 FanId、健康与转速。

框内节点对象已在 Interface 评审通过:【已评审】新增资源协作接口提供获取框内节点信息能力(bmc.kepler.AggregationService.Blade)。在该接口上:

能力 方案
RPC 通讯地址 新增 RpcAddress,一板一地址(该单板的 RPC 通讯 IPv4)
与节点板通讯状态 新增 CommunicationStatus
单板概览 新增 Height、Width、Health、ProductName
风扇信息 新增方法 GetFanInfo(无入参;出参本板风扇数组:FanId / Health / Speed)
代发 Redfish 新增方法 SendRedfishRequest(Method / Uri / Body / IfMatch;目标板由本 Blade 路径实例决定,无 AggregationSource 入参)

关联 ISSUE

无

整体方案

产业组件实现 Rpc 通讯链路的状态检测和异常切换;检测到当前链路异常时切换通讯链路,更新资源树 Rpc 通讯地址属性,通知消费组件刷新通讯地址。

对于单板静态信息和高频获取信息,汇聚到管理板,避免接口调用时实时获取,提升接口响应速率。

评审点

  1. 1. 变更资源协作接口 bmc.kepler.AggregationService.Blade
    1. 新增属性 RpcAddress
    2. 新增属性 CommunicationStatus(与节点板通讯状态)
    3. 新增属性 Height、Width、Health、ProductName
    4. 新增方法 GetFanInfo
    5. 新增方法 SendRedfishRequest

详细描述

评审点1:变更资源协作接口 bmc.kepler.AggregationService.Blade

变更描述:已有资源树接口下新增属性和方法。

接口评审链接:topic/7454

path(已有):/bmc/kepler/AggregationService/Aggregates/${AggregateId}/ChassisService/Blades/${BladeId}

interface(变更):bmc.kepler.AggregationService.Blade

新增属性

变更类型 属性名称 签名 只读 变化通知 访问权限 属性来源 持久化类型 易变属性
新增 RpcAddress s false true Read: ReadOnly;Write: ConfigureComponents 软件维护 不持久化 true
新增 CommunicationStatus s true true Read: ReadOnly 软件维护 不持久化 true
新增 Height y true true Read: ReadOnly 软件维护 不持久化 true
新增 Width y true true Read: ReadOnly 软件维护 不持久化 true
新增 Health s true true Read: ReadOnly 软件维护 不持久化 true
新增 ProductName s true true Read: ReadOnly 软件维护 不持久化 true

属性描述与变更影响

  • RpcAddress:与该单板 RPC 通讯的 IPv4 地址;空串表示未配置或未就绪。切平面时仅更新本属性(Port 不变)。本板可写;对板经跨板 RPC Set 本属性以对齐。变更发变化通知。新增 RW 属性,支撑跨板 RPC Set;多单板各实例独立;消费方订阅变更跟随切平面。
  • CommunicationStatus:管理板与该节点板的通讯状态。默认 Suspended。取值:Suspended=未使能,Running=正常,Exception=框内通讯异常。由链路/心跳检测刷新,发变化通知。供汇聚/告警/同步门控判断对板是否可达。
  • Height:单板高度(U),类型 U8。对标框级单板概览 / AssetBoard.Height。用于框级拓扑/UI 展示。
  • Width:单板宽度,类型 U8。对标 AssetBoard.Width。用于框级拓扑/UI 展示。
  • Health:单板健康等级,类型 String。取值:Normal / Minor / Major / Critical / Unknown。默认 Unknown。用于框级拓扑/UI 与告警展示。
  • ProductName:产品/单板展示名。查询响应 a(ssa{sv}) 中字典外 ProductName 取自本属性(若尚未随 7454 闭环,本次一并纳入)。

新增方法

方法名称 请求签名 响应签名 访问权限
GetFanInfo (无) aa{sv} ReadOnly
SendRedfishRequest ssss iss ConfigureComponents

GetFanInfo

无入参。在本 Blades/${BladeId} 实例上调用,返回该单板全部风扇信息(单板可有多个风扇,故为数组)。出参采用 aa{sv} 字典数组,便于后续扩展风扇其他字段;本期必选键如下,消费方应忽略未知键。

响应参数(Fans:aa{sv},本期必选键)

键 类型 说明
FanId s 风扇标识
Health s 健康状态:Normal / Minor / Major / Critical / Unknown(默认 Unknown)
Speed u 转速(RPM)

方法描述:查询本板风扇 FanId、健康与转速;无风扇时返回空数组。字典后续可增键,不改方法签名。

SendRedfishRequest — 请求参数

参数 类型 说明
Method s HTTP 方法:GET / POST / PATCH / PUT / DELETE
Uri s 本板上 Redfish 路径(如 /redfish/v1/Systems/1);须为绝对 path,不含 scheme/host
Body s 请求体(JSON 文本;GET/DELETE 无体时传空串)
IfMatch s 对应 HTTP If-Match;无条件请求时传空串

SendRedfishRequest — 响应参数

参数 类型 说明
StatusCode i 目标 Redfish HTTP status(2xx 成功);不可达映射 503
Body s 响应体原文(可空)
ETag s 响应 ETag(无则空串),便于调用方后续带 IfMatch

方法描述:在本 Blades/${BladeId} 实例上调用,目标单板由路径确定,不再传 AggregationSource。经内部 RPC/链路向该节点 BMC 代发 Redfish 并回传结果。不替代各业务专用汇聚方法;用于通用/OEM 透传。

变更信号

无(属性侧依赖 emitsChangedSignal:RpcAddress / CommunicationStatus / Height / Width / Health / ProductName)。

变更接口影响

路径 变更接口影响 CSR配置影响 持久化影响 其他影响
/bmc/kepler/AggregationService/Aggregates/${AggregateId}/ChassisService/Blades/${BladeId} 新增属性 RpcAddress、CommunicationStatus、Height、Width、Health、ProductName;新增方法 GetFanInfo、SendRedfishRequest 不涉及重名属性,无影响 均不持久化(含 RpcAddress);无影响 需实现上树、写路径(仅 RpcAddress)、变化通知、通讯状态刷新、GetFanInfo、SendRedfishRequest;主备两侧已具备 AggregationService/Blade

是否准备好 AI 预审

是