add untested code to allow resuming of a hibernated VM

This commit is contained in:
Markus Hauschild
2013-12-15 16:38:55 +01:00
parent 680c56eebd
commit eb356897bb
2 changed files with 16 additions and 4 deletions

View File

@@ -76,7 +76,7 @@ class VMHelper:
else:
raise Exception("Missing VMs config section!")
def startVM(self, vmid, managerpath):
def startVM(self, vmid, managerpath, hibernate_ignore=False):
self.setupNetwork(vmid)
cmd = []
@@ -88,13 +88,20 @@ class VMHelper:
cmd.append(managerpath)
cmd.append(self.config['kvm']['executable'])
cmd.append(vmid)
cmd.append("-pidfile")
cmd.append(self.config['kvm']['pidfile'].replace("$VMID", vmid))
cmd.append("-qmp")
cmd.append("unix:" + self.config['kvm']['qmpsocket'].replace("$VMID", vmid) + ",server,nowait")
hibernate_file = self.config['kvm']['hibernatefile'].replace("$VMID", vmid)
# check if ignore hibernate file flag is set
if (not hibernate_ignore):
if (os.path.isfile(hibernate_file)):
cmd.append("-incoming")
cmd.append("\"exec: cat " + hibernate_file + "\"")
if "runas" in self.config["kvm"]:
cmd.append("-runas")
cmd.append(self.config["kvm"]["runas"])

View File

@@ -39,19 +39,24 @@ def vmm_start(args):
print("VM {0} is already running!".format(args.vmid))
return
#TODO: pass ignore hibernation file flag
print('Starting VM {0.vmid}.'.format(args))
fullpath_manager = os.path.realpath(sys.argv[0])
helper.startVM(args.vmid,fullpath_manager)
if (args.i is not None and args.i >= 1):
helper.startVM(args.vmid, fullpath_manager, True)
else:
helper.startVM(args.vmid, fullpath_manager)
#print("Successfully started: " + ("yes" if helper.process_running(args.vmid) else "no"))
def vmm_shutdown(args):
print('Shutting down all VMs.')
timeout = SHUTDOWN_TIMEOUT if args.t is None or args.t < 0 else args.t
stCallback = lambda vmid, st : print("VM {0}: {1}".format(vmid, stopStatusToMessage[st]))
helper.shutdownVMs(timeout, args.s is None or args.s < 1, statusCallback=stCallback)
def vmm_hibernate(args):
print('Hibernating all VMs.')
#TODO: implement ;)
def vmm_stop(args):