1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-28 11:18:11 +00:00

Suspend and resume for VirtualBox.

This commit is contained in:
Jeremy 2015-01-21 19:28:52 -07:00
parent 87bd0d1869
commit 3b7d08a80e
2 changed files with 41 additions and 5 deletions

View File

@ -87,3 +87,41 @@ class VirtualBoxHandler:
vm = vbox_manager.get_vm(request.match_info["uuid"]) vm = vbox_manager.get_vm(request.match_info["uuid"])
yield from vm.stop() yield from vm.stop()
response.set_status(204) response.set_status(204)
@classmethod
@Route.post(
r"/virtualbox/{uuid}/suspend",
parameters={
"uuid": "VirtualBox VM instance UUID"
},
status_codes={
204: "VirtualBox VM instance suspended",
400: "Invalid VirtualBox VM instance UUID",
404: "VirtualBox VM instance doesn't exist"
},
description="Suspend a VirtualBox VM instance")
def suspend(request, response):
vbox_manager = VirtualBox.instance()
vm = vbox_manager.get_vm(request.match_info["uuid"])
yield from vm.suspend()
response.set_status(204)
@classmethod
@Route.post(
r"/virtualbox/{uuid}/resume",
parameters={
"uuid": "VirtualBox VM instance UUID"
},
status_codes={
204: "VirtualBox VM instance resumed",
400: "Invalid VirtualBox VM instance UUID",
404: "VirtualBox VM instance doesn't exist"
},
description="Resume a suspended VirtualBox VM instance")
def suspend(request, response):
vbox_manager = VirtualBox.instance()
vm = vbox_manager.get_vm(request.match_info["uuid"])
yield from vm.resume()
response.set_status(204)

View File

@ -75,14 +75,12 @@ class Project:
:param vm_uuid: VM UUID :param vm_uuid: VM UUID
""" """
p = os.path.join(self._path, module, vm_uuid) workdir = os.path.join(self._path, module, vm_uuid)
try: try:
os.makedirs(p, exist_ok=True) os.makedirs(workdir, exist_ok=True)
except FileExistsError:
pass
except OSError as e: except OSError as e:
raise aiohttp.web.HTTPInternalServerError(text="Could not create VM working directory: {}".format(e)) raise aiohttp.web.HTTPInternalServerError(text="Could not create VM working directory: {}".format(e))
return p return workdir
def __json__(self): def __json__(self):