mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-24 17:28:08 +00:00
Better management of the GNS3 VM with VirtualBox
This commit is contained in:
parent
896d279ded
commit
4cd164fc24
@ -60,7 +60,8 @@ class GNS3VM:
|
|||||||
"engine_id": "vmware",
|
"engine_id": "vmware",
|
||||||
"description": 'VMware is the recommended choice for best performances.<br>The GNS3 VM can be <a href="{}">downloaded here</a>.'.format(download_url),
|
"description": 'VMware is the recommended choice for best performances.<br>The GNS3 VM can be <a href="{}">downloaded here</a>.'.format(download_url),
|
||||||
"support_when_exit": True,
|
"support_when_exit": True,
|
||||||
"support_headless": True
|
"support_headless": True,
|
||||||
|
"support_ram": True
|
||||||
}
|
}
|
||||||
if sys.platform.startswith("darwin"):
|
if sys.platform.startswith("darwin"):
|
||||||
vmware_informations["name"] = "VMware Fusion"
|
vmware_informations["name"] = "VMware Fusion"
|
||||||
@ -73,7 +74,8 @@ class GNS3VM:
|
|||||||
"name": "VirtualBox",
|
"name": "VirtualBox",
|
||||||
"description": 'VirtualBox doesn\'t support nested virtualization, this means running Qemu based VM could be very slow.<br>The GNS3 VM can be <a href="{}">downloaded here</a>'.format(download_url),
|
"description": 'VirtualBox doesn\'t support nested virtualization, this means running Qemu based VM could be very slow.<br>The GNS3 VM can be <a href="{}">downloaded here</a>'.format(download_url),
|
||||||
"support_when_exit": True,
|
"support_when_exit": True,
|
||||||
"support_headless": True
|
"support_headless": True,
|
||||||
|
"support_ram": True
|
||||||
}
|
}
|
||||||
|
|
||||||
remote_informations = {
|
remote_informations = {
|
||||||
@ -81,7 +83,8 @@ class GNS3VM:
|
|||||||
"name": "Remote",
|
"name": "Remote",
|
||||||
"description": "Use a remote GNS3 server as the GNS3 VM.",
|
"description": "Use a remote GNS3 server as the GNS3 VM.",
|
||||||
"support_when_exit": False,
|
"support_when_exit": False,
|
||||||
"support_headless": False
|
"support_headless": False,
|
||||||
|
"support_ram": False
|
||||||
}
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@ -185,7 +188,7 @@ class GNS3VM:
|
|||||||
else:
|
else:
|
||||||
# When user fix something on his system and try again
|
# When user fix something on his system and try again
|
||||||
if not self._current_engine().running and self.enable:
|
if not self._current_engine().running and self.enable:
|
||||||
yield from self.auto_start_vm()
|
yield from self.start()
|
||||||
|
|
||||||
def _get_engine(self, engine):
|
def _get_engine(self, engine):
|
||||||
"""
|
"""
|
||||||
|
@ -243,7 +243,7 @@ class VirtualBoxGNS3VM(BaseGNS3VM):
|
|||||||
if json_data:
|
if json_data:
|
||||||
for interface in json_data:
|
for interface in json_data:
|
||||||
if "name" in interface and interface["name"] == "eth{}".format(hostonly_interface_number - 1):
|
if "name" in interface and interface["name"] == "eth{}".format(hostonly_interface_number - 1):
|
||||||
if "ip_address" in interface:
|
if "ip_address" in interface and len(interface["ip_address"]) > 0:
|
||||||
return interface["ip_address"]
|
return interface["ip_address"]
|
||||||
remaining_try -= 1
|
remaining_try -= 1
|
||||||
yield from asyncio.sleep(1)
|
yield from asyncio.sleep(1)
|
||||||
@ -265,7 +265,27 @@ class VirtualBoxGNS3VM(BaseGNS3VM):
|
|||||||
Stops the GNS3 VM.
|
Stops the GNS3 VM.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
vm_state = yield from self._get_state()
|
||||||
|
if vm_state == "poweroff":
|
||||||
|
self.running = False
|
||||||
|
return
|
||||||
|
|
||||||
yield from self._execute("controlvm", [self._vmname, "acpipowerbutton"], timeout=3)
|
yield from self._execute("controlvm", [self._vmname, "acpipowerbutton"], timeout=3)
|
||||||
|
trial = 120
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
vm_state = yield from self._get_state()
|
||||||
|
# During a small amount of time the command will fail
|
||||||
|
except GNS3VMError:
|
||||||
|
vm_state = "running"
|
||||||
|
if vm_state == "poweroff":
|
||||||
|
break
|
||||||
|
trial -= 1
|
||||||
|
if trial == 0:
|
||||||
|
yield from self._execute("controlvm", [self._vmname, "poweroff"], timeout=3)
|
||||||
|
break
|
||||||
|
yield from asyncio.sleep(1)
|
||||||
|
|
||||||
log.info("GNS3 VM has been stopped")
|
log.info("GNS3 VM has been stopped")
|
||||||
self.running = False
|
self.running = False
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user