Show page source of LXCFのREST-API #100679

=  [[Embed(lxcficon.jpg)]] LXCFのREST-API

[FrontPage 元のページに戻る]

== LXCFのREST-API

REST APIは、WebのプロトコルHTTPを使ったネットワーク経由のインタフェースです。[[BR]]
次のような特徴を持ちます。[[BR]]
{{{
- ステートレスなクライアント/サーバプロトコル
- すべてのリソースに適用できる操作セット
- すべてのリソースは URI で表される一意的なアドレスを持つ
- アプリケーションの情報と状態遷移の両方を扱う
}}}

LXCFのREST APIは、主にHTTPのPOSTとGETの操作を使用します。[[BR]]
また、APIの発行時にはパスワードを付けてPOSTを行います。パスワードは空にすることができます。[[BR]]

=== 1. Browseable REST API

LXCFのAPI操作は、HTTPのPOST操作とGET操作を使用します。[[BR]]
POST操作でAPIの発行をします。[[BR]]
GET操作では、POST操作のためのhtmlを返します。[[BR]]

curlのようなネットワークツールを使用する場合には、POST操作だけでAPIを操作できます。[[BR]]
たとえば、コンテナの一覧を表示するlistは以下のようにします。

POST操作[[BR]]
{{{
$ curl -F " passwd='' "  http://アドレス:ポート/lxcfv1/list
}}}

しかし、!FireFoxのようなブラウザでもLXCFの操作が可能になります。[[BR]]
ブラウザでアドレスバーに、REST APIを入力してEnterキーを押すと、GETが発行され、POST操作のための画面が表示されます。[[BR]]
アドレスバーには、"http://アドレス:ポート/lxcfv1/list"と入力します。[[BR]]
[[BR]]
[[Embed(lxcf-list-get.jpg)]] 
[[BR]]
この画面上でパスワードを入力して、ボタンを押すと、アドレスバーに入力したAPIが発行されます。[[BR]]
[[BR]]
[[Embed(lxcf-list-post.jpg)]] 
[[BR]]
簡単なGUIのように、ブラウザだけでLXCFを操作できます。[[BR]]
[[BR]]
このようなREST APIを、ここでは'''「Browseable REST API」'''と呼びます。[[BR]]
[[BR]]

=== 2. Browseable REST APIサービスの起動

Browseable REST APIは、デフォルトでは無効になっています。[[BR]]
Browseable REST APIを有効にするには、lxcf-apiサービスを起動する必要があります。[[BR]]
systemdまたはupstartのlxcf-apiサービスは、"lxcf api enable"コマンドで有効になります。[[BR]]
[[BR]]
{{{
# lxcf api enable
}}}

また、Browseable REST APIのアドレスとポート番号は、/etc/lxcf/lxcf.confで定義します。[[BR]]
初期値はlocalhostと8080が設定されています。[[BR]]
[[BR]]
{{{
#
# IP address and port for REST API
#
[rest_api]
ipaddr=localhost
port=8080

}}}
localhostが設定されていると、外部からはアクセスできません。[[BR]]
外部から接続するには、接続可能なIPアドレスかドメイン名を設定する必要があります。[[BR]]
[[BR]]
一度enabledにすれば、システムをrebootしてもenabledのままです。[[BR]]
Browseable REST APIをdisabledにするには、"lxcf api disable"コマンドを使います。[[BR]]
[[BR]]
{{{
# lxcf api disable
}}}

=== 3. Browseable REST APIの認証
Browseable REST APIのパスワードは以下のように"lxcf api-passwd"コマンドで設定します。[[BR]]
[[BR]]
{{{
# lxcf api-passwd
New password: 
Retype new password: 
}}}

エンターキーだけを押すと、パスワードは空になります。

=== 4. Browseable REST API リクエストの送信
LXCFのREST APIは、主にHTTPのPOSTとGETの操作を使用します。[[BR]]
また、APIの発行時にはパスワードを付けてPOSTを行います。パスワードは空にすることができます。[[BR]]
REST APIを発行するときのURLのパスでAPIは規定されます。[[BR]]
URLは以下のような形式です。[[BR]]
[[BR]]
{{{
 http://アドレス:ポート番号/lxcfv1/APIのパス
}}}

APIのパスは、lxcfコマンドで実行するときの空白を'/'に変えたものを指定します。[[BR]]
たとえば、a-srvというコンテナを作るコマンドは以下です。[[BR]]
[[BR]]
{{{
 # lxcf sysgen a-srv
}}}
[[BR]]
これと同じ指定をREST APIで行う場合は以下です。[[BR]]
[[BR]]
{{{
 http://アドレス:ポート番号/lxcfv1/sysgen/a-srv
}}}

=== 5. Browseable REST APIのデータ形式

Brouseable REST APIの返すデータ形式は以下のような形式です。[[BR]]
[[BR]]
{{{
<html>
<head>
htmlヘッド情報
</head>
<body>
<pre>
  status=ステータス番号
  返りメッセージ
</pre>
POST用html
</body>
</html>
}}}

ほとんどは、POST操作用のフォームを表示するためのHTML情報です。[[BR]]
大事なのは、その中の以下です。[[BR]]
{{{
  status=ステータス番号
  返りメッセージ
}}}
[[BR]]
ステータス番号は、正常ならば0が設定されています。[[BR]]
それ以外の値はエラーを示します。[[BR]]
帰りメッセージは、実行結果のメッセージが表示されます。[[BR]]

たとえば、次はlistのAPIの結果です。
[[BR]]
{{{
<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>

}}}
[[BR]]
<pre>から</pre>までが、APIの結果を示します。[[BR]]




=== 6. コマンドラインクライアント
=== 7. ブラウザをクライアントとして使う
=== 8. Browseable REST APIの一覧

[FrontPage 元のページに戻る]