面板版本:Linux面板11.0.0
系统版本:OpenCloudOS 9.2 x86_64(Py3.7.16)
浏览器版本:
问题现象:
添加了一个docker仓库以后,再次添加同名的仓库时,出现键不存在的问题,报错信息如下:
出错了,面板运行时发生错误!KeyError: 'reg_url'
Traceback (most recent call last): File "/www/server/panel/BTPanel/__init__.py", line 2539, in publicObject res = run_obj.run(toObject, defs, get) File "/www/server/panel/BTPanel/__init__.py", line 2486, in run result = getattr(toObject, get.action)(get) File "class/panelController.py", line 81, in model result = PluginLoader.module_run(module_name,def_name,pdata) File "/www/server/panel/class/btdockerModel/registryModel.py", line 48, in add if r['reg_name'] == args.name and r["reg_url"] == args.registry and r['username'] == args.username:KeyError: 'reg_url'
重现方式:
1. 添加一个仓库
2. 再添加一个与刚才仓库同名的仓库
解决方式:
仓库列表中仓库地址的键是url,把/www/server/panel/class/btdockerModel/registryModel.py中48行和51行的r["reg_url"]都改为r["url"]以后就正常了
而且这个逻辑也有问题,从数据库中拿到的仓库列表中的用户名是经过加密的,在循环内是直接使用未加密的用户名跟加密的用户名进行比较,这样导致的就是仓库名、仓库地址、用户名三个信息都是一致的也会正常添加。经过实际测试确实如此 |
|
|
|