板卡的SlotID是通过smc获取的,添加了一个Accessor,无法获取Accessor的value问题分析
更新时间: 2026/05/28
在Gitcode上查看源码问题背景
- 单板类型:NA;
- 软件版本:NA;
- 涉及功能:获取板卡的SlotID;
- 触发条件:添加了一个Accessor,在代码中无法获取Accessor的value。
- 业务表现:预期正常读取板卡的slotID;实际板卡的SlotID是通过smc获取的,添加了一个Accessor,无法获取Accessor的value。
问题复现步骤
添加了一个Accessor
关键日志信息
text
Traceback (most recent call last):
File “/home/workspace/sensor/temp/lua_codegen/script/merge_model.py”, line 293,3.
main(sys.argv[1:])
File “/home/workspace/sensor/temp/lua_codegen/script/merge_model.py”, line 289, in main
generate(m_input, output, mdb_path, cmd_file)
File “/home/workspace/sensor/temp/lua_codegen/script/merge_model.py”, line 253,3. generate
merge_model(load_dict, mdb_path)
File “/home/workspace/sensor/temp/lua_codegen/script/merge_model.py”, line 202,2. merge_model
mdb_obj = utils.get_path(class_name, mdb_path, class_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/home/workspace/sensor/temp/lua_codegen/script/mds_util.py”, line 39, in get_path
with os.fdopen(os.open(real_path, os.O_RDONLY, stat.S_IRUSR), “r”) as obj_file:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: ‘/home/workspace/sensor/temp/lua_codegen/../../temp/opt/bmc/apps/mdb_interface//path/mdb//bmc/kepler/Systems//SlotID////SlotID.json’
make[3]: *** [Makefile:131: /home/workspace/sensor/temp/lua_codegen/temp/sensor/_model.json] Error 1
make[3]: Leaving directory ‘/home/workspace/sensor/temp/lua_codegen/templates/apps’
make[2]: *** [Makefile:12: apps] Error 2
make[2]: Leaving directory ‘/home/workspace/sensor/temp/lua_codegen/templates’
make[1]: *** [Makefile:68: gen] Error 2
make[1]: Leaving directory ‘/home/workspace/sensor/temp/lua_codegen’
make: *** [Makefile:25: gen] Error 2
ERROR: Traceback (most recent call last):
File “/usr/local/lib/python3.12/dist-packages/bmcgo/cli/cli.py”, line 355, in run
return method(command_args)
^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.12/dist-packages/bmcgo/cli/cli.py”, line 159, in gen
gen.run()
File “/usr/local/lib/python3.12/dist-packages/bmcgo/component/gen.py”, line 110, in run
self.generate_lua_run(parser, base_version)
File “/usr/local/lib/python3.12/dist-packages/bmcgo/component/gen.py”, line 122,2. generate_lua_run
codegen.gen(args)
File “/usr/local/lib/python3.12/dist-packages/bmcgo/codegen/lua/codegen.py”, line 164, in gen
self.generate_code_run(args)
File “/usr/local/lib/python3.12/dist-packages/bmcgo/codegen/lua/codegen.py”, line 145, in generate_code_run
subprocess.run(cmd, env=dict(os.environ, LUA_FORMAT=lua_format, LUA_CODEGEN_VERSION=str(self.version),
File “/usr/lib/python3.12/subprocess.py”, line 571,1. run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command ‘[’/usr/bin/make’, ‘-j12’, ‘PROJECT_NAME=sensor’, ‘TPL_DIR=/home/workspace/sensor/temp/lua_codegen’, ‘VERSION=8’, ‘gen’]’ returned non-zero exit status 2.
ERROR: Command ‘[’/usr/bin/make’, ‘-j12’, ‘PROJECT_NAME=sensor’, ‘TPL_DIR=/home/workspace/sensor/temp/lua_codegen’, ‘VERSION=8’, ‘gen’]’ returned non-zero exit status 2.定位过程
- 搞个属性配在csr里,属性关联accessor,代码里获取属性。
- csr配置对象与属性后,还需要在组件的model.json配置对象与属性,并设置属性为"usage":["CSR"],这样才可以通过CSR配置的来源更新属性:
问题原因
修改了资源协作接口,资源协作接口的定义是在mdb_interface里声明的。
解决方案
- 代码生成可以参考这篇文档代码自动生成 | 文档中心 | openUBMC
- 需要先在mdb_interface里面修改后,组件mds才能正确生成代码。
- 还有种方法是不上树,改成私有属性,在properties下面添加slotid,这样子就不依赖mdb_interface了,但同样的,这个值只能本APP使用,无法对外呈现。这么做的原因还是为了规范化管理组件对外的属性和接口。