背景
为满足上层管理软件对主备状态的查询和主备倒换能力,需要提供北向接口(Web、CLI、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 方法 |
关联ISSUE
[需求]: 支持主备管理的北向接口-rackmount-AtomGit | GitCode
评审点
1、web接口支持查询主备状态和发送主备倒换命令
2、cli接口支持查询主备状态和发送主备倒换命令
3、redfish接口支持查询主备状态和发送主备倒换命令
详细描述
评审点一:web接口支持查询主备状态和发送主备倒换命令
| 项目 | 说明 |
|---|---|
| 接口名称 | 查询主备状态 |
| URL | https://device_ip/UI/Rest/BMCSettings/Failover |
| 操作类型 | GET |
| 复用策略 | 保持 URL 不变,修改后端接口映射配置 |
新增属性输出说明
| 一级属性 | 二级属性 | 类型 | 示例 | 描述 |
|---|---|---|---|---|
| ActiveIndex | / | Number | 1 | 原有属性,主用板索引 |
| Standbys | / | Array | - | 新增属性,备用节点列表 |
| StandbyIndex | Number | 2 | 原有属性,备用板索引 | |
| StandbyPresent | Number | 1 | 原有属性,在位状态:1=在位,0=不在位 | |
| SyncStatus | String | “Synchronized” | 原有属性,同步状态 |
{
"ActiveIndex": 1,
"Standbys": [
{
"StandbyIndex": 2,
"StandbyPresent": 1,
"SyncStatus": "Synchronized"
},
{
"StandbyIndex": 3,
"StandbyPresent": 1,
"SyncStatus": "Synchronized"
},
{
"StandbyIndex": 4,
"StandbyPresent": 0,
"SyncStatus": "Unsynchronized"
}
]
}
| 项目 | 说明 |
|---|---|
| 接口名称 | 执行主备倒换 |
| URL | https://device_ip/UI/Rest/BMCSettings/Failover/ForceFailover |
| 操作类型 | POST |
| 复用策略 | 保持 URL 不变,修改后端接口映射配置,调用新 D-Bus 服务 SwitchStatus 方法 |
评审点二:cli接口支持查询主备状态和发送主备倒换命令
| 项目 | 说明 |
|---|---|
| 命令名称 | 查询主备状态 |
| 命令格式 | 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接口支持查询主备状态和发送主备倒换命令
| 项目 | 说明 |
|---|---|
| 功能 | 查询主备状态 |
| URI | /redfish/v1/Managers/{ManagerId}/Failover |
| 操作类型 | GET |
| 新增原因 | 标准 Redfish Manager 资源无主备状态字段 |
属性输出说明
| 一级属性 | 二级属性 | 类型 | 示例 | 描述 |
|---|---|---|---|---|
| ActiveIndex | / | Number | 1 | 原有属性,主用板索引 |
| Standbys | / | Array | - | 新增属性,备用节点列表 |
| StandbyIndex | Number | 2 | 原有属性,备用板索引 | |
| StandbyPresent | Number | 1 | 原有属性,在位状态:1=在位,0=不在位 | |
| SyncStatus | String | “Synchronized” | 原有属性,同步状态 |
{
"ActiveIndex": 1,
"Standbys": [
{
"StandbyIndex": 2,
"StandbyPresent": 1,
"SyncStatus": "Synchronized"
},
{
"StandbyIndex": 3,
"StandbyPresent": 1,
"SyncStatus": "Synchronized"
},
{
"StandbyIndex": 4,
"StandbyPresent": 0,
"SyncStatus": "Unsynchronized"
}
]
}
3.2 执行主备倒换
| 项目 | 说明 |
|---|---|
| 功能 | 执行主备倒换 |
| URI | /redfish/v1/Managers/{ManagerId}/Failover/ForceFailover |
| 操作类型 | POST |
| 实现方式 | 调用新 D-Bus 服务 SwitchStatus 方法 |