已关闭
[需求]: 【主备管理】提供主备倒换和状态查询的webrest/redfish/cli接口 #11
xingxingou创建于  8月3日关闭于  20 天前
xingxingou
8月3日 创建

感谢您为社区贡献新需求!请按照以下提示提供详细信息,以便我们更好地理解并跟进。

所属版本

openUBMC26.09

版本分支

openUBMC main

简要说明

提供主备状态查询和倒换的webrest/redfish/cli 接口。支持用户获取参与主备仲裁单板的主备状态,以及用户通过北向接口发起主备倒换

前置条件

BMC运行正常,且环境配置至少两块参与主备仲裁的单板

系统用户

运维人员

主成功场景

  1. 用户调用redfish接口查询单板主备状态与倒换接口;
  2. 用户调用命令行接口查询单板主备状态与倒换接口;
  3. 用户调用webrest接口查询单板主备状态与主备状态倒换;
  4. 主备倒换动作需要记录操作日志,倒换失败场景,需要记录失败原因。
    具体的接口以interface-sig评审为准。

非功能需求类型

不允许倒换场景增加日志打印,明确抑制倒换的原因。

兼容性影响评估

redfish接口为标准接口。cli接口与webrest接口与V2实现一致,接口兼容。

扩展场景(含异常场景)

倒换失败时接口提示失败原因
有单板不在位时显示不在位状态

周边依赖

无

约束

连续的主备倒换之间需要满足主备倒换时间间隔约束(主备倒换的资源树接口约束倒换间隔为15S)。不满足倒换时间间隔的倒换动作提示失败。

likedislike
openUBMC-robot
openUBMC-robot成员
8月3日 评论:

注意

此 Issue 需要负责人。 如果没有指派时, zhangbaocun 是默认的负责人

likedislike
openUBMC-robotopenUBMC-robot成员
8月3日 将 zhangbaocun 设为负责人
openUBMC-robotopenUBMC-robot成员
8月3日 添加了label:sig/sig-bmc-core
openUBMC-robot
openUBMC-robot成员
8月3日 评论:

欢迎来到 openUBMC 社区

Hey @xingxingou , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 说明文档 或 论坛 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

联系指引

有疑问可以联系 SIG: sig-bmc-core ,
维护者是: @L_Ling, @huanghan ,
优秀贡献者是: @duzhou13, @spjisgood .

likedislike
openUBMC-robotopenUBMC-robot成员
8月3日 关联了看板:openUBMC 26.09 需求看板
openUBMC-robot
openUBMC-robot成员
8月3日 评论:

Issue 工作流介绍

社区的需求和缺陷的工作流状态处于纳管中。

类型 上个状态 下个状态 评论命令 谁可以操作
需求 待办的 已接纳 /todo2accepted SIG组: sig-release-management (maintainer)
需求 已接纳 开发中 /accepted2developing 仓库成员角色: Maintainer, Committer, Contributor, Owner
需求 开发中 转测中 /developing2testing 仓库成员角色: Maintainer, Committer, Contributor, Owner
需求 转测中 待验收 /testing2UAT 仓库成员角色: Maintainer, Committer, Contributor, Owner
需求 待验收 已完成 /UAT2done SIG组: sig-QA (maintainer,committer)
需求 待办的 已挂起 /todo2suspended SIG组: sig-release-management (maintainer)
需求 已挂起 已接纳 /suspended2accepted SIG组: sig-release-management (maintainer)
需求 待办的 已拒绝 /todo2rejected SIG组: sig-release-management (maintainer)
需求 已拒绝 已接纳 /rejected2accepted SIG组: sig-release-management (maintainer)
likedislike
Xxingxingou
8月3日 修改了issue 的描述
Xxingxingou
8月3日 修改了issue 的描述
Xxingxingou
8月3日 修改了issue 的描述
Xxingxingou
8月3日 修改了issue 的描述
Xxingxingou
8月3日 修改了issue 的描述
wangjian成员
8月4日 评论:

/todo2accepted

likedislike
openUBMC-robotopenUBMC-robot成员
8月4日 issue状态由 待办的 改变为 已接纳
此处折叠了5条事件消息 查看更多
Zzhangbaocun成员
9月14日 移除了负责人 zhangbaocun
openUBMC-robot
openUBMC-robot成员
9月14日 评论:

注意

此 Issue 需要负责人。 如果没有指派时, zhangbaocun 是默认的负责人

likedislike
openUBMC-robotopenUBMC-robot成员
9月14日 将 zhangbaocun 设为负责人
Zzhangbaocun成员
9月14日 将 xingxingou 设为负责人,移除负责人 zhangbaocun
shuangjun成员
9月14日 评论:

/accepted2developing

likedislike
openUBMC-robot
openUBMC-robot成员
9月14日 评论:

Issue 工作流提示

您暂无Issue的工作流 已接纳 更改为 开发中 的操作权限,请联系有权限的成员。

likedislike
shuangjun成员
29 天前 评论:

/accepted2developing

likedislike
openUBMC-robotopenUBMC-robot成员
29 天前 issue状态由 已接纳 改变为 开发中
shuangjun成员
29 天前 评论:

/developing2UAT

likedislike
openUBMC-robotopenUBMC-robot成员
29 天前 issue状态由 开发中 改变为 待验收
zhaotianli成员
26 天前 评论:

PR #1493 回顾分析: 【40a703bea2767ace5c1bb6fccb740746】feat: 支持主备管理北向接口适配

仓库: openUBMC/rackmount
分支: cli → main
合并时间: 2026-09-17 22:54
作者: qq_44402975 (malfoy)
合入触发: L_Ling (/publish /lgtm /approve)

注:get-ai-review 未检索到 OpenClaw AI 检视记录(返回空)。本回顾纳入两类 AI/自动生成内容:openubmc-ci-bot 自动检视(3 轮检视报告 + 6 条 diff 意见)与 Richardli25 账号发布的 D14-D25 维度检视(08-25,含 8 个问题);另 atomgit-bot 早期代码审查为"✅ 未发现问题"。人工检视为 DataSculptor(2 条 diff 意见)与 L_Ling(合入前终审)。


1. AI 检视意见追踪

# 来源 AI 发现 级别 后续处理 说明
1 ci-bot 09-17 14:59 ReqBody 必填 id 未被处理流消费,Params: [0] 硬编码(ipmcset/ActiveStandbyMgmt.json:17) 建议 ✅ 已采纳修复 最终版移除 -v <id>/ReqBody,Usage 回归 ipmcset -d failover;"changed this line on 18a76c95"+回复"已适配"
2 ci-bot 09-17 15:00 get_active_index/get_standby_list pcall 返回值未校验即解引用 status_obj(web lua:24) 警告 ✅ 部分修复 get_standby_list 已改 if ok and status_obj;get_active_index 仍直接解引用(L_Ling 终审确认未改);回复"已适配"
3 ci-bot 09-17 17:24 ProcessingFlow[29] 越界,get_active_status 恒拿 nil → State 恒 Enabled(Managers.json:566) 警告 💬 已回复说明(误报) 开发者回复"误报";ci-bot 第三轮核实本仓 ProcessingFlow 为 1 基索引,[29] 正确指向新增 ActiveStandby/Local,不越界
4 ci-bot 09-17 17:24 缺位节点被拼接 (standby) 角色后缀,语义误导(_redundancy:14) 警告 💬 已回复说明 回复"同 v2 场景保持一致";L_Ling 建议在设计文档补充明确(设计帖未更新)
5 ci-bot 09-17 18:10 table.sort 对可能为 nil 的 id 数值比较,远端板不可达时抛 attempt to compare nil with number(cli lua:75) 警告 ⏳ 未响应 线程已 resolved 但无开发者回复、无代码改动;L_Ling 终审再次指出("已 resolved 但无开发者答复,请确认"),仍未改
6 ci-bot 09-17 18:10 is_has_active_and_standby 中 if ok 未判空对象即取 obj.ActiveStatus(web lua:71) 建议 💬 已回复说明 回复"此处若返回 OK 场景 obj 能拿到状态信息";代码未改
指标 结果
意见总数 6
已采纳并修复 1
部分修复 1
已回复说明(含误报澄清) 3
未响应(标记解决未改码) 1

