RubyからSoftLayerを操作する（その２）

第１回からかなり空いての第２回。


APIキーの取得や、アカウント/サーバの情報取得は
前回の記事に記載しています。今回は、サーバ作成です。

前回：RubyからSoftLayerを操作する（その１）
http://qiita.com/rina0521/items/d98e14de523da4397962


## サーバの注文情報の作成

SoftLayerは、ポータルからサーバを注文する際に、
とてもたくさんの設定項目があります

下記はサンプルで、恐らく必要項目の最低限です。
シンガポールに、最小限のスペックで、CentOSサーバを作ります。

```

serverOrder = {
        :datacenter  => {
                :name   => "sng01"
                },
        :hostname    => "ApiTest001",
        :domain      => "test.local",
        :startCpus   => 1,
        :maxMemory      => 1024,
        :hourlyBillingFlag => true,
        :localDiskFlag => true,
        :dedicatedAccountHostOnlyFlag => false,
        :operatingSystemReferenceCode => "CENTOS_LATEST"
        }


```

hourlyBillingFlag；時間課金か月額課金か
dedicatedAccountHostOnlyFlag：ホストを専有するか

入力できるパラメータについては、
下記メソッドでパラメータのリストを取得できたので、
そこからピックアップして使用しました

SoftLayer_Virtual_Guest::getCreateObjectOptions

（パラメータ量はとても多いです。
　必要な項目だけマスクして表示しようかと思ったのですが、うまく行かず。
　もっといい方法があるのかもしれません……。）



## サーバ作成

では、さきほど作成したパラメータで、サーバを作成……
する前に、以下を使って、サーバを作成せずに、
作成する**サーバの金額情報**だけをチェックします

SoftLayer_Virtual_Guest::generateOrderTemplate


```order_test.rb
require 'softlayer_api'

client = SoftLayer::Client.new(
    :username => "【ユーザ名】",
    :api_key  => "【APIキー】"
)

serverOrder = {
	:datacenter  => {
		:name   => "sng01"
		},
	:hostname    => "ApiTest001",
	:domain      => "test.local",
	:startCpus   => 1,
	:maxMemory      => 1024,
	:hourlyBillingFlag => true,
	:localDiskFlag => true,
	:dedicatedAccountHostOnlyFlag => false,
	:operatingSystemReferenceCode => "CENTOS_LATEST"
	}

server_service = client.service_named("SoftLayer_Virtual_Guest")
order_info = server_service.generateOrderTemplate(serverOrder)

p order_info
```


実行すると、以下の出力が出ます。

```
{"imageTemplateId"=>"",

      (省略)

 "prices"=>[
   {"hourlyRecurringFee"=>".021",
    "id"=>1640,
    "recurringFee"=>"15",
    "item"=>{
      "description"=>"1 x 2.0 GHz Core"}
    },
   {"hourlyRecurringFee"=>".019",
    "id"=>1644,
    "recurringFee"=>"12.6",
    "item"=>{
      "description"=>"1 GB"
    }
   },

      (省略)

 "virtualGuests"=>[
   {"domain"=>"test.local”,
    "hostname"=>"ApiTest001"}
 ]
}

```
hourlyRecurringFeeが、時間課金額です
このように、事前に、金額などを見ることができます。
（Webから注文したときと同じですね）

問題ないことを確認した後、今度こそ、サーバを注文してみます。

先ほどと同じ内容で、使用するメソッドを
SoftLayer_Virtual_Guest::createObject
に変更するだけで、本当にマシンが作成されます

```order_server.rb
require 'softlayer_api'

client = SoftLayer::Client.new(
    :username => "【ユーザ名】",
    :api_key  => "【APIキー】"
)

serverOrder = {
	:datacenter  => {
		:name   => "sng01"
		},
	:hostname    => "ApiTest001",
	:domain      => "test.local",
	:startCpus   => 1,
	:maxMemory      => 1024,
	:hourlyBillingFlag => true,
	:localDiskFlag => true,
	:dedicatedAccountHostOnlyFlag => false,
	:operatingSystemReferenceCode => "CENTOS_LATEST"
	}

server_service = client.service_named("SoftLayer_Virtual_Guest")
order_info = server_service.createObject(serverOrder)

p order_info
```

下記のように出力されます。

```
{“accountId"=>XXXXXX,
 "createDate"=>”YYYY—MM-DDT00:00:00+09:00",
 "domain"=>"test.local”,
 "fullyQualifiedDomainName"=>"ApiTest001.test.local”,
 "hostname"=>"ApiTest001",
 
      (省略)

```

これで、少し待てば、サーバが出来上がります。
実行後、注文完了メールが来ていることだと思います。