定制化redfish的post的空响应体失败问题分析
更新时间: 2026/06/02
在Gitcode上查看源码问题背景
- 单板类型:Atlas 800I A3;
- 软件版本:openubmc 2512_lts;
- 涉及功能:redfish,收集日志,task;
- 触发条件:现在需要实现一个无参POST接口/redfish/v1/Managers/1/LogServices/Actions/Oem/openUBMC/CollectNPULog,执行该接口操作。
- 业务表现:预期返回值200时响应体为空,返回值非200时返回错误信息;实际返回值200时响应体非空。
问题复现步骤
postman下发post接口/redfish/v1/Managers/1/LogServices/Actions/Oem/openUBMC/CollectNPULog,请求体为空,确认返回的响应体。
关键日志信息
定位过程
- 尝试GetMessageId用Script,直接return lua_nil,发现不起作用;
- RspBody能直接用Formula调脚本里面的函数rsp_postprocess,发现不起作用;
- 参考Redfish定制指南写的CTCC/src/plugins/redfish/custom_request_response.lua影响到了所有的redfish请求的返回体,但是实际只需要定制特定的几个URL的请求的返回体,不是所有的;
- 确认修改响应体的位置,尝试修改;
问题原因
redfish接口组件代码的RspBody中缺失需要增加返回200的空白响应体的代码及缺失lua处理响应体文件。
解决方案
需要在当前代码中添加风扇在位状态及是否位双胞胎风扇的判断,风扇不在位的情况下,level中填入NA或者N/A,而不是写入风扇列表结构体中的风扇转速信息。具体修改如下:
接口的RspBody中增加ctcc_remove_action_format: 新增文件src/plugins/redfish/custom_request_response.lua,内容如下: CMakeLists.txt中增加install命令: