mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 14:01:15 +02:00
Prevent starting different hypervisors that leverage hardware virtualization (VT-x/AMD-V). Fixes #548.
This commit is contained in:
1 parent
eb5e019a26
commit
fcd4fda68e
5 files changed
+25
-14
No files matched your search
@@ -103,19 +103,10 @@ class ProjectManager:
|
||||
:returns: boolean
|
||||
"""
|
||||
|
||||
from .qemu import QemuVM
|
||||
from .virtualbox import VirtualBoxVM
|
||||
from .vmware import VMwareVM
|
||||
for project in self._projects.values():
|
||||
for vm in project.vms:
|
||||
if vm == source_vm:
|
||||
continue
|
||||
if vm.hw_virtualization:
|
||||
if isinstance(source_vm, QemuVM) and not isinstance(vm, QemuVM):
|
||||
# A Qemu VM won't start if any other virtualization software uses hardware virtualization
|
||||
return False
|
||||
elif isinstance(source_vm, VirtualBoxVM) and not isinstance(vm, VirtualBoxVM) and not isinstance(vm, VMwareVM):
|
||||
# A VirtualBox VM won't start if KVM is being used
|
||||
return False
|
||||
# VMware doesn't seem to be bothered by any other virtualization software.
|
||||
if vm.hw_virtualization and vm.__class__.__name__ != source_vm.__class__.__name__:
|
||||
return False
|
||||
return True
|
||||
@@ -344,6 +344,22 @@ class VMwareVM(BaseVM):
|
||||
if parse_version(self._ubridge_hypervisor.version) < parse_version('0.9.1'):
|
||||
raise VMwareError("uBridge version must be >= 0.9.1, detected version is {}".format(self._ubridge_hypervisor.version))
|
||||
|
||||
def check_hw_virtualization(self):
|
||||
"""
|
||||
Returns either hardware virtualization is activated or not.
|
||||
|
||||
:returns: boolean
|
||||
"""
|
||||
|
||||
try:
|
||||
self._vmx_pairs = self.manager.parse_vmware_file(self._vmx_path)
|
||||
except OSError as e:
|
||||
raise VMwareError('Could not read VMware VMX file "{}": {}'.format(self._vmx_path, e))
|
||||
|
||||
if self._get_vmx_setting("vhv.enable", "TRUE"):
|
||||
return True
|
||||
return False
|
||||
|
||||
@asyncio.coroutine
|
||||
def start(self):
|
||||
"""
|
||||
|
||||
Reference in new issue
Block a user