rados 命令行函数 调试 ceph python

简介: rados 命令行函数 调试 ceph python

rados 报错

cmd = json.dumps({“prefix”: “osd pool ls detail”,“format”: “json”})
r = cluster.mon_command(cmd,b"")
err:
(-22, ‘’, u’command not known’)

故事开局


一天下午小k 在调试 cinder 项目。 其中调用了 ceph rados 接口。

在命令行中 执行 ceph osd pool ls detail 是ok的。

但是在 rades command 接口中调用 detail 是有错误的。

cmd = json.dumps({"prefix": "osd pool ls detail","format": "json"})
r = cluster.mon_command(cmd,b"detail") 
print(r)
python learn_rados.py 
-->
(-22, '', u'command not known')


但是更奇怪的是 osd pool ls 却可以执行成功。

cmd = json.dumps({"prefix": "osd pool ls detail","format": "json"})
r = cluster.mon_command(cmd,b"detail") 
print(r)
python learn_rados.py 
-->
(0, '["volumes","backups","nvme","rados_create_pool"]', u'')


解决思路

搞不定,求老板,滑稽。谁让我家老板都是 码农出身。

老板告诉我,官方的 /usr/bin/ceph 可以正常执行 ceph osd pool ls detail

你可以去调试一下 python 代码呀。

命令行 调试 python

python -m pdb  /root/codes/ceph.py osd pool ls detail

vscode 界面调试

记得在 调试设置中, 设置 命令参数

cd /root/codes ; /usr/bin/env /usr/bin/python /root/.vscode-server/extensions/ms-python.python-2020.12.424452561/pythonFiles/lib/python/debugpy/launcher 14937 -- /root/codes/ceph.py osd pool ls detail 

解决问题

cmd = json.dumps({"prefix": "osd pool ls","detail":"detail","format": "json"})
r = cluster.mon_command(cmd,b"") 
print(r)
-->
python learn_rados.py 
(0, '[{"pool_id":1,"pool_name":"volumes","create_time":"2020-12-16 21:02:52.159080","flags":8193,"flags_names":"hashpspool,selfmanaged_snaps","type":1,"size":2,


vscode截图


相关文章
|
3天前
|
Serverless 数据处理 数据库
Python函数的多返回值详解
Python函数的多返回值详解
6 1
|
3天前
|
数据处理 Python
Python函数:深入理解与应用
Python函数:深入理解与应用
6 1
|
3天前
|
算法 Python
Python函数的嵌套调用:深入理解与应用
Python函数的嵌套调用:深入理解与应用
9 1
|
3天前
|
IDE 开发工具 开发者
Python函数说明文档:编写清晰易懂的文档字符串
Python函数说明文档:编写清晰易懂的文档字符串
7 1
|
3天前
|
Python
Python函数的返回值深入解析
Python函数的返回值深入解析
7 1
|
3天前
|
存储 Python
Python函数参数详解
Python函数参数详解
8 1
|
4天前
|
Python
Python中的函数
Python中的函数
|
4天前
|
Python
Python 内置函数
Python 内置函数
|
4天前
|
自然语言处理 Python
Python 函数
Python 函数
11 0
|
4天前
|
Python
Python函数式编程自带函数
Python函数式编程自带函数
6 1