2.3.6. 如何执行管理命令?


使用 /request 端点和 POST 方法执行管理命令。通过这种方法,您甚至可以使用不受 API 直接支持的命令,但在 Ceph 源代码中的 src/mon/MonCommands.h 文件中定义。例如,在构建使用 API 您自己的应用时,这非常有用。

Python
  1. 查看 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 lsname 位指定命令具有的参数的名称,type 指定参数采用的值类型,范围 指定参数接受的值的范围,而 req 指定是否需要该参数。在本例中,参数是 epoch,参数采用的值类型是整数,接受的值的范围是 0,参数是可选的。

  2. 在 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()

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.