REST APIは、WebのプロトコルHTTPを使ったネットワーク経由のインタフェースです。
次のような特徴を持ちます。
- ステートレスなクライアント/サーバプロトコル - すべてのリソースに適用できる操作セット - すべてのリソースは URI で表される一意的なアドレスを持つ - アプリケーションの情報と状態遷移の両方を扱う
LXCFのREST APIは、主にHTTPのPOSTとGETの操作を使用します。
また、APIの発行時にはパスワードを付けてPOSTを行います。パスワードは空にすることができます。
LXCFのAPI操作は、HTTPのPOST操作とGET操作を使用します。
POST操作でAPIの発行をします。
GET操作では、POST操作のためのhtmlを返します。
curlのようなネットワークツールを使用する場合には、POST操作だけでAPIを操作できます。
たとえば、コンテナの一覧を表示するlistは以下のようにします。
POST操作
$ curl -F " passwd='' " http://アドレス:ポート/lxcfv1/list
しかし、FireFoxのようなブラウザでもLXCFの操作が可能になります。
ブラウザでアドレスバーに、REST APIを入力してEnterキーを押すと、GETが発行され、POST操作のための画面が表示されます。
アドレスバーには、"http://アドレス:ポート/lxcfv1/list"と入力します。
この画面上でパスワードを入力して、ボタンを押すと、アドレスバーに入力したAPIが発行されます。
簡単なGUIのように、ブラウザだけでLXCFを操作できます。
このようなREST APIを、ここでは「Browseable REST API」と呼びます。
Browseable REST APIは、デフォルトでは無効になっています。
Browseable REST APIを有効にするには、lxcf-apiサービスを起動する必要があります。
systemdまたはupstartのlxcf-apiサービスは、"lxcf api enable"コマンドで有効になります。
# lxcf api enable
また、Browseable REST APIのアドレスとポート番号は、/etc/lxcf/lxcf.confで定義します。
初期値はlocalhostと8080が設定されています。
# # IP address and port for REST API # [rest_api] ipaddr=localhost port=8080localhostが設定されていると、外部からはアクセスできません。
# lxcf api disable
Browseable REST APIのパスワードは以下のように"lxcf api-passwd"コマンドで設定します。
# lxcf api-passwd New password: Retype new password:
エンターキーだけを押すと、パスワードは空になります。
LXCFのREST APIは、主にHTTPのPOSTとGETの操作を使用します。
また、APIの発行時にはパスワードを付けてPOSTを行います。パスワードは空にすることができます。
REST APIを発行するときのURLのパスでAPIは規定されます。
URLは以下のような形式です。
http://アドレス:ポート番号/lxcfv1/APIのパス
APIのパスは、lxcfコマンドで実行するときの空白を'/'に変えたものを指定します。
たとえば、a-srvというコンテナを作るコマンドは以下です。
# lxcf sysgen a-srv
http://アドレス:ポート番号/lxcfv1/sysgen/a-srv
Brouseable REST APIの返すデータ形式は以下のような形式です。
<html> <head> htmlヘッド情報 </head> <body> <pre> status=ステータス番号 返りメッセージ </pre> POST用html </body> </html>
ほとんどは、POST操作用のフォームを表示するためのHTML情報です。
大事なのは、その中の以下です。
status=ステータス番号 返りメッセージ
たとえば、次はlistのAPIの結果です。
<html> <head><title>LXCF API</title> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> </head> <body> <pre> status=0 Name Mode State Autostart Path ------------------------------------------------------------------------- a-srv joint stopped n /opt/lxcf/a-srv a0001 joint stopped n /opt/lxcf/a0001 </pre> <HR><form action="http://localhost:8080/lxcfv1/list" method="POST" AcceptEncoding="utf-8"> <dl> <dt>password</dt> <dd><input type="password" name="password" value=""/></dd> </dl> <input type="submit" name="save" value="Execution" /> </form></body></html>