GoGrid インタフェース・メソッド
このページでは GoGrid のクラウドサービスへインタフェースするためにメソッドを説明します。 そのメソッドは下記の GoGrid の API 説明にもとづいて作成されました:http://wiki.gogrid.com/wiki/index.php/API:Ruby_API_Developer_Home
Perl メソッド
GoGrid によって開発された、標準の GoGridClient perl パッケージは、 ここからダウンロードできます。- 秘密および API キーをパッケージ内で定義するか、それに渡す必要があります。
下記のサンプルが GoGrid サーバに問い合わせるために標準パッケージを使用します。
use GoGridClient; use JSON; use Data::Dumper; my $debug = 1; # Create a new GoGridClient object with the default values my $myObject = GoGridClient->new("xml","https://api.gogrid.com/api","apikey","secret","1.0"); # Create the parameters to the method call. Change format to JSON my %params = ("format"=>"json"); # Create the request for the server/list method my $requestURL = $myObject->getRequestURL("grid/server/list",%params); # Print the request print "\nRequest :\n$requestURL" if $debug; # Send the request my $results = $myObject->sendAPIRequest($requestURL); #print the results print "\n\nResponse :\n$results" if $debug; my $json = new JSON; # Parse json results into a hash reference my $results_ref = $json->decode($results); # Iterate through the instance list and print the attribute foreach my $server (@{$results_ref->{list}}) { print $server->{'id'}."\n"; print $server->{'name'}."\n"; print $server->{'description'}."\n"; print $server->{'id'}->{'ip'}.""; print $server->{'id'}->{'subnet'}."\n"; print $server->{'ram'}->{'name'}."\n"; print $server->{'state'}->{'name'}."\n"; print $server->{'state'}->{'description'}."\n"; print $server->{'image'}->{'name'}."\n"; print $server->{'image'}->{'description'}."\n"; print $server->{'os'}->{'name'}."\n"; print $server->{'os'}->{'description'}."\n"; }
これは、GoGridClient パッケージなしに GoGrid API をアクセスするために、wget を使うテストスクリプトです。
#!/usr/bin/perl -- # # Copyright 2008 Tap In Systems # use strict; use Digest::MD5 qw(md5 md5_hex md5_base64); my $timestamp = time; my $secret ="secret"; my $apikey = "apikey"; my $sig = md5_hex $apikey.$secret.$timestamp; my $debug = 1; my $url = "https://api.gogrid.com/api/grid/server/list?api_key=$apikey&sig=$sig&v=1.0&format=csv"; my $cmd = 'wget --no-dns-cache -O - -T 5 -t 2 -q --secure-protocol=auto --no-check-certificate "'.$url.'"'; print "\nWGET CMD: $cmd\n"; my @lines = `$cmd 2>&1`; foreach my $line (@lines) { print $line; } my @names = (); my $server_ref = undef; # Reference containing attributes by server foreach my $line (@lines) { if ($line =~ /^# SUCCESS/) { next; } elsif ((scalar(@names) == 0) and ($line =~ /^#\s+(.*)/)) { @names = split /,/,$1; print "\tSetting names @names\n" if $debug; } elsif (scalar(@names) > 0){ my @values = split /,/,$line ; for (my $i=0; $i<@names ;$i++) { $server_ref->{$names[$i]} = $values[$i] ; print "Name $names[$i] = $values[$i]\n" if $debug; } } }
Ruby メソッド
GoGrid によって開発された、標準の GoGridClient ruby パッケージは ここからダウンロードできます。このパッケージを使用する Ruby スクリプトを下記に示します。
require 'GoGridClient.rb' # create client with server, secret and key g = GoGridClient.new('https://api.gogrid.com/api', 'API_KEY', 'SECRET') # make some calls resp = g.sendAPIRequest("grid/server/list") puts resp
このパッケージは、 Control Plan Editor の Ruby スクリプト内で使用されています。イメージをリストするためのサンプルスクリプトを下記に示します。
URL を定義した後、このスクリプトは、URL ("get=com.tapin.petri.net.Get.new url") を取得するために、Java メソッド呼び出しを使用します。
require 'GoGridClient.rb' require 'json' # jruby implementation requires gem json_pure # (ie jruby -S gem json_pure g = GoGridClient.new('https://api.gogrid.com/api', $access_key, $secret,'json') options = Hash.new # Set options in hash if needed url = g.getRequestURL("grid/image/list",options) get = com.tapin.petri.net.Get.new url get.execute str = get.getContents # Print raw contents puts str # put results in hash of hash for easier data manipulation result = JSON.parse(str) result.each { |x| puts x }