Мы видим то же вопрос с API SoftLayer Ruby, как и в этом посте:Ошибки при использовании SoftLayer на Ruby API для конкретных дополнительных дисков с виртуальным сервером
CLI - Error when disk parameter is in use
Этот код может воспроизвести проблему:
#!/usr/bin/ruby
require 'softlayer_api'
def image_template_id(sl_client, image_template_name)
templates = sl_client['Account'].getBlockDeviceTemplateGroups
templates.each do | template |
if image_template_name == template['name']
return SoftLayer::ImageTemplate.template_with_id(template['id'], {:client => sl_client})
end
end
return nil
end
sl_username = "USER"
sl_apikey = "API-KEY"
sl_client = SoftLayer::Client.new(username: sl_username, api_key: sl_apikey)
server_order = SoftLayer::VirtualServerOrder.new(sl_client)
server_order.hostname = "test"
server_order.domain = "mycompany.com"
server_order.datacenter = SoftLayer::Datacenter.datacenter_named("par02", sl_client)
server_order.cores = 2
server_order.memory = 4
server_order.image_template = image_template_id(sl_client, "IMAGE NAME")
server_order.disks = [100, 100]
puts server_order.verify
что приводит это в этой ошибке:
/usr/share/ruby/xmlrpc/client.rb:414:in `call': Invalid value provided for 'blockDevices'. Block devices may not be provided when using an image template. (XMLRPC::FaultException)
from /fs/home/richb/.gem/ruby/1.9.1/gems/softlayer_api-3.0.0/lib/softlayer/Service.rb:281:in `call_softlayer_api_with_params'
from /fs/home/richb/.gem/ruby/1.9.1/gems/softlayer_api-3.0.0/lib/softlayer/Service.rb:210:in `method_missing'
from /fs/home/richb/.gem/ruby/1.9.1/gems/softlayer_api-3.0.0/lib/softlayer/VirtualServerOrder.rb:122:in `verify'
from ./sltest:29:in `<main>'
Я понимаю, что API не позволяет вам указывать диски, но это то, что вы можете сделать с шаблоном изображения через портал SoftLayer, так есть ли способ сделать это через API?