最新の定期請求書を取得するプログラムを実行しています。次に、請求書の各項目を調べて、ホスト名のリストを取得したいと考えています。これを簡略化した形式で示します。
account = SoftLayer::Service.new("SoftLayer_Account",:username => user, :api_key => api_key, :timeout => 999999999)
softlayer_client = SoftLayer::Client.new(:username => user, :api_key => api_key)
billing_invoice_service = softlayer_client.service_named("Billing_Invoice")
object_filter = SoftLayer::ObjectFilter.new
object_filter.set_criteria_for_key_path('invoices.createDate', 'operation' => 'betweenDate', 'options' => [{'name' => 'startDate', 'value' => ["01/01/2016"]}, {'name' => 'endDate', 'value' => ["01/02/2016"]}])
invoices = account.result_limit(0,10000).object_filter(object_filter).object_mask("mask[id,typeCode,itemCount,invoiceTotalAmount,closedDate,createDate]").getInvoices
invoices.each do | invoice |
if invoice["typeCode"] == "RECURRING"
invoice_reference = billing_invoice_service.object_with_id(invoice["id"])
invoice_object = invoice_reference.object_mask("mask[itemCount]").getObject
billing_items_count = invoice_object["itemCount"]
for i in 0..(billing_items_count/10000.0).ceil - 1
billing_items = invoice_reference.result_limit(i*10000, 10000).object_mask("mask[id,hostName]").getItems()
billing_items.each do | billing_item |
if billing_item["hostName"]
pp billing_item
end
end
end
end
end
ドキュメントへの対応するリンクは次のとおりです: http://sldn.softlayer.com/reference/services/SoftLayer_Billing_Invoice/getItems
結果はホスト名のリストですが、値は小文字になっています。後でfind_servers呼び出しを行い、この「hostName」値を上から渡すと、これが私をブロックしています。大文字と小文字が一致しないため、サーバーの詳細を見つけることができません。この動作を確認するために、以下のようなテストを実行しました。
softlayer_client = SoftLayer::Client.new(:username => user, :api_key => api_key)
found_downcased_version = SoftLayer::VirtualServer.find_servers({ :client => softlayer_client, :hostname => "host-hadr-1" })
if !found_downcased_version.empty?
pp "FOUND DOWNCASED VERSION OF HOSTNAME"
end
found_unchanged_case_version = SoftLayer::VirtualServer.find_servers({ :client => softlayer_client, :hostname => "host-HADR-1" })
if !found_unchanged_case_version.empty?
pp "FOUND UNCHANGED CASE VERSION OF HOSTNAME"
end
これは、SoftLayer がホスト名の大文字と小文字を変更した結果を返すという問題のようです。
1) find_servers で大文字と小文字を区別しないようにする方法はありますか?
また
2) 請求書から virtual_guest/hardware ID を取得する方法はありますか? そのため、ホスト名引数で find_server を使用する代わりに、潜在的に server_with_id を使用できます。
ありがとうございました!