2015-12-15 99 views
0

我無法獲取應用於正在檢索的數據的object_mask。這裏是我正在做的一個片段:object_mask不適用於Ruby SoftLayer API調用SoftLayer :: BareMetalServer.find_servers

client = SoftLayer::Client.new(<...hidden...>) 

<BREAK> 

if (item["hostName"]) 
    machines = SoftLayer::BareMetalServer.find_servers({ :client => client, :hostname => item["hostName"], :object_mask => "[id,hostname,tagReferences]"}) 

    machines.each do |machine| 
    pp machine 
    end 
end 

當我打印「機器」它仍然打印所有的領域。預先感謝您的任何幫助。

$ ruby -v 
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] 

回答

0

當前方法find_servers的ojectMask不限制字段,它會將對象掩碼的字段添加到結果中。

如果您需要限制的領域,你可以使用使用「地圖」與剛剛字段創建一個數組,你有興趣。

1

我是不是能夠得到使用口罩「BareMetalServer.find_servers」的具體項目,但下面是另一個紅寶石例子,可以幫助你:

require 'rubygems' 
require 'softlayer_api' 

# Your SoftLayer API username. 
SL_API_USERNAME = 'set me' 

# Your SoftLayer API key. 
SL_API_KEY = 'set me' 

softlayer_client = SoftLayer::Client.new(:username => SL_API_USERNAME, 
             :api_key => SL_API_KEY) 

account_service = softlayer_client.service_named('SoftLayer_Account') 

# Create an object mask to get more information than by default 
mask = 'mask[id,hostname]' 

begin 
    result = account_service.object_mask(mask).getHardware 
    puts 'Process finished successfully' 
    p result 
rescue Exception => e 
    raise e 
end 

參考文獻:

http://sldn.softlayer.com/reference/services/SoftLayer_Account/getHardware  
https://softlayer.github.io/ruby/token_auth/ 
https://softlayer.github.io/ruby/find_my_vms/ 
https://softlayer.github.io/ruby/ 
https://www.omniref.com/ruby/gems/softlayer_api/2.1.0 
https://github.com/softlayer/softlayer-ruby/blob/master/lib/softlayer/BareMetalServer.rb 
+0

感謝mcruz。我也通過getHardware等其他調用獲得成功。但是這個find_servers雖然說它接受一個object_mask選項,但似乎沒有合作。 – haunm