2016-05-10 2 views
3

Мы видим то же вопрос с 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?

ответ

0

Вы видите ту же ошибку, потому что в обоих случаях вы используете метод createObject для создания VSI.

Если вы посмотрите на docuemntation вы увидите следующее:

blockDevices

Block device and disk image settings for the computing instance Optional Type - array of [[SoftLayer_Virtual_Guest_Block_Device (type)|SoftLayer_Virtual_Guest_Block_Device]]

Default - The smallest available capacity for the primary disk will be used. If an image template is specified the disk capacity will be be provided by the template

Примечание: «Когда изображение шаблона указывается емкость диска будет обеспечена шаблоном»

Портальные использования еще один способ создания заказов, которые позволяют больше опций, но недостатком является то, что создавать заказы не так просто. Вы можете увидеть дополнительную информацию об этом методе here, в статье будут показаны основы для заказа устройств в softlayer с использованием метода placeOrder. В основном в вашем случае, используя метод placeOrder, вам просто нужно указать цены на диск, который вы хотите, и шаблон изображения.

Надеюсь, это поможет С уважением

 Смежные вопросы

  • Нет связанных вопросов^_^