Nat node work on any linux thanks to libvirt

Fix #599
pull/712/head
Julien Duponchelle 8 years ago
parent 4b891070d2
commit d772b6fbd7
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8

@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
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 {

@ -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"
}

@ -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

Loading…
Cancel
Save