このドキュメントは、株式会社ディノが提供する、ユニットホスティングサービスのWebサービスAPI(以下、UHAPIと記述)の実装ガイドです。UHAPIでは以下のAPIサービスを提供します。
サーバAPIサービス
単一のサーバインスタンスの制御を行います。サーバAPIを利用するためには、サーバのインスタンスIDと有効なAPIキーを入手する必要があります。
NOTE
サーバのAPIキーはユニットホスティングのサイトより取得出来ます。
サーバグループAPIサービス
単一のサーバグループとその所属するサーバ・リソースの制御を行います。サーバグループAPIを利用するためには、サーバのインスタンスIDとAPIキーを入手する必要があります。サーバグループAPIを用いることで個別のサーバの有効なAPIを取得することができます。
NOTE
サーバグループのAPIキーはユニットホスティングのサイトより取得出来ます。
XML-RPCエンドポイント
UHAPIサービスを利用するためのリクエストの送信先は以下のURIとなります。
https://www.unit-hosting.com/xmlrpc
サーバAPIサービスメソッド
vm.getStatus
説明
現在のサーバのステータスを返します。
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- running : 動作中
- halted : 停止中
vm.start
説明
停止しているサーバを起動します。
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- string result : 実行結果(成功なら success)
vm.shutdown
説明
起動しているサーバをシャットダウン(ソフトシャットダウン)します。
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- string result : 実行結果(成功なら success)
vm.powerOff
説明
起動しているサーバをシャットダウン(ハードシャットダウン)します。vm.powerOff(ハードシャットダウン)はなるべくせずに可能な限りvm.shutdown(ソフトシャットダウン)を利用してください。
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- string result : 実行結果(成功なら success)
vm.reboot
説明
起動しているサーバを再起動します。メモリ・CPUコア・ディスクの変更があれば反映します。
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- string result : 実行結果(成功なら success)
vm.destroy
説明
サーバを削除します。削除は停止(halted)時にしか行えません。
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- string result : 実行結果(成功なら success)
vm.renew
引数
- string display_name : 表示名
- string rootpw : rootパスワード
- string ssh_key : sshのキー
- string user_script : ユーザスクリプトURI
以下の引数はオプションです:
- string op_user : user名(ユーザスクリプト内で利用)
- string op_mail : メールアドレス(ユーザスクリプト内で利用)
戻り値
- string result : 実行結果(成功なら success)
説明
サーバの初期化。初期化は停止(halted)時にしか行えません。
vm.getIpInfo
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- array
- ip: IP
- route_to: グローバルIP(静的NATがある場合)
説明
サーバに割り当てられているIPドレスについての情報を返します。
vm.getMemoryUnitSize
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- integer 追加されているメモリサイズ(MB)
説明
現在、追加されているメモリのサイズ(MB)を取得します。
NOTE
追加前にプランによりベースメモリ(256MB or 512MB)が存在しているので、実際のメモリサイズはこのメソッドの返り値+ベースメモリサイズとなります。
vm.setMemoryUnitSize
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
- integer size : セットする追加メモリサイズ
戻り値
- string result : 実行結果(成功なら success)
説明
追加するメモリサイズを設定します。
NOTE
追加を反映するためには、リブートする必要があります。
vm.getCpuUnitNum
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- integer CPUのコア数
説明
現在、追加されているCPUコア数を取得します。
NOTE
追加前に1コア存在しているので、実際のコア数はこのメソッドの返り値+1となります。
vm.setCpuUnitNum
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
- integer num : セットする追加CPUのコア数
戻り値
- string result : 実行結果(成功なら success)
説明
追加するCPUコア数を設定します。
NOTE
追加を反映するためには、リブートする必要があります。
vm.replicate
引数
- string instance_id : 複製元のサーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- string instance_id : 複製されたサーバのインスタンスID
- string result : 実行結果(成功なら success)
説明
サーバの複製を行います。
vm.getCrushRecover
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
戻り値
- boolean: 設定結果(true=>設定されている)
説明
クラッシュリカバリ機能の現在の設定状態を取得します。
vm.setCrushRecover
引数
- string instance_id : サーバのインスタンスID
- string api_key : サーバのAPIキー
- boolean crush_recover : 設定値(設定する=>true)
戻り値
- string result : 実行結果(成功なら success)
説明
クラッシュリカバリ機能の設定をします。
サーバグループAPIサービスメソッド
vmGroup.getVms
引数
- string instance_id : サーバグループのインスタンスID
- string api_key : サーバグループのAPIキー
戻り値
- array
instance_id: サーバのインスタンスID
api_key: サーバのAPIキー
説明
サーバグループが所有するサーバの一覧を返します。この機能により、VmのAPIキーが取得できます。
vmGroup.createVm
引数
- string instance_id : サーバグループのインスタンスID
-
string api_key : サーバグループのAPIキー
-
string display_name : 表示名
- string rootpw : rootパスワード
- string ssh_key : sshのキー
- string user_script : ユーザスクリプトURI
以下の引数はオプションです:
- string op_user : user名(ユーザスクリプト内で利用)
-
string op_mail : メールアドレス(ユーザスクリプト内で利用)
-
string plan_id : プランID
-
string instance_id : サーバグループのインスタンスID
戻り値
- string instance_id : サーバのインスタンスID
- string result : 実行結果(成功なら success)
vmGroup.getPlans
引数
- string instance_id : サーバグループのインスタンスID
- string api_key : サーバグループのAPIキー
戻り値
- integer id : plan_id
- string name : プラン名
- string cycle : 課金サイクル(hourly,monthly)
- float point : 課金ポイント(cycle毎)
説明
現在利用可能なプランの一覧を取得します。
サンプルコード
Ruby,PHP,Python,Perlの各言語によるスケールアップのサンプルプログラムは以下のとおりです。
Ruby
#!/usr/bin/env ruby
# vim:set fileencoding=utf-8:
=begin
Vmのメモリを256MB、CPUを1コア増やして、リブートするサンプル
=end
require 'rubygems'
require 'pp'
require 'xmlrpc/client'
server = XMLRPC::Client.new_from_uri("https://www.unit-hosting.com/xmlrpc")
param = Hash.new;
# vmのインスタンスID
param["instance_id"] = "tumf-vm-133";
# vmのAPIキー
param["api_key"] = "62e053208ae47f26a527a0779fd6700fca6ba7a1";
size = server.call("vm.getMemoryUnitSize",param)
num = server.call("vm.getCpuUnitNum",param)
if size < 256 * 4 * 8
param["size"] = size + 256;
result = server.call("vm.setMemoryUnitSize",param)
end
if num < 4
param["num"] = num + 1;
result = server.call("vm.setCpuUnitNum",param)
pp result
end
result = server.call("vm.reboot",param)
pp result
PHP
<?php
/*
*PEAR::XML_RPC
*/
require_once("XML/RPC.php");
function call($client,$methodname,$params){
$message = new XML_RPC_Message($methodname,$params);
return $client->send($message);
}
$server = new XML_RPC_Client("/xmlrpc","https://www.unit-hosting.com");
$baseparam = array(
"instance_id" => new XML_RPC_Value("tumf-vm-1"),
"api_key"=> new XML_RPC_Value("d417ed8cd98f00b204e9800998ecf842")
);
$param = new XML_RPC_Value($baseparam,"struct");
$size = call($server,"vm.getMemoryUnitSize",array($param))->value()->scalarval();
$num = call($server,"vm.getCpuUnitNum",array($param))->value()->scalarval();
if($size < 256 * 4 * 8){
$baseparam["size"] = new XML_RPC_Value($size + 256,"int");
$param = new XML_RPC_Value($baseparam,"struct");
$result = call($server,"vm.setMemoryUnitSize",array($param));
var_dump($result);
}
if($num < 4){
$baseparam["num"] = new XML_RPC_Value($num + 1,"int");
$param = new XML_RPC_Value($baseparam,"struct");
$result = call($server,"vm.setCpuUnitNum",array($param));
var_dump($result);
}
$result = call($server,"vm.reboot",array($param));
var_dump($result);
?>
Python
#!/usr/bin/env python
import xmlrpclib
server = xmlrpclib.Server("https://www.unit-hosting.com/xmlrpc")
param = {}
param["instance_id"] = "tumf-vm-88"
param["api_key"] = "72d95f0a6a39940f829edbae3ccd2717"
size = server.vm.getMemoryUnitSize(param)
num = server.vm.getCpuUnitNum(param)
if size < 256 * 4 * 8:
param["size"] = size + 256
result = server.vm.setMemoryUnitSize(param)
if num < 4:
param["num"] = num + 1
result = server.vm.setCpuUnitNum(param)
print result
result = server.vm.reboot(param)
print result
Perl
#!/usr/bin/env perl
use warnings;
use Frontier::Client;
use Data::Dumper;
# CPAN Frontier::Client
$server = Frontier::Client->new(url => 'https://www.unit-hosting.com/xmlrpc');
#see http://static.userland.com/userLandDiscussArchive/msg002261.html
$param = {
'instance_id' => 'tumf-vm-1',
'api_key' => 'dfjlasdjfsda9ewriuiodsa31489'
};
$size = $server->call('vm.getMemoryUnitSize',$param);
$num = $server->call('vm.getCpuUnitNum',$param);
print $size."\n";
print $num."\n";
if($size < 256 * 4 * 8){
$$param{'size'} = $size + 256;
$result = $server->call('vm.setMemoryUnitSize',$param);
print Dumper($result);
}
if($num < 4){
$$param{'num'} = $num + 1;
$result = $server->call('vm.setCpuUnitNum',$param);
print Dumper($result);
}
$result = $server->call('vm.reboot',$param);
print Dumper($result);
変更履歴
- 1.0 APIマニュアル初版公開
- 1.1
vm.getIpInfoの追加 - 1.3
vm.getCrushRecovervm.setCrushRecoverの追加、その他修正


最近のコメント