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截图


相关文章
|
7天前
|
数据挖掘 数据处理 索引
python常用pandas函数nlargest / nsmallest及其手动实现
python常用pandas函数nlargest / nsmallest及其手动实现
23 0
|
2天前
|
Python 容器
python内置函数、数学模块、随机模块(二)
python内置函数、数学模块、随机模块(二)
|
2天前
|
索引 Python
python内置函数、数学模块、随机模块(一)
python内置函数、数学模块、随机模块(一)
|
2天前
|
Python
python函数的返回值、嵌套方式以及函数中的变量(二)
python函数的返回值、嵌套方式以及函数中的变量(二)
|
2天前
|
存储 Python 容器
python函数的返回值、嵌套方式以及函数中的变量(一)
python函数的返回值、嵌套方式以及函数中的变量(一)
|
2天前
|
Python
深度解读python的函数(二):
深度解读python的函数(二)
|
4天前
|
人工智能 数据挖掘 Python
Python pandas中read_csv函数的io参数
Python pandas中read_csv函数的io参数
15 5
|
7天前
|
机器学习/深度学习 Python
python自定义日历库,与对应calendar库函数功能基本一致
python自定义日历库,与对应calendar库函数功能基本一致
31 0
|
7天前
|
机器学习/深度学习 索引 Python
python calendar内置日历库函数方法
python calendar内置日历库函数方法
27 2
|
10天前
|
缓存 开发者 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器是一种强大的工具,它允许开发者在不改变原始函数代码的情况下,动态地增强函数的功能。本文将介绍装饰器的基本概念、使用场景以及实际应用案例,帮助读者更好地理解和运用这一Python编程的利器。