1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-12-25 00:08:11 +00:00

Enable nested hardware virtualization by default for GNS3 VM running in VirtualBox. Fixes #1377

No error is sent by VBoxManage is this feature is not available, for instance with Intel processors.
This commit is contained in:
grossmj 2019-10-09 14:50:00 +08:00
parent 2d777cac13
commit 6d1adea907
3 changed files with 12 additions and 3 deletions

View File

@ -226,8 +226,7 @@ class HyperVGNS3VM(BaseGNS3VM):
raise GNS3VMError("Could not find Hyper-V VM {}".format(self.vmname)) raise GNS3VMError("Could not find Hyper-V VM {}".format(self.vmname))
if not self._is_running(): if not self._is_running():
log.info("Update GNS3 VM settings (CPU and RAM)")
log.info("Update GNS3 VM settings")
# set the number of vCPUs and amount of RAM # set the number of vCPUs and amount of RAM
self._set_vcpus_ram(self.vcpus, self.ram) self._set_vcpus_ram(self.vcpus, self.ram)

View File

@ -214,8 +214,10 @@ class VirtualBoxGNS3VM(BaseGNS3VM):
log.info('"{}" state is {}'.format(self._vmname, vm_state)) log.info('"{}" state is {}'.format(self._vmname, vm_state))
if vm_state == "poweroff": if vm_state == "poweroff":
log.info("Update GNS3 VM settings (CPU, RAM and Hardware Virtualization)")
await self.set_vcpus(self.vcpus) await self.set_vcpus(self.vcpus)
await self.set_ram(self.ram) await self.set_ram(self.ram)
await self.enable_nested_hw_virt()
if vm_state in ("poweroff", "saved"): if vm_state in ("poweroff", "saved"):
# start the VM if it is not running # start the VM if it is not running
@ -339,6 +341,14 @@ class VirtualBoxGNS3VM(BaseGNS3VM):
await self._execute("modifyvm", [self._vmname, "--memory", str(ram)], timeout=3) await self._execute("modifyvm", [self._vmname, "--memory", str(ram)], timeout=3)
log.info("GNS3 VM RAM amount set to {}".format(ram)) log.info("GNS3 VM RAM amount set to {}".format(ram))
async def enable_nested_hw_virt(self):
"""
Enable nested hardware virtualization for the GNS3 VM.
"""
await self._execute("modifyvm", [self._vmname, "--nested-hw-virt", "on"], timeout=3)
log.info("Nested hardware virtualization enabled")
async def set_hostonly_network(self, adapter_number, hostonly_network_name): async def set_hostonly_network(self, adapter_number, hostonly_network_name):
""" """
Set a VirtualBox host-only network on a network adapter for the GNS3 VM. Set a VirtualBox host-only network on a network adapter for the GNS3 VM.

View File

@ -147,7 +147,7 @@ class VMwareGNS3VM(BaseGNS3VM):
except VMwareError as e: except VMwareError as e:
raise GNS3VMError("Could not list VMware VMs: {}".format(str(e))) raise GNS3VMError("Could not list VMware VMs: {}".format(str(e)))
if not running: if not running:
log.info("Update GNS3 VM settings") log.info("Update GNS3 VM settings (CPU, RAM and Hardware Virtualization)")
# set the number of vCPUs and amount of RAM # set the number of vCPUs and amount of RAM
await self._set_vcpus_ram(self.vcpus, self.ram) await self._set_vcpus_ram(self.vcpus, self.ram)
await self._set_extra_options() await self._set_extra_options()