mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-25 01:38:08 +00:00
Merge pull request #987 from GNS3/nat_vmware
NAT node can use the VMware NAT
This commit is contained in:
commit
633cdef0bc
@ -30,14 +30,21 @@ class Nat(Cloud):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
||||||
|
if sys.platform.startswith("linux"):
|
||||||
if "virbr0" not in [interface["name"] for interface in gns3server.utils.interfaces.interfaces()]:
|
if "virbr0" not in [interface["name"] for interface in gns3server.utils.interfaces.interfaces()]:
|
||||||
raise NodeError("virbr0 is missing. You need to install libvirt")
|
raise NodeError("virbr0 is missing. You need to install libvirt")
|
||||||
|
interface = "virbr0"
|
||||||
|
else:
|
||||||
|
if "vmnet8" not in [interface["name"] for interface in gns3server.utils.interfaces.interfaces()]:
|
||||||
|
raise NodeError("vmnet8 is missing. You need to install VMware or use the NAT node on GNS3 VM")
|
||||||
|
interface = "vmnet8"
|
||||||
|
|
||||||
ports = [
|
ports = [
|
||||||
{
|
{
|
||||||
"name": "nat0",
|
"name": "nat0",
|
||||||
"type": "ethernet",
|
"type": "ethernet",
|
||||||
"interface": "virbr0",
|
"interface": interface,
|
||||||
"port_number": 0
|
"port_number": 0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -54,7 +61,7 @@ class Nat(Cloud):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_supported(self):
|
def is_supported(self):
|
||||||
return sys.platform.startswith("linux")
|
return True
|
||||||
|
|
||||||
def __json__(self):
|
def __json__(self):
|
||||||
return {
|
return {
|
||||||
|
@ -17,14 +17,12 @@
|
|||||||
|
|
||||||
import uuid
|
import uuid
|
||||||
import pytest
|
import pytest
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock, patch
|
||||||
from tests.utils import asyncio_patch
|
|
||||||
|
|
||||||
from gns3server.compute.builtin.nodes.nat import Nat
|
from gns3server.compute.builtin.nodes.nat import Nat
|
||||||
from gns3server.compute.vpcs import VPCS
|
|
||||||
|
|
||||||
|
|
||||||
def test_json(on_gns3vm, project):
|
def test_json_gns3vm(on_gns3vm, project):
|
||||||
nat = Nat("nat1", str(uuid.uuid4()), project, MagicMock())
|
nat = Nat("nat1", str(uuid.uuid4()), project, MagicMock())
|
||||||
assert nat.__json__() == {
|
assert nat.__json__() == {
|
||||||
"name": "nat1",
|
"name": "nat1",
|
||||||
@ -40,3 +38,24 @@ def test_json(on_gns3vm, project):
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def test_json_darwin(darwin_platform, project):
|
||||||
|
with patch("gns3server.utils.interfaces.interfaces", return_value=[
|
||||||
|
{"name": "eth0", "special": False, "type": "ethernet"},
|
||||||
|
{"name": "vmnet8", "special": True, "type": "ethernet"}]):
|
||||||
|
nat = Nat("nat1", str(uuid.uuid4()), project, MagicMock())
|
||||||
|
assert nat.__json__() == {
|
||||||
|
"name": "nat1",
|
||||||
|
"node_id": nat.id,
|
||||||
|
"project_id": project.id,
|
||||||
|
"status": "started",
|
||||||
|
"ports_mapping": [
|
||||||
|
{
|
||||||
|
"interface": "vmnet8",
|
||||||
|
"name": "nat0",
|
||||||
|
"port_number": 0,
|
||||||
|
"type": "ethernet"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
@ -29,12 +29,9 @@ from gns3server.version import __version__
|
|||||||
|
|
||||||
@pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported on Windows")
|
@pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported on Windows")
|
||||||
def test_get(http_compute, windows_platform):
|
def test_get(http_compute, windows_platform):
|
||||||
"""
|
|
||||||
Nat, is supported outside linux
|
|
||||||
"""
|
|
||||||
response = http_compute.get('/capabilities', example=True)
|
response = http_compute.get('/capabilities', example=True)
|
||||||
assert response.status == 200
|
assert response.status == 200
|
||||||
assert response.json == {'node_types': ['cloud', 'ethernet_hub', 'ethernet_switch', 'vpcs', 'virtualbox', 'dynamips', 'frame_relay_switch', 'atm_switch', 'qemu', 'vmware', 'docker', 'iou'], 'version': __version__, 'platform': sys.platform}
|
assert response.json == {'node_types': ['cloud', 'ethernet_hub', 'ethernet_switch', 'nat', 'vpcs', 'virtualbox', 'dynamips', 'frame_relay_switch', 'atm_switch', 'qemu', 'vmware', 'docker', 'iou'], 'version': __version__, 'platform': sys.platform}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported on Windows")
|
@pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported on Windows")
|
||||||
|
Loading…
Reference in New Issue
Block a user