mirror of
https://github.com/GNS3/gns3-server
synced 2024-12-25 16:28:11 +00:00
Warn users if the GNS3 VM and local server are not in the same subnet. Fixes #1231.
This commit is contained in:
parent
1699ce5d1c
commit
cfe8e9e85c
@ -19,6 +19,7 @@ import sys
|
||||
import copy
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import ipaddress
|
||||
|
||||
from ...utils.asyncio import locked_coroutine
|
||||
from .vmware_gns3_vm import VMwareGNS3VM
|
||||
@ -296,6 +297,37 @@ class GNS3VM:
|
||||
user=self.user,
|
||||
password=self.password)
|
||||
|
||||
yield from self._check_network(compute)
|
||||
|
||||
@asyncio.coroutine
|
||||
def _check_network(self, compute):
|
||||
"""
|
||||
Check that the VM is in the same subnet as the local server
|
||||
"""
|
||||
|
||||
vm_interfaces = yield from compute.interfaces()
|
||||
vm_interface_netmask = None
|
||||
for interface in vm_interfaces:
|
||||
if interface["ip_address"] == self.ip_address:
|
||||
vm_interface_netmask = interface["netmask"]
|
||||
break
|
||||
if vm_interface_netmask:
|
||||
vm_network = ipaddress.ip_interface("{}/{}".format(compute.host_ip, vm_interface_netmask)).network
|
||||
for compute_id in self._controller.computes:
|
||||
if compute_id == "local":
|
||||
compute = self._controller.get_compute(compute_id)
|
||||
interfaces = yield from compute.interfaces()
|
||||
netmask = None
|
||||
for interface in interfaces:
|
||||
if interface["ip_address"] == compute.host_ip:
|
||||
netmask = interface["netmask"]
|
||||
break
|
||||
if netmask:
|
||||
compute_network = ipaddress.ip_interface("{}/{}".format(compute.host_ip, netmask)).network
|
||||
if vm_network.compare_networks(compute_network) != 0:
|
||||
msg = "The GNS3 VM ({}) is not on the same network as the {} server ({}), please make sure the local server binding is in the same network as the GNS3 VM".format(vm_network, compute_id, compute_network)
|
||||
self._controller.notification.emit("log.warning", {"message": msg})
|
||||
|
||||
@locked_coroutine
|
||||
def _suspend(self):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user