2.3.6. 管理コマンドの実行方法
管理コマンドを実行するには、POST メソッドで /request
エンドポイントを使用します。この方法では、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
は引数が取る値のタイプを指定し、range
は引数の許容される値の範囲を指定し、req
は引数が必要かどうかを指定します。この例では、引数はepoch
で、引数が取る値のタイプは integer で、許可される値の範囲は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>
は、ユーザー名に置き換えます。 -
<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 ファイル