Я нашел решение.Проблема была в этой строке, которую я не включил в код:
snap = vm.find_snapshot(s_name)
И после восстановления снимка вам нужно разблокировать сеанс с этим:
session.unlock_machine()
И этомой окончательный код:
def read_snapshot(m_name, s_name):
start = time.time()
name = "read_snapshot"
vb = virtualbox.VirtualBox()
session = virtualbox.Session()
try:
vm = vb.find_machine(m_name)
snap = vm.find_snapshot(s_name)
vm.create_session(session=session)
except virtualbox.library.VBoxError as e:
return Report(name, "failed", e.msg, True)
except Exception as e:
return Report(name, "failed", str(e), True)
restoring = session.machine.restore_snapshot(snap)
while restoring.operation_percent < 100:
time.sleep(0.5)
session.unlock_machine()
if restoring.completed == 1:
return Report(name, "success", "restoring completed in {:>.4} sec".format(str(time.time() - start)), False)
else:
return Report(name, "failed", "restoring not completed", True)