Python virtualbox api 无法将磁盘添加到 SATA 控制器
Python virtualbox api cannot add disk to SATA controller
我很难用 virtualbox API 将磁盘分配给 SATA 控制器,当使用 SAS 控制器时一切正常,但这里我有一个我不明白的巨大回溯。我必须对 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()
首先要设置最大端口数,然后添加SATA硬盘
IStorageController sc = machine.getStorageControllerByName("SATA");
sc.setPortCount(sc.getMaxPortCount());
我很难用 virtualbox API 将磁盘分配给 SATA 控制器,当使用 SAS 控制器时一切正常,但这里我有一个我不明白的巨大回溯。我必须对 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()
首先要设置最大端口数,然后添加SATA硬盘
IStorageController sc = machine.getStorageControllerByName("SATA");
sc.setPortCount(sc.getMaxPortCount());