Net::CloudStack
CloudStack APIについてのdocumentは下記をご参照ください。
Developer's Guide:CloudStack
ライブラリinstall手順(cpan install以外の部分) についてまとめます。
- 事前準備
#yum install make cpan gcc expat-devel
#cpan YAML #私の環境ではcpanで必要でした。
#cpan YAML::Tiny #後述のサンプルスクリプトで使用。
Cent6.xの場合
# vi /usr/share/perl5/CPAN/Config.pm
Cent5.xの場合
# vi /usr/lib/perl5/5.8.8/CPAN/Config.pm
'prerequisites_policy' => q[follow], #[yes]押下を省略するため、ask->followに変更 - 事前準備その2(https対応必要の場合)
#yum install openssl-devel
#cpan LWP::Protocol::https - ライブラリinstall
#cpan Net::CloudStack
以下簡易なサンプルスクリプト例と実行例です。(冗長な部分もあるかもしれませんが、ご勘弁)
- client用サンプルスクリプト(cs-api.pl)
#!/usr/bin/perl -w
use strict;
use warnings;
use Net::CloudStack;
use YAML::Tiny;
use Data::Dumper;
use JSON;
use XML::Simple;
my ($xml_json,$send_request);
my $yaml = YAML::Tiny->new;
$yaml = YAML::Tiny->read('cs-api.yml');
my $obj;
if(defined($yaml->[0]->{xml_json})){
$xml_json = $yaml->[0]->{xml_json};
}
else{
$xml_json = 'json';
}
if(defined($yaml->[0]->{send_request})){
$send_request = $yaml->[0]->{send_request};
}
else{
$send_request = 'no';
}
my $api = Net::CloudStack->new(
api_key => $yaml->[0]->{api_key},
secret_key => $yaml->[0]->{secret_key},
base_url => $yaml->[0]->{base_url},
api_path => $yaml->[0]->{api_path},
xml_json => $xml_json,
send_request => $send_request,
);
my $cmd = $ARGV[0];
if(defined($ARGV[1])){
$api->${cmd}("$ARGV[1]");
}
else{
$api->${cmd};
}
print Dumper($api->url);
print Dumper($api->response);
if($api->xml_json =~ /json/i){
$obj = from_json($api->response);
}
else{
my $parser = XML::Simple->new;
$obj = $parser->XMLin($api->response);
}
print Dumper($obj);
if($api->xml_json =~ /json/i){
foreach (keys %$obj){
print Dumper($obj->{$_}->{jobid});
}
}
else{
print Dumper($obj->{jobid});
}
exit; - 設定ファイル(cs-api-yml)
cs-api.plと同じディレクトリに保存。(下記伏字にしています)---
api_key: ***
secret_key: ***
base_url: http://*.*.*.*
api_path: portal/client/api? #your API PATH
xml_json: json
send_request: yes
- 実行例
# ./cs-api.pl startVirtualMachine id=521
$VAR1 = 'http://*.*.*.*/portal/client/api?apikey=*****&command=startVirtualMachine&id=521&response=json&signature=***';
$VAR1 = '{
"startvirtualmachineresponse" : {
"jobid" : 2114
}
}
';
$VAR1 = {
'startvirtualmachineresponse' => {
'jobid' => 2114
}
};
$VAR1 = 2114;
CPAN Authorになるまでのまと
備忘録。下記対応予定です
- APIをresponse処理対応
- error処理
- document整備
追記 2011/12/02
- サンプルスクリプトについて追記
- ライブラリ更新に伴い、サンプルスクリプト修正
追記 2012/2/17
- Cent5.xの手順を追加