diff --git a/gns3server/compute/builtin/nodes/nat.py b/gns3server/compute/builtin/nodes/nat.py index ba1b27b5..40af0cd1 100644 --- a/gns3server/compute/builtin/nodes/nat.py +++ b/gns3server/compute/builtin/nodes/nat.py @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -import socket +import sys from .cloud import Cloud from ...error import NodeError @@ -31,24 +31,21 @@ class Nat(Cloud): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if socket.gethostname() != "gns3vm": - raise NodeError("NAT node is supported only on GNS3 VM") - - if "eth1" not in [interface["name"] for interface in gns3server.utils.interfaces.interfaces()]: - raise NodeError("eth1 is missing on the GNS3 VM. You need to provide a nat interface as eth1") + if "virbr0" not in [interface["name"] for interface in gns3server.utils.interfaces.interfaces()]: + raise NodeError("virbr0 is missing. You need to install libvirt") self.ports = [ { - "name": "nat0", + "name": "virbr0", "type": "ethernet", - "interface": "eth1", + "interface": "virbr0", "port_number": 0 } ] @classmethod def is_supported(self): - return socket.gethostname() == "gns3vm" + return sys.platform.startswith("linux") def __json__(self): return { diff --git a/tests/compute/builtin/nodes/test_nat.py b/tests/compute/builtin/nodes/test_nat.py index bd1a6132..aa221f51 100644 --- a/tests/compute/builtin/nodes/test_nat.py +++ b/tests/compute/builtin/nodes/test_nat.py @@ -31,8 +31,8 @@ def test_json(on_gns3vm, project): "status": "started", "ports": [ { - "interface": "eth1", - "name": "nat0", + "interface": "virbr0", + "name": "virbr0", "port_number": 0, "type": "ethernet" } diff --git a/tests/conftest.py b/tests/conftest.py index 152c04b5..d30a2070 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -315,10 +315,10 @@ def async_run(loop): @pytest.yield_fixture -def on_gns3vm(): +def on_gns3vm(linux_platform): """ Mock the hostname to emulate the GNS3 VM """ - with patch("gns3server.utils.interfaces.interfaces", return_value=[{"name": "eth0"}, {"name": "eth1"}]): + with patch("gns3server.utils.interfaces.interfaces", return_value=[{"name": "eth0"}, {"name": "eth1", "name": "virbr0"}]): with patch("socket.gethostname", return_value="gns3vm"): yield