1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-24 17:28:08 +00:00

Wait for all interfaces available in container

Fix #511
This commit is contained in:
Julien Duponchelle 2016-05-06 19:07:18 +02:00
parent 16b5bb8810
commit 2cdfd6c0d7
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
3 changed files with 34 additions and 10 deletions

View File

@ -284,6 +284,9 @@ class DockerVM(BaseVM):
params["Cmd"] = ["/bin/sh"] params["Cmd"] = ["/bin/sh"]
params["Entrypoint"].insert(0, "/gns3/init.sh") params["Entrypoint"].insert(0, "/gns3/init.sh")
# Give the information to the container on how many interface should be inside
params["Env"].append("GNS3_MAX_ETHERNET=eth{}".format(self.adapters - 1))
if self._environment: if self._environment:
params["Env"] += [e.strip() for e in self._environment.split("\n")] params["Env"] += [e.strip() for e in self._environment.split("\n")]

View File

@ -28,9 +28,6 @@ if [ ! -d /tmp/gns3/bin ]; then
/gns3/bin/busybox --install -s /tmp/gns3/bin /gns3/bin/busybox --install -s /tmp/gns3/bin
fi fi
# Wait 2 seconds to settle the network interfaces
sleep 2
# /etc/hosts # /etc/hosts
[ -s /etc/hosts ] || cat > /etc/hosts << __EOF__ [ -s /etc/hosts ] || cat > /etc/hosts << __EOF__
127.0.1.1 $HOSTNAME 127.0.1.1 $HOSTNAME
@ -45,6 +42,13 @@ __EOF__
# configure loopback interface # configure loopback interface
ip link set dev lo up ip link set dev lo up
# Wait for all eth available
while true
do
grep $GNS3_MAX_ETHERNET /proc/net/dev > /dev/null && break
sleep 0.5
done
# activate eth interfaces # activate eth interfaces
sed -n 's/^ *\(eth[0-9]*\):.*/\1/p' < /proc/net/dev | while read dev; do sed -n 's/^ *\(eth[0-9]*\):.*/\1/p' < /proc/net/dev | while read dev; do
ip link set dev $dev up ip link set dev $dev up

View File

@ -103,7 +103,9 @@ def test_create(loop, project, manager):
"Name": "test", "Name": "test",
"Hostname": "test", "Hostname": "test",
"Image": "ubuntu", "Image": "ubuntu",
"Env": [], "Env": [
"GNS3_MAX_ETHERNET=eth0"
],
"Entrypoint": ["/gns3/init.sh"], "Entrypoint": ["/gns3/init.sh"],
"Cmd": ["/bin/sh"] "Cmd": ["/bin/sh"]
}) })
@ -142,7 +144,10 @@ def test_create_vnc(loop, project, manager):
"Name": "test", "Name": "test",
"Hostname": "test", "Hostname": "test",
"Image": "ubuntu", "Image": "ubuntu",
"Env": ['DISPLAY=:42'], "Env": [
"GNS3_MAX_ETHERNET=eth0",
"DISPLAY=:42"
],
"Entrypoint": ["/gns3/init.sh"], "Entrypoint": ["/gns3/init.sh"],
"Cmd": ["/bin/sh"] "Cmd": ["/bin/sh"]
}) })
@ -182,7 +187,9 @@ def test_create_start_cmd(loop, project, manager):
"Name": "test", "Name": "test",
"Hostname": "test", "Hostname": "test",
"Image": "ubuntu", "Image": "ubuntu",
"Env": [] "Env": [
"GNS3_MAX_ETHERNET=eth0"
]
}) })
assert vm._cid == "e90e34656806" assert vm._cid == "e90e34656806"
@ -211,7 +218,11 @@ def test_create_environment(loop, project, manager):
], ],
"Privileged": True "Privileged": True
}, },
"Env": ["YES=1", "NO=0"], "Env": [
"GNS3_MAX_ETHERNET=eth0",
"YES=1",
"NO=0"
],
"Volumes": {}, "Volumes": {},
"NetworkDisabled": True, "NetworkDisabled": True,
"Name": "test", "Name": "test",
@ -266,7 +277,9 @@ def test_create_image_not_available(loop, project, manager):
"Name": "test", "Name": "test",
"Hostname": "test", "Hostname": "test",
"Image": "ubuntu", "Image": "ubuntu",
"Env": [], "Env": [
"GNS3_MAX_ETHERNET=eth0"
],
"Entrypoint": ["/gns3/init.sh"], "Entrypoint": ["/gns3/init.sh"],
"Cmd": ["/bin/sh"] "Cmd": ["/bin/sh"]
}) })
@ -481,7 +494,9 @@ def test_update(loop, vm):
"Name": "test", "Name": "test",
"Hostname": "test", "Hostname": "test",
"Image": "ubuntu", "Image": "ubuntu",
"Env": [], "Env": [
"GNS3_MAX_ETHERNET=eth0"
],
"Entrypoint": ["/gns3/init.sh"], "Entrypoint": ["/gns3/init.sh"],
"Cmd": ["/bin/sh"] "Cmd": ["/bin/sh"]
}) })
@ -546,7 +561,9 @@ def test_update_running(loop, vm):
"Name": "test", "Name": "test",
"Hostname": "test", "Hostname": "test",
"Image": "ubuntu", "Image": "ubuntu",
"Env": [], "Env": [
"GNS3_MAX_ETHERNET=eth0"
],
"Entrypoint": ["/gns3/init.sh"], "Entrypoint": ["/gns3/init.sh"],
"Cmd": ["/bin/sh"] "Cmd": ["/bin/sh"]
}) })