Make better error when we have no netmask

Fix #1541
This commit is contained in:
Julien Duponchelle 2016-09-27 11:47:18 +02:00
parent 5555662b2c
commit 3ea5df7462
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
3 changed files with 29 additions and 1 deletions

View File

@ -215,6 +215,8 @@ class Cloud(BaseNode):
yield from self._ubridge_send('bridge add_nio_fusion_vmnet {name} "{interface}"'.format(name=bridge_name,
interface=port_info["interface"]))
else:
if not gns3server.utils.interfaces.has_netmask(port_info["interface"]):
raise NodeError("Interface {} don't have a netmask".format(port_info["interface"]))
yield from self._ubridge_send('bridge add_nio_ethernet {name} "{interface}"'.format(name=bridge_name,
interface=port_info["interface"]))

View File

@ -111,6 +111,22 @@ def get_windows_interfaces():
return interfaces
def has_netmask(interface_name):
"""
Checks if an interface has a netmask.
:param interface: interface name
:returns: boolean
"""
for interface in interfaces():
if interface["name"] == interface_name:
if interface["netmask"] and len(interface["netmask"]) > 0:
return True
return False
return False
def is_interface_up(interface):
"""
Checks if an interface is up.

View File

@ -17,7 +17,7 @@
import sys
from gns3server.utils.interfaces import interfaces, is_interface_up
from gns3server.utils.interfaces import interfaces, is_interface_up, has_netmask
def test_interfaces():
@ -29,6 +29,16 @@ def test_interfaces():
assert interface["special"]
def test_has_netmask():
if sys.platform.startswith("win"):
# No loopback
pass
elif sys.platform.startswith("darwin"):
assert has_netmask("lo0") is True
else:
assert has_netmask("lo") is True
def test_is_interface_up():
if sys.platform.startswith("win"):
# is_interface_up() always returns True on Windows