aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2022-09-15 16:53:21 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2022-09-15 16:53:21 +0200
commitcfd3e500feb59ba3c1bd1247dac3b4537c8592ba (patch)
treea3e9a1b7ebf78b60b8fdc77fff1899a7f834509f
parent68cc7d635b25ca08da957541794df6a1cda2ef95 (diff)
downloadmknet-cfd3e500feb59ba3c1bd1247dac3b4537c8592ba.tar.gz
mknet-cfd3e500feb59ba3c1bd1247dac3b4537c8592ba.zip
run-all wait all processes before returning
-rw-r--r--README.md2
-rwxr-xr-xmknet8
-rw-r--r--net.py2
3 files changed, 8 insertions, 4 deletions
diff --git a/README.md b/README.md
index 25378da..b04a961 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ and setup your python environment.
```bash
sudo -i
pip3 install --user .
-( cd scenarios && pip3 install -r requirements.txt )
+( cd scenarios && pip3 install --user -r requirements.txt )
```
Sometimes, it is required to add manually your local python lib folder to the environment:
diff --git a/mknet b/mknet
index 34608a3..5c09a18 100755
--- a/mknet
+++ b/mknet
@@ -315,6 +315,7 @@ def runall(cmd):
zones = parse(config).zones
number = 1
+ wait_list = [ ]
for zone in zones.values():
if zone.is_zone():
for server in zone.servers.values():
@@ -325,7 +326,7 @@ def runall(cmd):
env["ID"] = str(number)
env["SERVER_COUNT"] = str(len(config['servers']))
name = f'testnet-{zone.name}-{server.name}'
- net.ns.run(name, cmd, env)
+ wait_list.append(net.ns.run(name, cmd, env))
number +=1
else:
env = os.environ.copy()
@@ -335,9 +336,12 @@ def runall(cmd):
env["ID"] = str(number)
env["SERVER_COUNT"] = str(len(config['servers']))
name = f'testnet-{zone.name}-{zone.name}'
- net.ns.run(name, cmd, env)
+ wait_list.append(net.ns.run(name, cmd, env))
first = False
number +=1
+ for p in wait_list:
+ p.wait()
+ print("runall done")
def destroy():
for ns in net.ns.list():
diff --git a/net.py b/net.py
index 8e8725b..f78f7a6 100644
--- a/net.py
+++ b/net.py
@@ -37,7 +37,7 @@ class ns:
run_netns("exec", name, "ip", "link", "set", "dev", "lo", "up")
def run(name, cmd, env=None):
- subprocess.Popen(_netns + ["exec", name] + cmd, env=env)
+ return subprocess.Popen(_netns + ["exec", name] + cmd, env=env)
def create_bridge(name, namespace, ports=[]):
run_netns("exec", namespace, "ip", "link", "add", "name", name, "type", "bridge")