Img_9_lg

Terremark インタフェース・メソッド

このページでは Terremark の vCloud Express サービスへインタフェースするためのメソッドを説明します。下記のリンクは、vCloud API の情報です:

https://community.vcloudexpress.terremark.com/en-us/product_docs/w/wiki/6-using-the-vcloud-express-api.aspx
http://communities.vmware.com/community/developer/forums/vcloudapi

Tap In Systems は、Terremark の vCloud Express サービスへ問い合わせたりコントロールするため、これらの仕様に基づき REST 呼び出しを行うテンプレートのセットを作成しました。通常、ほとんどの呼び出しに認証のトークンとペアレント情報が必要なため、これらの呼び出しには順序だった呼び出しが必要です。外部パッケージは必要ありません - テンプレートのスクリプトの中でHTTP情報がセットされます。

下記は、vCloud の organization 情報を読み出す、サンプル Ruby テンプレートです。トークンと orgId が、コントロールプランの前のプレースタスクで読み出されます。私たちは、vCloud の仕様に従って、ヘッダと Get リクエストをセットします。応答はパースされます。XMLをパースするため Ruby REXML gem を使用します。このサンプルでは、VDC id と参照リンクをパースしています。

#
$:<< '.\jrubylib'

$:<< '.\jrubylib\jruby-openssl-0.5.2\lib'
 
require 'rubygems'
require 'net/https'

require 'rexml/document'
require 'uri'
require 'digest/md5'
require 'time'
 

puts "--------------------------------------------------------------------------------"
token = $myself.get "token"
orgId = $myself.get "orgId"

urlstring = "https://services.vcloudexpress.terremark.com/api/v0.8/org/#{orgId}"
puts "url=#{urlstring}"
begin
    url = URI.parse(urlstring)
    req = Net::HTTP::Get.new(url.path)

    req.add_field('Cookie',"vcloud-token=#{token}")
    req.add_field('Content-Length','0')
    tmp = Net::HTTP.new(url.host, url.port)

    tmp.use_ssl = true
    tmp.verify_mode = OpenSSL::SSL::VERIFY_NONE
    res = tmp.start {|http| http.request(req) }

    hrefs = Array.new
    vdc = 0;
    case res
    when Net::HTTPSuccess, Net::HTTPRedirection

            # OK
            #puts "body:\n"+res.body
            doc = REXML::Document.new(res.body)
            doc.elements.each('Org/Link') do |ele|

            ele.attributes.each { |x,y|
                if x.to_s.eql?('href') then

                    puts "\t#{x}=#{y}"
                    hrefs << y
                end
            }
        end

        res.body.each { |line|
            if line=~/\/api\/v0.8\/vdc\/(\d+)/ then

                vdc = $1;
                puts "Found vdc id #{vdc}"
             end
            }
    else
        puts "error="+res.error!
    end

    puts "Number of hrefs found=#{hrefs.size}"
    hrefs.each { |x| puts "href=#{x}" }

    puts "Finished. vdc=#{vdc}"
    $myself.add "vdc",vdc
rescue Exception => e
    puts "Exception error #{e.message}"

end
 
 
 

このスクリプトの出力を下記に示します:

--------------------------------------------------------------------------------
url=https://services.vcloudexpress.terremark.com/api/v0.8/org/123
body:
<Org href="https://services.vcloudexpress.terremark.com/api/v0.8/org/123"
name="xxxxxxxxxxx" xmlns="http://www.vmware.com/vcloud/v1"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Link rel="down" href="https://services.vcloudexpress.terremark.com/api/v0.8/vdc/456"
    type="application/vnd.vmware.vcloud.vdc+xml" name="Miami Environment 1"/>

  <Link rel="down" href="https://services.vcloudexpress.terremark.com/api/v0.8/vdc/456/catalog"
    type="application/vnd.vmware.vcloud.catalog+xml" name="Miami Environment 1 Catalog"/>
  <Link rel="down" href="https://services.vcloudexpress.terremark.com/api/v0.8/tasksList/456"

    type="application/vnd.vmware.vcloud.tasksList+xml" name="Miami Environment 1 Tasks List"/>
</Org>
    href=https://services.vcloudexpress.terremark.com/api/v0.8/vdc/456
    href=https://services.vcloudexpress.terremark.com/api/v0.8/vdc/456/catalog
    href=https://services.vcloudexpress.terremark.com/api/v0.8/tasksList/456
Found vdc id 456
Found vdc id 456
Number of hrefs found=3
href=https://services.vcloudexpress.terremark.com/api/v0.8/vdc/456
href=https://services.vcloudexpress.terremark.com/api/v0.8/vdc/456/catalog
href=https://services.vcloudexpress.terremark.com/api/v0.8/tasksList/456
Finished. vdc=456
 

特定の vCloud コマンドを実行したい場合、サンプルを参考にして下さい。それらは、 get_token の呼び出しからの完全なシーケンスを含んでいます。
 
Tap In クラウド管理サービス 特徴とメリット 活用事例 Tap In クラウドコントロールサービス
イベント管理アーキテクチャ 管理対象テクノロジー ビューア Amazon CloudWatch との統合 3tera Applogic との統合 GoGrid との統合 プロセス自動化
Tap In Systems について 経営 コンタクト
ドキュメント ダウンロード 技術論文 技術ウィッキサイト フォーラム