背景
当前主备管理方案已支持通过硬件信号获取远程单板的主备状态,并提供了 CSR 配置属性用于主备决策和异常检测。为满足上层管理软件(Web、CLI、Redfish)对主备状态的查询和倒换控制需求,需要提供北向接口。
整体方案
| 接口类型 |
策略 |
说明 |
| Web 接口 |
复用EMM管理 + 映射器适配 |
保持 URL 不变,通过接口映射层转换返回数据格式 |
| CLI 接口 |
复用v2 + 映射器适配 |
保持命令格式不变,通过接口映射层转换输出格式 |
| Redfish 接口 |
新增 |
标准 Redfish 无主备状态查询和倒换接口,需新增 |
依赖 D-Bus 服务:
| 服务 |
路径 |
接口 |
属性/方法 |
| 主备状态查询 |
/bmc/kepler/Managers/1/ActiveStandby/Local |
bmc.kepler.Managers.ActiveStandby.Local |
ActiveStatus、HealthStatus |
| 对板状态查询 |
/bmc/kepler/Managers/1/ActiveStandby/Remote |
bmc.kepler.Managers.ActiveStandby.Remote |
ActiveStatus、HealthStatus |
| 主备倒换 |
/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 方法 |