米JoyentのSmartDataCenterが使えるZ CloudではJSONベースのAPIを使えるようになっている。
ドキュメントはまだ一般公開されていないが機能利用はOK、使ってみます。
APIトークンをGETしよう
サインアップ後にアカウント管理画面を見ると、右上にAPIキーのコーナーがある。
APIキーの取得はこれでOK
作成可能なマシンの一覧を取得しよう
今回APIとのやり取りはGoogleChromeのエクステンション、POSTMANで行いました、使いやすいRESTクライアントです。
ヘッダにX-API-KEYを追加、先ほど取得したトークンを入れてリクエスト。
作成可能なリストは/products.json
https://my.z-cloud.jp/products.jsonで作成可能なデータセットとパッケージの一覧が取得できます。
※図ではmachines.jsonなので適宜必要なAPIのパスに変更する。
レスポンスのBodyはこんな感じ。
[
{
"category": "SmartOS",
"created_at": "2012-12-17T17:12:51Z",
"deleted_at": null,
"disk": "30GB",
"display_order": 1,
"id": 137,
"image_url": "/assets/smartos.png",
"kind": "SmartOS",
"memory": "1GB",
"name": "SmartOS Small 1",
"os": "SmartOS",
"price": "8.1",
"sdc_cpucap": 200,
"sdc_dataset": "sdc:sdc:base64:1.8.4",
"sdc_disk": 30720,
"sdc_memory": 1024,
"sdc_package": "Small_1GB",
"sdc_vcpus": 1,
"series": "SmartMachine",
"subject": "Machine",
"summary": "SmartOSはOpenSolarisベースの仮想OSで、高性能、堅牢、強力な分析機能が提供されます。",
"trial_period": null,
"updated_at": "2012-12-17T17:12:51Z",
"vendor_url": "http://www.joyent.com/products/smartos/"
}
]
実際は全ての組み合わせが出てくるので結構数が多いです。
マシンを作成しよう
マシンを作成するにはRESTよろしくmachinesリソースをcreateのためPOSTします、GETならマシン一覧が。
https://my.z-cloud.jp/machines.jsonにPOSTする内容は下記のようにデータセットとパッケージを指定したJSONです。
{
"dataset": "sdc:sdc:base64:1.8.4",
"package": "Small_1GB",
"name": "testmachine01"
}
SmartDataCenterには応用として便利に使えるmetadataというパラメータがありますが、ここはひとまず省略して作成しましょう。
ヘッダのContent-TYpe: application/jsonをつけて、POST。 
これで新しくマシンが1つ作成されました。
作成されたマシンのデータを取得
レスポンスのBodyにマシン情報が入ってます。
ちなみに単体の情報は/machines/{マシンID}.jsonで取得できます。
{
"id": "3dedfab7-9704-481c-b994-f37db2252ff2",
"name": "testmachine01",
"type": "smartmachine",
"state": "provisioning",
"dataset": "sdc:sdc:base64:1.8.4",
"memory": 1024,
"disk": 30720,
"ips": [
"210.152.137.50"
],
"metadata": {},
"created": "2013-01-03T11:29:46+00:00",
"updated": "2013-01-03T11:29:46+00:00",
"account_id": 27,
"os": "SmartOS",
"kind": "SmartOS",
"package": "Small_1GB",
"subdomain": null,
"alert": null
}
作成したマシンにログイン
とりあえずsshで。
だいぶ手軽にサーバの作成ができるようになっています。
応用編:user-script, user-data
マシンの作成や情報の更新ではSDCの機能Metadata APIが使えます、Joyent SmartDataCenterはこれを活用して色々やるようになっているのでそのうち紹介できればと思います。
Using the Metadata API >> http://wiki.joyent.com/wiki/display/sdc/Using+the+Metadata+API



