【待评审】主备管理支持北向接口材料评审

背景

当前主备管理方案已支持通过硬件信号获取远程单板的主备状态,并提供了 CSR 配置属性用于主备决策和异常检测。为满足上层管理软件(Web、CLI、Redfish)对主备状态的查询和倒换控制需求,需要提供北向接口。


整体方案

接口类型 策略 说明
Web 接口 复用EMM管理 + 映射器适配 保持 URL 不变,通过接口映射层转换返回数据格式
CLI 接口 复用v2 + 映射器适配 保持命令格式不变,通过接口映射层转换输出格式
Redfish 接口 新增 标准 Redfish 无主备状态查询和倒换接口,需新增

依赖 D-Bus 服务

服务 路径 接口 属性/方法
主备状态查询 /bmc/kepler/Managers/1/ActiveStandby/Local bmc.kepler.Managers.ActiveStandby.Local ActiveStatusHealthStatus
对板状态查询 /bmc/kepler/Managers/1/ActiveStandby/Remote bmc.kepler.Managers.ActiveStandby.Remote ActiveStatusHealthStatus
主备倒换 /bmc/kepler/Managers/1/ActiveStandby/Local bmc.kepler.Managers.ActiveStandby.Local SwitchStatus 方法

评审点

1、复用web接口支持查询主备状态和主备倒换

2、复用v2 cli接口支持查询主备状态和主备倒换

3、新增redfish接口支持查询主备状态和主备倒换

详细描述

评审点一:Web 接口(复用EMM URL + 输出属性适配)

项目 说明
接口名称 查询主备状态
URL https://device_ip/UI/Rest/BMCSettings/Failover
操作类型 GET
复用策略 保持 URL 不变,修改后端接口映射配置

属性输出说明

一级属性 二级属性 类型 示例 描述
SMM / Array - 管理板信息列表
Id Number 1 管理板 ID(1=SMM1,2=SMM2)
ActiveStatus Number 1 主备状态:1=主用,0=备用
CommunicationStatus Number 1 通信状态:1=正常,0=异常
{
    "SMM":[
		{	"Id": 1,
			"ActiveStatus": 1,
			"CommunicationStatus": 1
		
		},
		{
			"Id": 2,
			"ActiveStatus": 0,
			"CommunicationStatus": 1
		}
	]
}
项目 说明
接口名称 执行主备倒换
URL https://device_ip/UI/Rest/BMCSettings/Failover/ForceFailover
操作类型 POST
复用策略 保持 URL 不变,修改后端接口映射配置,调用新 D-Bus 服务 SwitchStatus 方法

评审点二:CLI 接口(复用v2 + 适配)

项目 说明
命令名称 查询主备状态
命令格式 ipmcget [ -l smm ] -d redundancy
复用策略 保持命令格式不变,修改 CLI 接口映射配置
输出格式 参考原格式如下
ipmcget -l smm -d redundancy
The Redundancy States of SMMs:
SMM1: Present(active)*
SMM2: Present(standby)‘

* = The SMM you are currently logged into.
项目 说明
命令名称 执行主备倒换
命令格式 ipmcset [ -l smm ] -d failover -v 1
复用策略 保持命令格式不变,修改 CLI 接口映射配置,调用新 D-Bus 服务 SwitchStatus 方法

评审点三:Redfish 接口(新增)

3.1 查询主备状态

项目 说明
功能 查询主备状态
URI /redfish/v1/Managers/{ManagerId}/Oem/ActiveStandby
操作类型 GET
新增原因 标准 Redfish Manager 资源无主备状态字段
返回示例 {"LocalActiveStatus": "Active", "RemoteActiveStatus": "Standby"}

属性输出说明

一级属性 二级属性 类型 示例 描述
SMM / Array - 管理板信息列表
Id Number 1 管理板 ID(1=SMM1,2=SMM2)
ActiveStatus Number 1 主备状态:1=主用,0=备用
CommunicationStatus Number 1 通信状态:1=正常,0=异常
{
    "SMM":[
		{	"Id": 1,
			"ActiveStatus": 1,
			"CommunicationStatus": 1
		
		},
		{
			"Id": 2,
			"ActiveStatus": 0,
			"CommunicationStatus": 1
		}
	]
}

3.2 执行主备倒换

项目 说明
功能 执行主备倒换
URI /redfish/v1/Managers/{ManagerId}/Actions/Manager.ForceFailover
操作类型 POST
实现方式 调用新 D-Bus 服务 SwitchStatus 方法