2015-08-12 2 views
0

Мне сложно записывать диск на контроллер SATA с API виртуальных боксов при использовании контроллера SAS, все работает отлично, но здесь у меня есть огромный трассировка, которую я не понимаю , Нужно ли мне что-то делать с контроллером SATA? Спасибо за помощьPython virtualbox api не может добавить диск в контроллер SATA

приветствий,

import time 
import os 
import virtualbox 
from virtualbox.library import StorageBus, IMachine 
from virtualbox.library import IStorageController, LockType 
from virtualbox.library import DeviceType, MediumVariant 
from virtualbox.library import VBoxErrorObjectNotFound 
from virtualbox.library import IStorageController, LockType, IVirtualBox 
from virtualbox.library import IVirtualBox, AccessMode 

session = virtualbox.Session() 
sup = virtualbox.VirtualBox().find_machine("test_machine") 
sup.lock_machine(session,LockType.write) 
current_interface = IVirtualBox() 
medium = current_interface.create_hard_disk("VDI", "/home/luffy/mine.vdi") 
progress = medium.create_base_storage(1024*1024, [MediumVariant.fixed]) 
progress.wait_for_completion() 
opened_medium = current_interface.open_medium("/home/luffy/mine.vdi", DeviceType.hard_disk, AccessMode.read_write,False) 
session.machine.attach_device("SAS",2, 0, DeviceType.hard_disk,opened_medium) # This one works 
session.machine.attach_device("SATA",2 ,0 ,DeviceType.hard_disk,opened_medium) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/virtualbox/library.py", line 10264, in attach_device 
    in_p=[name, controller_port, device, type_p, medium]) 
    File "/usr/local/lib/python2.7/dist-packages/virtualbox/library_base.py", line 173, in _call 
    return self._call_method(method, in_p=in_p) 
    File "/usr/local/lib/python2.7/dist-packages/virtualbox/library_base.py", line 199, in _call_method 
    raise errobj 
virtualbox.library.OleErrorInvalidarg: 0x80070057 (The port and/or device parameter are out of range: port=2 (must be in range [0, 0]), device=0 (must be in range [0, 0])) 
#session.machine.save_settings() 
session.unlock_machine() 

ответ

0

Сначала вы должны установить максимальный порт подсчитывать, а затем добавить жесткий диск SATA

IStorageController sc = machine.getStorageControllerByName("SATA"); 
sc.setPortCount(sc.getMaxPortCount()); 
Смежные вопросы