Как указать один размер диска для виртуального сервера Softlayer через python

ibm-cloud-infrastructure

181 просмотра

1 ответ

Я использую Python Softlayer для создания экземпляров виртуальных серверов. Когда я указываю 2 размера диска, запрос может быть проверен. Если я запрашиваю только 1 размер диска, вызов не выполняется. Я не хочу использовать размер по умолчанию. Как я могу указать диск 100 ГБ?

Запрос образца:

vsi_request= {
    'cpus': 2,
    'memory': 6144,
    'hourly': True,
    'hostname': 'test',
    'domain': u'sample.domain.com',
    'local_disk': False,
    'datacenter': datacenter_code,
    'os_code' : u'UBUNTU_14_64',
    'dedicated': False,
    'private_vlan': 1234,
    'post_uri': 'https://bla',
    'private': True,
    'ssh_keys': [2345],
    'nic_speed': 1000,
    'tags': 'test, pleaseCancel',
    'disks': ('100')  <---- This makes it fail
}
vsi = vsmgr.verify_create_instance(**vsi_request)

Я пробовал различные материалы:

# <no disks specification> success, default to 25 GB
#('100', '10') success
#('100') Unable to find prices for block device 0 with capacity of 1.
#('25') Unable to find prices for block device 0 with capacity of 2.
## Some invalid values just to see the error message
#('500')  Unable to find prices for block device 0 with capacity of 5.
#('100', '4') Unable to find prices for block device 2 with capacity of 4.
#('100', '0') Unable to find prices for block device 2 with capacity of 0.

Соответствующая трассировка стека:

Traceback (most recent call last):
vsi = vsmgr.verify_create_instance(**vsi_request)
File "C:\Python27\lib\site-packages\SoftLayer\managers\vs.py", line 475, in verify_create_instance
return self.guest.generateOrderTemplate(create_options)
File "C:\Python27\lib\site-packages\SoftLayer\API.py", line 373, in call_handler
return self(name, *args, **kwargs)
File "C:\Python27\lib\site-packages\SoftLayer\API.py", line 341, in call
return self.client.call(self.name, name, *args, **kwargs)
File "C:\Python27\lib\site-packages\SoftLayer\API.py", line 237, in call
return self.transport(request)
File "C:\Python27\lib\site-packages\SoftLayer\transports.py", line 187, in __call__
raise _ex(ex.faultCode, ex.faultString)
SoftLayer.exceptions.SoftLayerAPIError:  SoftLayerAPIError(SoftLayer_Exception_NotFound): Unable to find prices for block device 0 with capacity of 1.
Автор: Lin Источник Размещён: 08.11.2019 10:54

Ответы (1)


1 плюс

Решение

Пожалуйста, попробуйте это:

'disks': ['100']

или же

'disks': ('100',)

Например:

vsi_request= {
    'cpus': 2,
    'memory': 6144,
    'hourly': True,
    'hostname': 'test',
    'domain': u'sample.domain.com',
    'local_disk': False,
    'datacenter': datacenter_code,
    'os_code' : u'UBUNTU_14_64',
    'dedicated': False,
    'private_vlan': 1234,
    'post_uri': 'https://bla',
    'private': True,
    'ssh_keys': [2345],
    'nic_speed': 1000,
    'tags': 'test, pleaseCancel',
    'disks': ['100']
}

Также я предлагаю использовать get_create_options, чтобы получить доступные варианты заказа VSI:

mgr.get_create_options()
Автор: Ruber Cuellar Размещён: 22.08.2016 01:51
Вопросы из категории :
32x32