Я пытаюсь управлять некоторыми виртуальными машинами через vboxapi, поставляемый с SDK.
Пока мне удалось запустить виртуальную машину и выключить ее, но я не могу восстановить снимок.
Похоже, что процедура отключения питания блокирует виртуальную машину до тех пор, пока не завершатся сценарии, на самом деле это ошибка, которую я получаю:
progress = self.session.console.restoreSnapshot(self.mach.currentSnapshot)
File "", line 3, in restoreSnapshot
xpcom.Exception: 0x80070005 (The object is not ready)
И ниже приведены конкретные функции, которые я последовательно вызываю, чтобы остановить vm и восстановить снимок.
def stop(self):
if self.mach:
# Poweroff the virtual machine.
progress = self.session.console.powerDown()
# Wait for task to complete with a 60 seconds timeout.
progress.waitForCompletion(VIRTUALBOX_TIMEOUT)
# Check if poweroff was successful.
if progress.resultCode != 0:
log("[Virtual Machine] [PowerOff] [ERROR] Unable to poweroff virtual machine \"%s\"." % self.mach.name)
return False
else:
log("[Virtual Machine] [PowerOff] Virtual machine \"%s\" powered off successfully." % self.mach.name)
else:
log("[Virtual Machine] [PowerOff] [ERROR] No virtual machine handle.")
return False
return True
def restore_snapshot(self):
if self.mach:
# Restore virtual machine snapshot.
progress = self.session.console.restoreSnapshot(self.mach.currentSnapshot)
# Wait for task to complete with a 60 seconds timeout.
progress.waitForCompletion(VIRTUALBOX_TIMEOUT)
# Check if snapshot restoring was successful.
if progress.resultCode != 0:
log("[Virtual Machine] [Restore Snapshot] [ERROR] Unable to restore virtual machine \"%s\" snapshot." % self.mach.name)
return False
else:
log("[Virtual Machine] [Restore Snapshot] Virtual machine \"%s\" successfully restored to current snashot." % self.mach.name)
else:
log("[Virtual Machine] [Restore Snapshot] [ERROR] No virtual machine handle.")
return False
return True
Я думаю, что, возможно, что-то упустил, есть хоть какой-то ключ к пониманию того, что это такое?
Спасибо,
C.