openubmc 对外扩展接口-redfish

发布时间:2026/9/26 19:31:48
openubmc 对外扩展接口-redfish redfish 接口openUBMC的SDK已经提供了完备的Redfish协议管理能力并提供了强大的映射配置器简化北向接口的适配工作量。具体关于接口映射配置的介绍请参考《接口映射配置》映射配置增加 ​redfish 是一个独立的组件使用时先获取当前Redfish相关接口的映射配置仓cd /home/workspace git clone https://gitcode.com/openUBMC/rackmount.git打开rackmount文件夹后我们可以发现在interface_config/redfish/mapping_config下每一个文件对应着一个Redfish的路径。我们希望扩展一个Redfish接口路径为/redfish/v1/OpenUBMC首先在interface_config/redfish/mapping_config下创建文件OpenUBMC.json并粘贴以下代码{ Resources: [ { Uri: /redfish/v1/OpenUBMC, Interfaces: [ { Type: GET, RspBody: { odata.id: /redfish/v1/OpenUBMC, odata.type: #OpenUBMC.OpenUBMC, Id: OpenUBMC, Name: OpenUBMC, WelcomeMessage: ${ProcessingFlow[1]/Destination/WelcomeMessage} }, ProcessingFlow: [ { Type: Property, Path: /bmc/demo/MyMDSModel/1, Interface: bmc.demo.OpenUBMC.Community, Destination: { WelcomeMessage: WelcomeMessage } } ] } ] } ] }这里我们通过接口映射配置不仅将Redfish的uri资源进行了具体的定义并将Redfish的uri资源与openUBMC资源协作接口关联了起来开发者无需再编写Redfish的接口代码逻辑。组件构建 ​由于修改了rackmount仓库因此我们需要对rackmount仓库进行重新构建。为了和之前版本进行区分我们需要将rackmount/mds/service.json中的version字段进行更新bingo build --stagestable构建错误如果直接进行构建会发现出现以下错误rackmount/1.110.151openubmc/stable: ERROR: Package b351ec081a9b090aa4bbeeaf6d9f94e2f84ec30b build failed rackmount/1.110.151openubmc/stable: WARN: Build folder /root/.conan2/p/b/rackmcdea33fc3084c/b/.build/Debug Formatted output saved to /tmp/tmpcrg23dju.graph.json ERROR: rackmount/1.110.151openubmc/stable: Error in build() method, line 66 MapperCheck.check() JSONDecodeError: Expecting value: line 28 column 29 (char 1158) ERROR: 执行命令 conan create --name rackmount --version 1.110.151 . -pr:h profile.luajit.ini -pr:b profile.dt.ini -s:h build_typeDebug --user openubmc --channel stable -o */*:enable_luajitTrue --buildrackmount/* --buildmissing -f json --out-file/tmp/tmpcrg23dju.graph.json -tf 错误, 日志: /root/.bmcgo_log/bingo.log ERROR: Command [conan, create, --name, rackmount, --version, 1.110.151, ., -pr:h, profile.luajit.ini, -pr:b, profile.dt.ini, -s:h, build_typeDebug, --user, openubmc, --channel, stable, -o, */*:enable_luajitTrue, --buildrackmount/*, --buildmissing, -f, json, --out-file/tmp/tmpcrg23dju.graph.json, -tf] returned non-zero exit status 1. ERROR: 请查看日志信息原因Redfish 接口必须在 PrivilegeMap 里声明权限。构建时MapperCheck.check_privilege_map()一旦 PrivilegeMap 检查返回失败就会写死打印 NULL。检查逻辑是每个 Redfish GET 资源都必须在 PrivilegeMap 里声明权限。发现 OpenUBMC 没有配置后check_get_uri() 直接 return 停掉后面那些本来有 GET 的资源(Account、Chassis、Systems 等)都没登记进父资源表。接着检查 POST Action 时找不到父资源就刷出一长串「无法获取根资源」。我们在interface_config/redfish/mapping_config/OpenUBMC.json新增了URI/redfish/v1/OpenUBMC odata.type#OpenUBMC.OpenUBMC → 检查器用的类型名是 OpenUBMC PrivilegeMap.json 的 Mappings 里没有 Entity: OpenUBMC。但是在interface_config/redfish/mapping_config/AccountService/PrivilegeMap/PrivilegeMap.json的 Mappings 里没有 Entity:OpenUBMC。解决方案在interface_config/redfish/mapping_config/AccountService/PrivilegeMap/PrivilegeMap.json的 Mappings 里补一项和只读 GET 资源一样即可例如{ Entity: OpenUBMC, OperationMap: { GET: [ { Privilege: [Login] } ] } }这样就可以成功构建了。Created package revision 73509a8fdc12d10252fc7dafbf7eee53 Package b351ec081a9b090aa4bbeeaf6d9f94e2f84ec30b created Full package reference: rackmount/1.110.151openubmc/stable#b79e0304ae4852ab37a0bd8a6e093ba8:b351ec081a9b090aa4bbeeaf6d9f94e2f84ec30b#73509a8fdc12d10252fc7dafbf7eee53 Package folder /root/.conan2/p/b/rackmaa0b5f316b3f2/p Formatted output saved to /tmp/tmpfofshiv3.graph.json sr 文件检查开始 没有找到[sr]后缀的文件 sr 文件检查结束 构建成功不要去注释 check_privilege_map()那只是个人出包的临时绕过不是修法。整包构建 ​组件添加在manifest/build/product/BMC/openUBMC/manifest.yml文件dependencies:下面添加我们刚构建的组件dependencies: - conan: rackmount/1.110.151openubmc/stable整包构建cd /home/workspace/manifest bingo build构建完成后便可在manifest/output中查看构建包。整包测试 ​无硬件环境验证组件集成如果您当前没有真实的BMC硬件可以通过检查整包构建产物的方式验证新组件已被正确集成到产品包中。整包构建过程中会先在temp构建工作区生成集成后的rootfs目录(tmp_root)它就是hpm包内rootfs镜像的直接来源其中的文件会原样打包进升级包。因此只需检查该目录# 查看新增加的OpenUBMC.json ls temp/build_openUBMC_debug_dev/tmp_root/opt/bmc/apps/redfish/interface_config/mapping_config/OpenUBMC.json不会出现成opt/bmc/apps/rackmount这种独立目录。my_app是 Kepler 应用打包路径就是opt/bmc/apps/my_app所以你能在apps/下看到同名文件夹。rackmount是北向映射器package()会把内容拆进现有接口组件里opt/bmc/apps/redfish/ opt/bmc/apps/web_backend/ opt/bmc/apps/cli/ opt/bmc/apps/snmp/文档元数据在usr/share/doc/openubmc/rackmount/

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询