OpenBMC:WebUI 与后端接口交互流程
OpenBMCWebUI 与后端接口交互流程1. WebUI 的作用OpenBMC WebUI 为管理员提供图形化管理界面常见功能包括查看服务器状态读取传感器数据控制主机电源查看事件日志配置用户和网络管理固件版本使用远程控制台查看硬件 InventoryWebUI 本身通常不直接访问 D-Bus也不会直接操作 GPIO、I2C 或其他硬件接口。WebUI ↓ HTTPS bmcweb ↓ D-Bus OpenBMC 后台服务 ↓ 硬件驱动2. WebUI 与 bmcwebWebUI 通常以浏览器端单页应用的形式运行。页面所需的 HTML、JavaScript、CSS 和图片资源由 BMC Web 服务提供。用户打开 BMC 地址时浏览器请求页面 ↓ bmcweb 返回静态资源 ↓ 浏览器加载 WebUI ↓ WebUI 调用 Redfish API ↓ 页面显示管理数据bmcweb同时承担以下职责提供 HTTPS 服务提供 WebUI 静态资源实现 Redfish 接口管理登录会话检查用户权限访问 D-Bus 后台服务支持事件订阅和远程控制功能3. 登录认证流程WebUI 登录时通常通过 Redfish Session Service 创建会话。用户输入账号和密码 ↓ WebUI 发送登录请求 ↓ bmcweb 调用认证机制 ↓ 验证用户、密码和账号状态 ↓ 创建 Session ↓ 返回 X-Auth-Token登录请求示例POST /redfish/v1/SessionService/Sessions Content-Type: application/json { UserName: admin, Password: password }后续请求携带 TokenX-Auth-Token: session-tokenbmcweb 收到请求后还会检查当前用户角色是否拥有访问该接口的权限。4. 数据查询流程以 WebUI 显示温度传感器为例WebUI 请求 Sensors 资源 ↓ bmcweb 接收 Redfish GET 请求 ↓ 通过 ObjectMapper 查找 Sensor 对象 ↓ 读取 Sensor.Value 和 Threshold ↓ 读取 Sensor 与 Chassis 的关联关系 ↓ 转换为 Redfish JSON ↓ WebUI 更新页面请求示例GET /redfish/v1/Chassis/chassis/Sensors返回数据可能包含{ Name: CPU0 Temp, Reading: 52.5, ReadingUnits: Cel, Status: { Health: OK, State: Enabled } }WebUI 只处理 Redfish 数据不需要了解传感器来自 hwmon、PMBus 还是其他接口。5. 控制请求流程以主机上电为例WebUI 会发送一个 Redfish ActionPOST /redfish/v1/Systems/system/Actions/ComputerSystem.Reset { ResetType: On }完整流程如下用户点击上电 ↓ WebUI 发送 POST 请求 ↓ bmcweb 检查 Session 和权限 ↓ 解析 ResetType ↓ 设置 D-Bus 电源转换属性 ↓ 电源控制服务执行上电 ↓ 主机电源状态变化 ↓ WebUI 重新查询并刷新状态网络设置、用户管理和日志清理等操作也采用类似模式只是对应的 Redfish 路径和后台 D-Bus 服务不同。6. 常用 HTTP 方法WebUI 与 Redfish 后端交互时主要使用以下方法方法用途GET查询资源POST创建资源或执行动作PATCH修改资源属性DELETE删除资源HEAD查询资源响应头例如修改 BMC 主机名PATCH /redfish/v1/Managers/bmc/NetworkProtocol创建用户、启动固件升级和执行电源动作则通常使用POST。7. 异步任务与事件更新固件升级、日志导出和大文件上传等操作无法立即完成bmcweb 可以返回 Task 或 Job 资源。WebUI 发起操作 ↓ bmcweb 创建异步任务 ↓ 返回任务地址 ↓ WebUI 周期查询任务状态 ↓ 显示进度和执行结果任务状态可能包括New Starting Running Completed Exception Cancelled实时状态也可以通过事件订阅或服务器推送机制更新减少页面频繁轮询。8. 总结WebUI 与 OpenBMC 后端的交互链路为浏览器 WebUI ↓ HTTPS / JSON bmcweb ↓ D-Bus 传感器、电源、日志、用户和升级服务 ↓ Linux 内核及硬件WebUI 负责界面和用户操作bmcweb 负责认证、权限检查及 Redfish 转换D-Bus 服务负责具体业务内核驱动负责访问硬件。