2. 人工检视补充

  • 检视人: Richardli25 (zhaotianli)、DataSculptor (wangjian)、L_Ling (lixiaoning)、xingxingou(需求提出者)
  • 意见概要:
    • Richardli25(08-25 D14-D25 维度检视,8 个问题,无逐条回复机制):
      • [major] CLI 必选 id 未使用 → 后续版本已移除 ✅(与 ci-bot 意见 #1 同源);
      • [major] Web StandbyList 缺 SyncStatus → 设计帖已更新(现版 StandbyList 仅 Index/Present),与实现一致 ✅;
      • [major] CLI 成功回显 Success 与设计 2.2 文案不符 → 未闭环(L_Ling 终审仍在);
      • [major] obj.Presence 属性存在性存疑(设计依赖表仅列 ActiveStatus/CommunicationStatus)→ 未闭环(终审 #5 仍在);
      • [major] 判空不符合仓库惯例 → 部分(get_standby_list 已改);
      • [D21] State 动态化存量兼容风险 → 终审确认 ActiveStatus=nil 时返回 Enabled、非主备形态不误判,风险可控;
      • [D25] 换行/常量风格 2 项 minor。
    • DataSculptor(08-26,2 条 diff_comment,均已 resolved):
      • 硬编码实例 ID /Managers/1 应使用动态段引用 → 回复"已适配"+commit e3aad4b3;但 L_Ling 终审核实 Managers.json 与两个 web 文件仍硬编码(仅 Actions.json 用 ${Uri/managerid}),回复与最终代码不符 ⚠️;
      • 北向接口变更未附社区评审帖链接 → 回复"已附上",PR 描述已含 topic 5975 ✅。
    • L_Ling(09-17 21:07 合入前终审,6 项):get_active_index pcall 解引用、is_has_active_and_standby 空对象防护、table.sort nil 崩溃、/Managers/1 声明与代码不符、Presence 属性依赖、成功回显偏离设计。终审后 head 未再更新、无逐条回复,1 小时 47 分后 L_Ling /lgtm /approve 合入。
    • xingxingou 20:44 /lgtm(无标签权限,未生效)。
  • 解决状态: 人工 diff_comment 均 resolved;但终审 6 项中至少 3 项(table.sort nil、get_active_index 判空、/Managers/1 硬编码)无代码闭环即合入。

3. 评审贴覆盖情况

评审贴链接:【已评审】支持主备管理的北向接口材料评审

评审点 是否涵盖
评审点1:web 接口支持查询主备状态和发送主备倒换命令(1.1 GET /UI/Rest/BMCSettings/Failover;1.2 POST .../ForceFailover) ✅ 已涵盖(BMCSettings/ActiveStandbyMgmt.json + 插件;StandbyList 输出 Index/Present 与设计现版一致)
评审点2:cli 接口支持查询主备状态和发送主备倒换命令(2.1 ipmcget -d redundancy;2.2 ipmcset -d failover) ✅ 已涵盖(注意:成功回显为 Success,与设计 2.2 的 Change current board status successful. 不一致)
评审点3:redfish 接口支持查询主备状态和发送主备倒换命令(3.1 Managers Status.State;3.2 Manager.ForceFailover) ✅ 已涵盖(State 动态化 Enabled/StandbySpare/Absent、ForceFailover Action + ActionInfo、PrivilegeMap POST→ConfigureComponents 均与设计一致)

覆盖统计: 3/3

4. 总结

  • 无 OpenClaw AI 检视记录;openubmc-ci-bot 3 轮自动检视(评级 良好→一般→一般)+ 6 条 diff 意见覆盖了主要风险点(参数消费、pcall 判空、索引基制、排序 nil、角色后缀),其中 ProcessingFlow 越界一条经开发者"误报"回复后由第三轮报告自行更正(1 基索引)——多轮复核机制发挥了价值。
  • 开发者响应态度总体积极:09-17 当天至少 4 次 push(b4615ea1→e3aad4b3→777e1b76→18a76c95),对 diff 意见全部有"已适配/已附上/误报/同 v2 一致"等回复或代码动作。
  • 需关注的模式:
    1. "已适配"与最终代码不符 ×2(/Managers/1 硬编码仅 Actions.json 动态化、get_active_index 判空未改)——与 PR #1478 回顾发现的"标记解决≠实际改码"模式一致;
    2. table.sort nil 比较崩溃(远端板不可达时 ipmcget -d redundancy 直接异常)为终审点名的真实运行时风险,resolved 却无回复无改动即合入,建议尽快以后续 PR 修复((a.id or 0) < (b.id or 0))并补 get_active_index 的 ok 校验;
    3. 成功回显文案、缺位节点 (standby) 后缀行为未回写设计帖——建议更新设计 2.2 保持文档-实现一致。
  • 人工检视补充价值:Richardli25 早期维度检视推动了 -v id 移除与设计帖 StandbyList 收敛;DataSculptor 的合规提醒(动态段引用、评审帖链接)获得响应;L_Ling 终审承担最终质量把关(含对索引误报的澄清),但其 6 项问题未逐条闭环即 lgtm/approve 合入,遗留项依赖后续跟踪。

此回顾分析由 AI (OpenClaw + GLM-5-turbo) 完成

likedislike
zhaotianli成员
22 天前 评论:

PR #1608 回顾分析: fix: 修复主备管理redfish接口返回不一致问题

仓库: openUBMC/rackmount
分支: cli → main
合并时间: 2026-09-22 16:38
作者: qq_44402975 (malfoy)
合入触发: L_Ling (/lgtm /approve /publish)

注:get-ai-review 未检索到 OpenClaw AI 检视记录(返回空)。本回顾纳入两类 AI/自动生成内容:openubmc-ci-bot 自动检视(5 轮报告,1 条可选建议)与 Richardli25 账号发布的 D14-D25 维度检视(09-22 12:55,1 major + 1 minor);另 atomgit-bot 早期代码审查为"✅ 未发现问题"。本 PR 无人工 diff_comment,人工参与仅为 L_Ling 合入前 lgtm/approve 终审。


1. AI 检视意见追踪

# 来源 AI 发现 级别 后续处理 说明
1 Richardli25 09-22 12:55 (D23) Presence 未映射进 Managers.json ActiveStandby 步骤(ProcessingFlow[29])的 Destination,obj.Presence 恒为 nil → presence == 0 为死代码,备板不在位场景 State='Absent' 无法上报,设计 7478 核心目标未落地 major ✅ 已采纳修复 后续版本在 Destination 补充 "Presence": "Presence";ci-bot 第 5 轮(15:28,head 97363fe)核实"已确认修复"
2 Richardli25 09-22 12:55 (D25) 未更新 CHANGELOG.md(仓库惯例为每个修复 PR 增加版本条目) minor ✅ 已采纳修复 后续版本新增 ## [1.110.162] 条目并同步 mds/service.json 版本号 1.110.161→1.110.162;ci-bot 第 3 轮(14:53)核实一致
3 ci-bot 09-22 12:40 Lua 真值语义说明 + 可选提醒:Presence 字段缺失(nil)时新逻辑落入 active_status 分支而非返回 Absent;检视方自评"该字段对 ActiveBMC 对象恒有值,影响可忽略,视需要加固" 建议 ⏳ 未响应(可选,非阻塞) 无开发者回复、无加固改动;ci-bot 第 3/5 轮复认"实际不触发,非阻塞"
指标 结果
AI 意见总数 3
已采纳并修复 2
已回复说明 0
未响应(可选建议) 1

2. 人工检视补充

  • 检视人: L_Ling(终审)、zhangbaocun(合入校验)
  • 意见概要: 本 PR 无人工 diff_comment。人工参与均为流程性操作——开发者 2 次 /retest 重跑 CI;L_Ling 于 16:38 /lgtm /approve /publish 触发合入(距 major 修复确认 15:28 约 1 小时 10 分);zhangbaocun /check-pr 完成合入校验。
  • 解决状态: 不适用(无人工 diff 意见)。

3. 评审贴覆盖情况

评审贴链接:【已评审】主备管理资源协作接口:支持在位状态上树

评审点 是否涵盖
评审点1:现有资源协作接口 bmc.kepler.Managers.ActiveStandby.Status 下新增 Presence 属性(1=在位,0=不在位,只读,来源 CSR,无需持久化),使北向接口可获取在位状态 ✅ 已涵盖(Managers.json ActiveStandby/Local 步骤 Destination 新增 "Presence": "Presence" 映射落地属性上树;managers.lua get_active_status 按 presence == 0 返回 Absent、active_status == 0 返回 StandbySpare、否则 Enabled,消费链路完整)

覆盖统计: 1/1

4. 总结

  • AI 检视意见采纳率 100%(实质性意见):Richardli25 维度检视提出的 1 major(Presence Destination 映射缺失导致 'Absent' 分支死代码)+ 1 minor(CHANGELOG 未更新)均在当天由开发者经多次迭代(head f5f9904b → 2bad0847 → 97363fe)采纳修复,并由 ci-bot 多轮复核确认闭环后合入,"AI 发现 → 修复 → 复核确认"链路完整。
  • AI 检视的实质价值:初始版本仅含 managers.lua 单行真值修复(if not presence → if presence == 0),major 发现指出单独该修复无法落地设计 7478 的在位语义(Presence 恒 nil、Absent 分支不可达),推动补齐 Managers.json 映射——最终 diff 才真正达成"备板不在位 → State='Absent'"的设计目标。major 从提出(12:55)到修复确认(15:28)历时约 2.5 小时。
  • 与前序 PR 的闭环:PR #1493 终审遗留的"Presence 属性存在性存疑"问题,经由评审贴 7478(新增 Presence 属性上树)+ 本 PR 映射落地形成完整闭环。
  • 唯一未响应项为 ci-bot 的可选加固建议(Presence nil 边界防护),检视方自评影响可忽略、且 ActiveBMC 对象恒提供该字段,非阻塞。
  • 值得关注的模式:本 PR 无任何人工 diff_comment,质量把关完全依赖 AI 检视 + ci-bot 多轮复核 + L_Ling 流程性终审。对单行修复类 PR 该模式运转良好(ci-bot 评级全程"良好",CI 全绿、AI Review SUCCESS),但设计落地型变更(本 PR 实际涉及资源协作接口属性映射)无人工技术复核意见即合入,建议此类场景保留至少一条人工技术检视记录。

此回顾分析由 AI (OpenClaw + GLM-5-turbo) 完成

likedislike
xueqiuping成员
20 天前 评论:

/UAT2done

likedislike
openUBMC-robotopenUBMC-robot成员
20 天前 issue状态由 待验收 改变为 已完成
openUBMC-robotopenUBMC-robot成员
20 天前 关闭了 issue