2015-12-15 5 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

В настоящее время ojectMask для метода find_servers не ограничивает поля, он добавляет поля вашей маски объекта к результату.

Если вам нужно ограничить поля, вы можете использовать использовать «карту», ​​чтобы создать массив только с полями, которые заинтересованы в.

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