2.3.6. 如何执行管理命令?
使用 /request
端点和 POST 方法执行管理命令。通过这种方法,您甚至可以使用不受 API 直接支持的命令,但在 Ceph 源代码中的 src/mon/MonCommands.h
文件中定义。例如,在构建使用 API 您自己的应用时,这非常有用。
Python
查看
src/mon/MonCommands.h
,找到您要在 API 中执行的命令,例如:COMMAND("osd ls " \ "name=epoch,type=CephInt,range=0,req=false", \ "show all OSD ids", "osd", "r", "cli,rest")
命令是
osd ls
。name
位指定命令具有的参数的名称,type
指定参数采用的值类型,范围
指定参数接受的值的范围,而req
指定是否需要该参数。在本例中,参数是epoch
,参数采用的值类型是整数,接受的值的范围是0
,参数是可选的。在 Python 解释器中输入:
$ python >> import requests >> result = requests.post( 'https://<ceph-mgr>:8003/request', json={'prefix': '<command>', <argument>:<value>}, auth=("<user>", "<password>") ) >> print result.json()
替换 :
-
<ceph-mgr>
,带有活跃的ceph-mgr
实例,节点的 IP 地址或短主机名 -
<command>
,带有在src/mon/MonCommands.h
文件中列出的命令 -
<argument>
带有src/mon/MonCommands.h
文件中列出的命令参数,如果参数是可选的,您可以省略它 -
<value>
带有参数的值 -
<user>
with user name -
<password>
和用户的密码
例如,使用
osd ls epoch 0
命令:将<command>
替换为osd ls
,<argument>
替换为epoch
,<value>
替换为0
:$ python >> import requests >> result = requests.post( 'https://ceph-node1:8003/request', json={'prefix': 'osd ls', 'epoch': 0}, auth=("ceph-user", "<password>") ) >> print result.json()
如果您使用自签名证书,请使用
verify=False
选项:$ python >> import requests >> result = requests.post( 'https://<ceph-mgr>:8003/request', json={'prefix': '<command>', <optional_argument>:<value>}, auth=("<user>", "<password>"), verify=False ) >> print result.json()
-
其它资源
- GitHub 上的 src/mon/MonCommands.h 文件