Img_9_lg

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
}
 
Tap In クラウド管理サービス 特徴とメリット 活用事例 Tap In クラウドコントロールサービス
イベント管理アーキテクチャ 管理対象テクノロジー ビューア Amazon CloudWatch との統合 3tera Applogic との統合 GoGrid との統合 プロセス自動化
Tap In Systems について 経営 コンタクト
ドキュメント ダウンロード 技術論文 技術ウィッキサイト フォーラム